4 KiB
Café Bach Email Generator – Project Instructions
📖 Project Overview
A Flask-based web application that generates beautifully formatted HTML invitation emails for internal events at Café Bach (Aidshilfe). Users fill out a simple form (title, date, location, description, image URL, button link, next event details), and the app renders a clean, minimalist HTML email template matching the provided design.
🛠 Tech Stack
- Backend: Python 3.10+, Flask
- Templating: Jinja2 (for HTML email generation)
- Frontend: Vanilla HTML/CSS (minimalist, text-focused layout)
- Image Handling: URL input (optional)
- Testing: pytest, Flask-Testing
- CI/CD: GitHub Actions
IMPORTANT INSTRUCTION: THE TERMINAL IS ALREADY IN THE VIRTUAL ENVORIONMENT DO NEVER ATTEMPT TO ACTIVATE OR CREATE A VIRTUAL ENVIRONMENT, IF YOU NEED ANY OF THAT PLEASE ASK!
📁 Directory Structure
cafe-bach-email-generator/ ├── app/ │ ├── init.py # Flask app factory │ ├── forms.py # WTForms for email generation │ ├── templates/ │ │ ├── base.html # Layout wrapper │ │ ├── generate.html # Main form view │ │ └── preview.html # Rendered email preview │ └── static/ │ ├── css/ │ │ └── style.css # Minimalist styling │ └── js/ │ └── main.js # Form handling & preview logic ├── tests/ │ ├── test_app.py │ └── test_forms.py ├── .github/ │ └── workflows/ │ └── ci-cd.yml # GitHub Actions pipeline ├── .env.example # Environment variables template ├── requirements.txt # Python dependencies ├── instructions.md # This file └── README.md # Project documerntation
✅ Task List & Roadmap
Phase 1: Core Setup & Form UI
- Initialize Flask app with app factory pattern
- Create HTML form with fields: title, date/time, location, description, image URL (optional), button text, button URL, next event text, next event URL
- Implement minimalist CSS matching the provided template style
- Add client-side validation & preview toggle
Phase 2: Backend Generation Logic
- Build Jinja2 email template matching
termplate.htmlstructure - Connect form data to template placeholders
- Implement email preview generation endpoint (
/preview) - Add copy-to-clipboard functionality for generated HTML
Phase 3: Enhancements & UX
- Add image upload/URL validation
- Implement responsive preview viewer
- Add PDF export option (optional)
- Cache frequently used templates (optional)
Phase 4: Testing & Documentation
- Write unit tests for form validation & template rendering
- Add integration tests for preview endpoint
- Document API endpoints & setup steps in
README.md - Perform accessibility & contrast checks (ADHD-friendly design)
🔄 CI/CD Pipeline (GitHub Actions)
Workflow: .github/workflows/ci-cd.yml
- Trigger: Push to
mainordevelop, or pull requests - Environment: Python 3.10+ on Ubuntu latest
- Steps:
- Checkout repository
- Set up Python environment
- Install dependencies (
requirements.txt) - Run linting (flake8, black, isort)
- Execute tests (
pytest --cov=app) - Build & deploy to staging (optional)
- Notify via Slack/Discord on success/failure
Key Configuration:
name: CI/CD Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.10
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
flake8 app/ --count --select=E9,F63,F7,F82 --show-source --statistics
- name: Run tests with pytest
run: |
pip install pytest pytest-cov
pytest --cov=app --cov-report=xml