TODO-app/README.md
2025-12-23 00:08:49 +01:00

163 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 använder ESLint (JavaScript/TypeScript) och Ruff (Python) för kodkvalitet.
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
- Lintning för projektets källkod och dokumentation
- 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/ # API/integrationstester (pytest)
│ │ └── test_app.py
│ ├── e2e/ # End-to-end tester (Playwright)
│ │ └── todo.spec.ts
│ ├── postman/ # Postman/Newman collections
│ │ ├── todo.collection.json
│ │ └── todo.env.json
│ └── unit/ # Unit-tester
│ └── test_validation.py
├── .dockerignore
├── .gitignore
├── Dockerfile
├── eslint.config.mjs
├── LICENSE
├── package-lock.json
├── package.json
├── playwright.config.ts
├── 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
npm install
```
### 4. Starta applikationen
```bash
python3 app.py
```
### Öppna i webbläsaren:
```bash
http://127.0.0.1:5001
```
---
## 🔎 Kodkvalitet (Lint)
Projektet använder linting för att säkerställa konsekvent kodstil och upptäcka vanliga fel.
```bash
### Python
npm run lint:py
### JavaScript / TypeScript
npm run lint:js
### Linting på allt
npm run lint
```
### Linting på Python &
## 🧪 Tester
```bash
### Unit- och integrationstester (Python):
pytest
### 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
- Lintning för att säkerställa konsekvent kodstil och upptäcka vanliga problem i projektets källkod och dokumentation
- 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
```