Skip to content

yasmingcv/fast-notes

Repository files navigation

🚀 Fast Notes API

Uma API moderna e robusta para gerenciamento de notas pessoais com autenticação JWT, upload de arquivos para AWS S3 e arquitetura limpa baseada em FastAPI.

Python FastAPI PostgreSQL Docker License

✨ Funcionalidades

  • 🔐 Autenticação JWT - Sistema completo de login com tokens seguros
  • 📝 Gerenciamento de Notas - CRUD completo para notas pessoais
  • 📁 Upload de Arquivos - Integração com AWS S3 para anexos
  • 👤 Gestão de Usuários - Registro, atualização e controle de perfis
  • 🔒 Autorização - Cada usuário acessa apenas suas próprias notas
  • 📚 Documentação Automática - Swagger UI e ReDoc integrados
  • 🐳 Docker Ready - Containerização completa com docker-compose
  • 🔧 Arquitetura Limpa - Separação clara entre domínio, serviços e apresentação

🛠️ Tecnologias Utilizadas

Backend

  • FastAPI - Framework web moderno e de alta performance
  • Pydantic - Validação de dados e serialização
  • SQLAlchemy - ORM poderoso para Python
  • PostgreSQL - Banco de dados relacional robusto
  • Uvicorn - Servidor ASGI de alta performance

Autenticação & Segurança

Cloud & Storage

  • Boto3 - SDK oficial da AWS
  • AWS S3 - Storage de arquivos na nuvem

🏗️ Arquitetura

app/
├── 📁 domain/           # Entidades e schemas do domínio
│   ├── entities/        # Modelos SQLAlchemy
│   └── schemas/         # Schemas Pydantic
├── 📁 services/         # Lógica de negócio
├── 📁 repositories/     # Acesso a dados
├── 📁 routers/          # Endpoints da API
├── 📁 auth/             # Sistema de autenticação
├── 📁 utils/            # Utilitários (bcrypt, jwt)
└── 📄 database.py       # Configuração do banco

🚀 Como Executar

Pré-requisitos

  • Docker e Docker Compose
  • Conta AWS (para S3)

1. Clone o repositório

git clone https://github.com/yasmingcv/fast-notes
cd fast-notes

2. Configure as variáveis de ambiente

cp .env.example .env
# Edite o .env com suas credenciais

3. Execute com Docker

# Subir toda a aplicação
docker-compose up --build

# Em background
docker-compose up --build -d

4. Acesse a aplicação

📋 Variáveis de Ambiente

# Database
DB_USER=fastnotes
DB_PASSWORD=1234
DB_NAME=fastnotes_db
DB_HOST=database
DB_PORT=5432

# AWS Credentials
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_DEFAULT_REGION=us-east-1
BUCKET_NAME=your-bucket-name

# Application
DEBUG=True
SECRET_KEY=your_secret_key
SECRET_KEY_JWT=your_jwt_secret

📖 Endpoints Principais

👤 Usuários

  • POST /users/ - Criar usuário
  • PUT /users/me - Atualizar perfil do usuário logado

🔐 Autenticação

  • POST /auth/login - Login

📝 Notas

  • GET /notes/ - Listar minhas notas
  • POST /notes/ - Criar nota
  • GET /notes/{id} - Buscar nota por ID
  • PUT /notes/{id} - Atualizar nota
  • DELETE /notes/{id} - Deletar nota

📁 Arquivos

  • POST /files/upload - Upload de arquivo

🤝 Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para:

  1. Fazer fork do projeto
  2. Criar uma branch para sua feature (git checkout -b feature/amazing-feature)
  3. Commit suas mudanças (git commit -m 'Add some amazing feature')
  4. Push para a branch (git push origin feature/amazing-feature)
  5. Abrir um Pull Request

👨‍💻 Autora

Desenvolvido por Yasmin Gonçalves

🗝️ Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.


Se este projeto te ajudou, considere dar uma estrela!

About

API moderna e robusta para gerenciamento de notas pessoais com autenticação JWT, upload de arquivos para AWS S3 e arquitetura limpa baseada em FastAPI.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors