Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

FastAPI Todo App

Opis projektu

Aplikacja REST API do zarządzania zadaniami Todo napisana w FastAPI.

Projekt zawiera:

  • autoryzację JWT,
  • role USER / ADMIN,
  • CRUD Todo,
  • architekturę warstwową,
  • walidację danych,
  • obsługę błędów,
  • eventy,
  • testy jednostkowe.

Administrator może moderować todo użytkowników i usuwać nieodpowiednie wpisy.


Technologie

  • Python
  • FastAPI
  • SQLAlchemy
  • SQLite
  • JWT Authentication
  • Passlib + bcrypt
  • Pydantic
  • Pytest

Architektura projektu

Projekt został zbudowany zgodnie z architekturą warstwową:

Controller → Service → Repository → Database

Struktura projektu

app/
├── controllers/
├── services/
├── repositories/
├── models/
├── schemas/
├── core/
├── events/
├── tests/
├── database.py
├── seed.py
└── main.py

Funkcjonalności

Authentication

  • rejestracja użytkownika,
  • logowanie JWT,
  • zabezpieczenie endpointów tokenem Bearer.

Todo CRUD

  • tworzenie todo,
  • pobieranie todo,
  • edycja todo,
  • usuwanie todo.

Role USER / ADMIN

USER

  • widzi tylko swoje todo,
  • może tworzyć, edytować i usuwać swoje todo.

ADMIN

  • widzi wszystkie todo,
  • może usuwać dowolne todo użytkowników.

Eventy

Po usunięciu todo przez administratora wywoływany jest event:

[EVENT] Admin {admin_id} deleted todo {todo_id}

Instalacja projektu

Virtualenv

python -m venv venv

Aktywacja virtualenv

.\venv\Scripts\Activate

Instalacja zależności

pip install -r requirements.txt

Uruchomienie aplikacji

python -m uvicorn app.main:app --reload

Swagger

http://127.0.0.1:8000/docs

Testy

python -m pytest

Domyślny administrator

email: admin@test.com
password: admin123

Endpointy API

AUTH

POST /auth/register
POST /auth/login

TODOS

GET /todos/
POST /todos/
GET /todos/{todo_id}
PUT /todos/{todo_id}
DELETE /todos/{todo_id}

ADMIN

GET /admin/todos
DELETE /admin/todos/{todo_id}

About

FastAPI project

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages