TODO-app/README.md
2025-12-22 23:32:50 +01:00

3.3 KiB
Raw Blame History

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

.
├── .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

git clone <repo-url>
cd todo

2. Skapa och aktivera virtuell miljö

python3 -m venv venv
source venv/bin/activate

3. Installera beroenden

pip install -r requirements.txt
pip install -r requirements-dev.txt

4. Starta applikationen

python3 app.py

Öppna i webbläsaren:

http://127.0.0.1:5001

🧪 Tester

Unit- och integrationstester (Python):

pytest

Förutsättningar för API- och E2E-tester

API- och end-to-end-tester använder Node-baserade verktyg.
Installera npm-beroenden en gång innan dessa tester körs:

npm install

API-tester (Postman / Newman):

npm run api-test

End-to-End tester (Playwright):

npm run e2e

Köra alla tester:

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

pytest
npm run api-test
npm run e2e

🐳 Docker (valfritt)

Detta projekt kan enkelt dockeriseras för lokal utveckling eller deployment.

Exempel (snabbstart):

docker build -t todo-app .
docker run -d -p 5001:5001 todo-app