Skip to content

jwradhe/TODO-app

Repository files navigation

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

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

# 4. Starta applikationen
python3 app.py

# Öppna i webbläsaren:
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
npm run lint:py

### JavaScript / TypeScript
npm run lint:js

### Linting på allt
npm run lint

Linting på Python &

🧪 Tester

### 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

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