148 lines
3.1 KiB
Markdown
148 lines
3.1 KiB
Markdown
# 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 <repo-url>
|
||
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
|
||
``` |