Skip to content

doimih/to-do

Repository files navigation

To-Do API Mini

O aplicație To-Do modernă bazată pe FastAPI cu containerizare Docker.

Caracteristici

✅ CRUD complet pentru To-Do items
✅ Filtrare după status (completate/incompletate)
✅ Priorități (low, normal, high)
✅ Bază de date SQLite cu SQLAlchemy ORM
✅ Documentație API automată (Swagger UI)
✅ CORS support
✅ Docker & Docker Compose gata de utilizare
✅ Health check endpoint

Instalare locally

Cerințe

  • Python 3.11+
  • pip

Setup

# Clonează/deschide proiectul
cd to-do

# Creează environment virtual
python -m venv venv

# Activează environment
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate

# Instalează dependențe
pip install -r requirements.txt

Rulare

# Rulează serverul
uvicorn main:app --reload

# Serverul va fi disponibil la:
# http://localhost:8000
# Swagger UI: http://localhost:8000/docs
# ReDoc: http://localhost:8000/redoc

Docker Setup

Construire imagine

docker build -t todo-api:latest .

Rulare container

docker run -p 8000:8000 todo-api:latest

Docker Compose (Recomandat)

# Pornire
docker-compose up

# Oprire
docker-compose down

# Rebuild
docker-compose up --build

API Endpoints

Todo Operations

Metoda Endpoint Descriere
GET /api/todos Obține toate to-do items
POST /api/todos Creează un nou to-do
GET /api/todos/{id} Obține un to-do specific
PUT /api/todos/{id} Actualizează un to-do
DELETE /api/todos/{id} Șterge un to-do
GET /api/todos/status/{completed} Obține to-dos după status

Health & Info

Metoda Endpoint Descriere
GET / Info API
GET /health Health check

Exemplu Request

Creează un To-Do

curl -X POST "http://localhost:8000/api/todos" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Înt compras",
    "description": "Cumpără lapte și pâine",
    "priority": "high"
  }'

Vezi toate To-Dos

curl "http://localhost:8000/api/todos"

Actualizează un To-Do

curl -X PUT "http://localhost:8000/api/todos/1" \
  -H "Content-Type: application/json" \
  -d '{
    "completed": true
  }'

Structura Proiectului

to-do/
├── main.py                 # Entry point principal
├── app/
│   ├── __init__.py
│   ├── database.py        # Configurare bază de date
│   ├── models.py          # SQLAlchemy models
│   ├── schemas.py         # Pydantic schemas
│   ├── crud.py            # CRUD operations
│   └── routes/
│       ├── __init__.py
│       └── todos.py       # Todo endpoints
├── requirements.txt       # Dependențe Python
├── dockerfile            # Docker image definition
├── docker-compose.yml    # Docker Compose setup
├── .gitignore           # Git ignore file
├── .dockerignore        # Docker ignore file
└── README.md            # Acest fișier

Configurare Environment

Creează .env dacă ai nevoie de variabile custom:

DATABASE_URL=sqlite:///./todos.db

Troubleshooting

Port 8000 ocupat

# Schimbă portul în command
uvicorn main:app --port 8001

Probleme cu baza de date

# Șterge baza de date
rm todos.db

# Rulează din nou
uvicorn main:app --reload

Deployment

Proiectul este gata pentru deployment pe:

  • AWS ECS
  • Google Cloud Run
  • Azure Container Instances
  • DigitalOcean App Platform
  • Railway
  • Render

Doar construiește imaginea Docker și deploy-ează containerul.

License

MIT License - Free to use

Support

Pentru probleme sau sugestii, contactează-mă!

About

To-DoApi

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors