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.
- 🔐 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
- 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
- PyJWT - JSON Web Tokens para autenticação
- bcrypt - Hash seguro de senhas
- python-multipart - Suporte a formulários multipart
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
- Docker e Docker Compose
- Conta AWS (para S3)
git clone https://github.com/yasmingcv/fast-notes
cd fast-notescp .env.example .env
# Edite o .env com suas credenciais# Subir toda a aplicação
docker-compose up --build
# Em background
docker-compose up --build -d- API: http://localhost:8000
- Documentação: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
# 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_secretPOST /users/- Criar usuárioPUT /users/me- Atualizar perfil do usuário logado
POST /auth/login- Login
GET /notes/- Listar minhas notasPOST /notes/- Criar notaGET /notes/{id}- Buscar nota por IDPUT /notes/{id}- Atualizar notaDELETE /notes/{id}- Deletar nota
POST /files/upload- Upload de arquivo
Contribuições são bem-vindas! Sinta-se à vontade para:
- Fazer fork do projeto
- Criar uma branch para sua feature (
git checkout -b feature/amazing-feature) - Commit suas mudanças (
git commit -m 'Add some amazing feature') - Push para a branch (
git push origin feature/amazing-feature) - Abrir um Pull Request
Desenvolvido por Yasmin Gonçalves
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
⭐ Se este projeto te ajudou, considere dar uma estrela! ⭐