Skip to content

C216-Distribuid-System-Project/to-do-list-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

To-Do List Backend (EN)

Repository dedicated to storing the backend code of the To-Do List project.


Index

  1. Overview
  2. Requirements
  3. Running Locally (Python)
  4. Running with Docker
  5. Project Architecture
  6. MySQL Database
  7. API Documentation
  8. License

Overview

The backend was developed in Python 3.11 using the FastAPI framework and the MySQL 8 database.
It provides a RESTful API for task management (to-do list), organized by projects and associated with users authenticated via JWT.


Requirements

  • Python 3.11
  • MySQL 8
  • Docker & Docker Compose
  • pip (for dependency installation)

Running Locally (Python)

  1. Create and activate a virtual environment:

    python -m venv venv
    source venv/bin/activate  # Linux / Mac
    venv\Scripts\activate     # Windows
  2. Install dependencies:

    pip install -r requirements.txt
  3. Run the backend as a Python module:

    python -m src.main
  4. Access:


Running with Docker

Using Docker Compose

docker compose -f docker/docker-compose.yaml -p todolist up --build

Access points:

Stop containers:

docker compose -f docker/docker-compose.yaml -p todolist down

Restart environment and delete volumes (reset database):

docker compose -f docker/docker-compose.yaml -p todolist down -v

Useful commands:

docker compose -p todolist logs -f
docker compose -p todolist restart api
docker exec -it api-container bash
docker exec -it todolist-mysql bash

Read more in docker_compose_documentation.md


Project Architecture

The project follows a modular architecture based on the microservices pattern, ensuring scalability and maintainability.

src/
├── main.py                 # Application entry point
├── models/                 # ORM models (SQLAlchemy)
├── schemas/                # Pydantic schemas for validation
├── routes/                 # API endpoints
├── modules/                # Database connections and helper modules
├── utils/                  # Utility functions
└── database/               # SQL scripts (schema and seed)

Full details: api_project_architecture.md


MySQL Database

The database is configured via Docker and initialized automatically with schema and sample data.

Image: mysql:8.0
User: app
Password: app_pass
Database: todolist
Local port: 3307

Complete documentation: mysql_docker_documentation.md


API and Docker

The API image is based on python:3.11-slim, configured to copy the project, install dependencies, and run the application.

Read more: api_docker_documentation.md


API Documentation

The API provides RESTful endpoints for managing users, projects, and tasks.

Detailed endpoints: backend_proposal_todo_list.md


License

This project is under the MIT License.


All additional documents can be found in the docs/en/ folder:


To-Do List Backend (PT-BR)

Repositório dedicado ao armazenamento do código backend do projeto To-Do List.


Index

  1. Visão Geral
  2. Requisitos
  3. Como Executar Localmente (Python)
  4. Executando com Docker
  5. Arquitetura do Projeto
  6. Banco de Dados MySQL
  7. Documentação da API
  8. Licença

Visão Geral

O backend foi desenvolvido em Python 3.11 utilizando o framework FastAPI e o banco de dados MySQL 8.
O sistema fornece uma API RESTful para o gerenciamento de tarefas (to-do list), organizadas por projetos e associadas a usuários autenticados via JWT.


Requisitos

  • Python 3.11
  • MySQL 8
  • Docker & Docker Compose
  • pip (para instalação de dependências)

Como Executar Localmente (Python)

  1. Crie e ative um ambiente virtual:

    python -m venv venv
    source venv/bin/activate  # Linux / Mac
    venv\Scripts\activate     # Windows
  2. Instale as dependências:

    pip install -r requirements.txt
  3. Execute o backend como módulo Python:

    python -m src.main
  4. Acesse:


Executando com Docker

Usando Docker Compose

docker compose -f docker/docker-compose.yaml -p todolist up --build

Acessos:

Parar containers:

docker compose -f docker/docker-compose.yaml -p todolist down

Reiniciar ambiente e apagar volumes (resetar banco):

docker compose -f docker/docker-compose.yaml -p todolist down -v

Comandos úteis:

docker compose -p todolist logs -f
docker compose -p todolist restart api
docker exec -it api-container bash
docker exec -it todolist-mysql bash

Leia mais em docker_compose_documentation.md


Arquitetura do Projeto

O projeto segue uma arquitetura modular, baseada no padrão de microsserviços, garantindo escalabilidade e manutenibilidade.

src/
├── main.py                 # Ponto de entrada da aplicação
├── models/                 # Modelos ORM (SQLAlchemy)
├── schemas/                # Schemas Pydantic para validação
├── routes/                 # Endpoints da API
├── modules/                # Conexão com banco e módulos auxiliares
├── utils/                  # Funções utilitárias
└── database/               # Scripts SQL (schema e seed)

Detalhes completos: api_project_architecture.md


Banco de Dados MySQL

O banco de dados é configurado via Docker e inicializado com schema e dados de exemplo automaticamente.

Imagem: mysql:8.0
Usuário: app
Senha: app_pass
Banco: todolist
Porta local: 3307

Documentação completa: mysql_docker_documentation.md


API e Docker

A imagem da API é baseada em python:3.11-slim, configurada para copiar o projeto, instalar dependências e executar:

Leia mais: api_docker_documentation.md


Documentação da API

A API fornece endpoints RESTful para gerenciamento de usuários, projetos e tarefas.

Endpoints detalhados: backend_proposal_todo_list.md


Licença

Este projeto está sob a Licença MIT.


Todos os documentos adicionais encontram-se na pasta docs/pt-br/.