# AutoKanban A minimal FastAPI webapp for a physical kanban workflow with a 58mm Arduino thermal printer. > **Tested on macOS, designed for deployment on Raspberry Pi 4 (Raspbian/Debian-based).** --- ## Features - 📝 Users submit tasks as cards via the web UI - ✅ Admins approve tasks and print them to a 58mm thermal printer (ESC/POS, Arduino-based) - 📌 Printed cards are pinned to an analogue kanban board --- ## Kanban Workflow ```mermaid flowchart TD A[User submits task via web UI] --> B[Task appears as pending] B -->|Admin approves| C[Task marked as approved] C -->|Admin prints| D[Card printed on 58mm thermal printer] D --> E[Card is pinned to physical kanban board] ``` --- ## Quickstart ### 1. Install system dependencies (Raspberry Pi) ```sh sudo apt update sudo apt install python3 python3-venv python3-pip python3-serial ``` ### 2. Set up Python environment and install packages ```sh python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ### 3. Run the app ```sh uvicorn app.main:app --reload ``` ### 4. Open [http://localhost:8000](http://localhost:8000) in your browser --- ## Printer Integration - The app uses `python-escpos` to print to a serial-connected 58mm Arduino thermal printer. - **On macOS for testing:** Use a USB-serial adapter and check your device path (e.g., `/dev/tty.usbserial-*`). - **On Raspberry Pi:** Default device is `/dev/ttyUSB0` (update in `app/printer.py` if needed). - The printer must support ESC/POS commands and be accessible via serial. - For Arduino-based printers, ensure the correct baudrate (default: 19200) and permissions (`sudo usermod -a -G dialout $USER`). --- ## Project Structure - `app/main.py` — FastAPI app, task logic, printer integration - `app/printer.py` — Printer abstraction for cross-platform serial printing - `app/models.py` — Task model - `app/templates/index.html` — Web UI - `app/static/` — Static files (optional) --- ## License See `LICENSE` (CC BY-NC 4.0)