TODO-app/README.md
2025-12-23 00:03:19 +01:00

172 lines
3.7 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
- 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.
### Python
```bash
npm run lint:py
```
### JavaScript / TypeScript
```bash
npm run lint:js
```
### Linting på allt
```bash
npm run lint
```
### Linting på Python &
## 🧪 Tester
### Unit- och integrationstester (Python):
```bash
pytest
```
### API-tester (Postman / Newman):
```bash
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
```