# Copilot Instructions for AI Coding Agents ## Project Overview AutoKanban is a FastAPI-based web application for managing a physical kanban workflow, integrating with a 58mm Arduino thermal printer. The system allows users to submit tasks, admins to approve and print them, and cards to be pinned to a physical board. ## Major Components - `app/main.py`: Main FastAPI app, task model, admin session, printer/image generation, static mounts. - `app/models.py`: Pydantic Task model. - `app/printer.py`: (Optional) Printer abstraction for cross-platform serial printing. - `app/templates/`: Jinja2 HTML templates for UI. - `app/static/`: Static files (fonts, CSS, images, Font Awesome OTFs). - `data/tasks.json`: Persistent task storage (JSON). - `.env`: Secrets (admin password, etc). Not committed. - `.gitignore`: Ignores `.env`, `out/`, and other sensitive/generated files. - `out/`: Stores generated card preview images (debug mode). ## Key Features & Workflows - Users submit tasks via web UI. - Admins approve tasks and print them to a 58mm ESC/POS thermal printer. - Card preview images are generated using Pillow (debug mode), with custom and Font Awesome fonts. - Semantic icon rendering: Task keywords map to Font Awesome icons. - Admin authentication via password (from `.env`). - Persistent storage in `data/tasks.json`. - German localization in UI and card output. ## Build, Test, and Debug - Install dependencies: `pip install -r requirements.txt` - Run app: `uvicorn app.main:app --reload` - For card preview (debug): Set `DEBUG_PRINT_TO_IMAGE = True` in `app/main.py`. - Fonts: Place custom and Font Awesome OTFs in `app/static/fonts/`. - Set admin password in `.env` as `ADMIN_PASSWORD=yourpassword`. ## Project Conventions - Use environment variables for secrets (never hardcode passwords). - Use Pillow's robust font loading with error handling for card previews. - All static assets (fonts, images) go in `app/static/`. - All persistent data in `data/`. - All generated output in `out/` (gitignored). ## Integration Points - Thermal printer: ESC/POS via `python-escpos` (serial connection, `/dev/ttyUSB0` by default). - Font Awesome: Use OTF from `app/static/fonts/fontawesome-free-7.1.0-desktop/otfs/`. ## How to Contribute - Update this file as new features, files, or conventions are added. - Reference key files and directories. - Keep instructions concise and actionable for future AI agents and developers. --- _Last updated: 2025-10-20_