# TODO – Flask + SQLite Ett enkelt TODO-system byggt med **Python**, **Flask** och **SQLite**. Projektet använder **Flask app factory-pattern**, **pytest** för unit- och integrationstester samt **Postman/Newman** och **Playwright** för API- och E2E-tester. Projektet är förberett för **CI (GitHub Actions)**. --- ## ✨ Funktioner - Skapa TODO-poster (title, description, status) - Uppdatera status (`not-started`, `in-progress`, `done`) - Ta bort TODO-poster - SQLite som databas - Tester på flera nivåer (unit, API, E2E) - CI-redo (GitHub Actions) --- ## 🗂 Projektstruktur ```text . ├── .github/ │ └── workflows/ │ └── tests.yml ├── app/ │ ├── __init__.py # Flask app (app factory) │ ├── db.py # Databasfunktioner (SQLite) │ ├── validation.py # Validering │ ├── static/ │ │ └── style.css │ ├── templates/ │ ├── base.html │ └── index.html ├── tests/ │ ├── api/ │ │ └── test_app.py │ ├── e2e/ │ │ └── todo.spec.ts │ ├── postman/ │ │ ├── todo.collection.json │ │ └── todo.env.json │ └── unit/ │ └── test_validation.py ├── .dockerignore ├── .gitignore ├── Dockerfile ├── LICENSE ├── package-lock.json ├── package.json ├── pytest.ini └── README.md ├── requirements-dev.txt # Dev/test dependencies ├── requirements.txt # Runtime dependencies ├── todo.db # SQLite-databas (lokalt) └── wsgi.py ``` ## 🚀 Kom igång lokalt ### 1. Klona repot ```bash git clone cd todo ``` ### 2. Skapa och aktivera virtuell miljö ```bash python3 -m venv venv source venv/bin/activate ``` ### 3. Installera beroenden ```bash pip install -r requirements.txt pip install -r requirements-dev.txt ``` ### 4. Starta applikationen ```bash python3 app.py ``` ### Öppna i webbläsaren: ``` http://127.0.0.1:5001 ``` --- ## 🧪 Tester Unit- och integrationstester: ```bash pytest ``` API-tester (Postman / Newman): ```bash npm install npm run api-test ``` End-to-End tester (Playwright): ```bash npm run e2e ``` Köra alla tester: ```bash npm run test:all ``` ## 🤖 CI – GitHub Actions Projektet använder **GitHub Actions** för kontinuerlig integration. Vid varje **push** och **pull request** körs hela testsviten automatiskt. ### Teststeg i CI CI-flödet utför följande steg: - Installerar Python-beroenden - Installerar Node-beroenden (Newman, Playwright) - Startar Flask-applikationen - Kör tester på flera nivåer: - **Unit- och integrationstester** med `pytest` - **API-tester** med Postman/Newman - **End-to-end-tester** med Playwright ### Exempel på testkommandon som körs i CI ```bash pytest npm run api-test npm run e2e ``` ## 🐳 Docker (valfritt) Detta projekt kan enkelt dockeriseras för lokal utveckling eller deployment. Exempel (snabbstart): ```bash docker build -t todo-app . docker run -d -p 5001:5001 todo-app ```