Files
qr-code_manager/README.md
2025-07-15 13:55:52 +03:00

8.1 KiB

QR C### QR Code Types Suppo### Management Features

  • Preview - Real-time preview of generated QR codes
  • Download - Export QR codes as PNG images
  • History - View and manage previously generated QR codes
  • Delete - Remove unwanted QR codes
  • Copy - Copy QR codes to clipboard
  • Dynamic Link Management - NEW! Create and edit link collections Text - Plain text QR codes
  • URL/Website - Direct links to websites
  • Dynamic Link Page - NEW! Create a web page with manageable links
  • WiFi - WiFi network connection details
  • Email - Pre-filled email composition
  • Phone - Direct phone number dialing
  • SMS - Pre-filled SMS messages
  • vCard - Digital contact cardsger

A comprehensive Python web application for creating, customizing, and managing QR codes. This application provides functionality similar to popular QR code generation websites with additional features for local management.

Features

QR Code Types Supported

  • Text: Plain text QR codes
  • URL/Website: Direct links to websites
  • WiFi: WiFi network connection details
  • Email: Pre-filled email composition
  • Phone: Direct phone number dialing
  • SMS: Pre-filled SMS messages
  • vCard: Digital contact cards

Customization Options

  • Colors: Customizable foreground and background colors
  • Styles: Square, rounded, or circular module styles
  • Size: Adjustable module size (5-15px per module)
  • Logo: Option to add custom logos to QR codes

Management Features

  • Preview: Real-time preview of generated QR codes
  • Download: Export QR codes as PNG images
  • History: View and manage previously generated QR codes
  • Delete: Remove unwanted QR codes
  • Copy: Copy QR codes to clipboard

Installation

  1. Clone or navigate to the project directory:

    cd /home/pi/Desktop/qr-code_manager
    
  2. Install dependencies:

    pip install -r requirements.txt
    

    Or if using the virtual environment that was created:

    /home/pi/Desktop/qr-code_manager/.venv/bin/pip install -r requirements.txt
    

Usage

  1. Start the server:

    python app.py
    

    Or with the virtual environment:

    /home/pi/Desktop/qr-code_manager/.venv/bin/python app.py
    
  2. Access the application: Open your web browser and navigate to http://localhost:5000

  3. Create QR codes:

    • Select the type of QR code you want to create
    • Fill in the required information
    • Customize the appearance (colors, style, size)
    • Click "Generate QR Code"
    • Download or copy your QR code
  4. Use Dynamic Link Pages NEW!:

    • Select "Dynamic Link Page" as the QR code type
    • Enter a title and description for your link collection
    • Generate the QR code
    • Use the "Manage" button or edit URL to add/edit links
    • Share the QR code - visitors will see your current link collection
    • Update links anytime without changing the QR code!

API Endpoints

The application provides a RESTful API for programmatic access:

Generate QR Code

  • POST /api/generate
  • Body: JSON with QR code parameters
  • Response: Generated QR code data and download URL

Download QR Code

  • GET /api/download/<qr_id>
  • Response: PNG image file

List QR Codes

  • GET /api/qr_codes
  • Response: JSON array of all generated QR codes

Get QR Code Details

  • GET /api/qr_codes/<qr_id>
  • Response: JSON with QR code details

Delete QR Code

  • DELETE /api/qr_codes/<qr_id>
  • Response: Success/error status
  • POST /api/upload_logo
  • Body: Multipart form with logo file
  • Response: Logo path for use in QR generation
  • POST /api/create_link_page
  • Body: JSON with page title, description, and QR styling
  • Response: QR code data, page URLs, and management links
  • POST /api/link_pages/<page_id>/links
  • Body: JSON with link title, URL, and description
  • Response: Success/error status
  • PUT /api/link_pages/<page_id>/links/<link_id>
  • Body: JSON with updated link data
  • Response: Success/error status
  • DELETE /api/link_pages/<page_id>/links/<link_id>
  • Response: Success/error status
  • GET /api/link_pages/<page_id>
  • Response: JSON with page and links data
  • GET /links/<page_id>
  • Response: HTML page displaying links
  • GET /edit/<page_id>
  • Response: HTML interface for managing links

Example API Usage

Generate a URL QR Code

curl -X POST http://localhost:5000/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "type": "url",
    "content": "https://github.com",
    "foreground_color": "#000000",
    "background_color": "#FFFFFF",
    "style": "square",
    "size": 10
  }'

Generate a WiFi QR Code

curl -X POST http://localhost:5000/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "type": "wifi",
    "wifi": {
      "ssid": "MyNetwork",
      "password": "MyPassword",
      "security": "WPA"
    },
    "foreground_color": "#0066cc",
    "background_color": "#ffffff"
  }'
curl -X POST http://localhost:5000/api/create_link_page \
  -H "Content-Type: application/json" \
  -d '{
    "title": "My Resources",
    "description": "Collection of useful links",
    "foreground_color": "#1565c0",
    "background_color": "#ffffff",
    "style": "rounded"
  }'
curl -X POST http://localhost:5000/api/link_pages/PAGE_ID/links \
  -H "Content-Type: application/json" \
  -d '{
    "title": "GitHub",
    "url": "https://github.com",
    "description": "Code repository platform"
  }'

File Structure

qr-code_manager/
├── app.py                 # Main Flask application
├── requirements.txt       # Python dependencies
├── README.md             # This file
├── templates/
│   └── index.html        # Web interface
├── static/
│   ├── qr_codes/         # Generated QR code images
│   └── logos/            # Uploaded logo files
└── .venv/                # Virtual environment (if created)

Dependencies

  • Flask: Web framework
  • qrcode[pil]: QR code generation with PIL support
  • Pillow: Image processing
  • flask-cors: Cross-Origin Resource Sharing support
  • python-dotenv: Environment variable management

Security Considerations

  • The application runs in debug mode by default - disable for production
  • File uploads are stored locally - implement proper validation and storage limits
  • QR codes are stored in memory - consider using a database for persistence
  • The server accepts connections from all interfaces (0.0.0.0) - restrict for production

Customization

Adding New QR Code Types

  1. Add the new type to the HTML select options
  2. Create corresponding form fields in the HTML
  3. Add processing logic in the /api/generate endpoint
  4. Update the JavaScript to handle the new type

Styling

The application uses embedded CSS for easy customization. Modify the <style> section in templates/index.html to change the appearance.

Storage

Currently uses in-memory storage. To persist data:

  1. Install a database library (SQLite, PostgreSQL, etc.)
  2. Replace the qr_codes_db dictionary with database operations
  3. Add database initialization code

Troubleshooting

Common Issues

  1. Port already in use: Change the port in app.py or stop the conflicting service
  2. Permission errors: Ensure the application has write permissions to the static directories
  3. Missing dependencies: Reinstall requirements with pip install -r requirements.txt

Debug Mode

The application runs in debug mode, which provides detailed error messages and auto-reload functionality. Disable for production by setting debug=False in the app.run() call.

License

This project is open source. Feel free to modify and distribute according to your needs.