268 lines
8.1 KiB
Markdown
268 lines
8.1 KiB
Markdown
# 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**:
|
|
```bash
|
|
cd /home/pi/Desktop/qr-code_manager
|
|
```
|
|
|
|
2. **Install dependencies**:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
Or if using the virtual environment that was created:
|
|
```bash
|
|
/home/pi/Desktop/qr-code_manager/.venv/bin/pip install -r requirements.txt
|
|
```
|
|
|
|
## Usage
|
|
|
|
1. **Start the server**:
|
|
```bash
|
|
python app.py
|
|
```
|
|
|
|
Or with the virtual environment:
|
|
```bash
|
|
/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
|
|
|
|
### Upload Logo
|
|
- **POST** `/api/upload_logo`
|
|
- **Body**: Multipart form with logo file
|
|
- **Response**: Logo path for use in QR generation
|
|
|
|
### Dynamic Link Pages ⭐ **NEW!**
|
|
|
|
#### Create Link Page
|
|
- **POST** `/api/create_link_page`
|
|
- **Body**: JSON with page title, description, and QR styling
|
|
- **Response**: QR code data, page URLs, and management links
|
|
|
|
#### Add Link to Page
|
|
- **POST** `/api/link_pages/<page_id>/links`
|
|
- **Body**: JSON with link title, URL, and description
|
|
- **Response**: Success/error status
|
|
|
|
#### Update Link
|
|
- **PUT** `/api/link_pages/<page_id>/links/<link_id>`
|
|
- **Body**: JSON with updated link data
|
|
- **Response**: Success/error status
|
|
|
|
#### Delete Link
|
|
- **DELETE** `/api/link_pages/<page_id>/links/<link_id>`
|
|
- **Response**: Success/error status
|
|
|
|
#### Get Link Page Data
|
|
- **GET** `/api/link_pages/<page_id>`
|
|
- **Response**: JSON with page and links data
|
|
|
|
#### View Public Link Page
|
|
- **GET** `/links/<page_id>`
|
|
- **Response**: HTML page displaying links
|
|
|
|
#### Edit Link Page
|
|
- **GET** `/edit/<page_id>`
|
|
- **Response**: HTML interface for managing links
|
|
|
|
## Example API Usage
|
|
|
|
### Generate a URL QR Code
|
|
```bash
|
|
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
|
|
```bash
|
|
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"
|
|
}'
|
|
```
|
|
|
|
### Create a Dynamic Link Page ⭐ **NEW!**
|
|
```bash
|
|
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"
|
|
}'
|
|
```
|
|
|
|
### Add Links to the Page
|
|
```bash
|
|
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.
|