2.7 KiB
2.7 KiB
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:
pytest
API-tester (Postman / Newman):
npm install
npm run api-test
End-to-End tester (Playwright):
npm run e2e
Köra alla tester:
npm run test:all
🤖 CI – GitHub Actions
Projektet kör automatiskt tester vid varje push och pull request via GitHub Actions.
Exempel på teststeg i CI:
pytest --cov=app --cov-report=term-missing --cov-fail-under=80
🐳 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