API REST para uma rede social minimalista voltada para desenvolvedores, construída com FastAPI e SQLAlchemy. Permite criação de usuários, autenticação com JWT e publicação de posts com imagens.
- Python 3.11+
- FastAPI — framework web assíncrono
- SQLAlchemy — ORM para banco de dados
- JWT (JSON Web Tokens) — autenticação stateless com access token e refresh token
- Bcrypt — hash seguro de senhas
- Uvicorn — servidor ASGI
- ✅ Cadastro de usuário com validação de username (letras minúsculas, números,
_,-,.) - ✅ Login com e-mail e senha, retornando access token e refresh token
- ✅ Autenticação via Bearer Token
- ✅ Visualização de perfil público
- ✅ Edição de perfil autenticado
- ✅ Criação de posts com título, descrição e imagem (upload binário)
- ✅ Edição de post (somente pelo autor)
- ✅ Listagem pública de posts
- ✅ Endpoint de imagem por post
- ✅ Frontend simples em HTML/CSS/JS para demonstração
├── main.py
├── models/
│ ├── models.py
│ ├── models_user.py
│ └── models_post.py
├── schemas/
│ ├── usuario.py
│ └── posts.py
├── routers/
│ ├── router_user.py
│ └── router_posts.py
├── services/
│ ├── crypt_services.py
│ ├── criar_token.py
│ └── verificar_nome.py
├── dependecies/
│ └── dependecies.py
└── frontend/
└── index.html
git clone (link a ser modificado) att em breve
cd NOME DO REPpython -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windowspip install -r requirements.txtuvicorn main:app --reloadA API estará disponível em http://127.0.0.1:8000.
A documentação interativa (Swagger) estará em http://127.0.0.1:8000/docs.
A API utiliza JWT Bearer Token. Após o login, inclua o token no header das requisições protegidas:
Authorization: Bearer <seu_token>
O login retorna dois tokens:
| Token | Validade |
|---|---|
access_token |
Curta duração |
refresh_token |
7 dias |
Use o endpoint /user/refresh com o refresh token para obter um novo access token sem precisar fazer login novamente.
| Método | Rota | Descrição | Auth |
|---|---|---|---|
POST |
/user/criar-usuario |
Cadastro de novo usuário | ❌ |
POST |
/user/login |
Login, retorna tokens | ❌ |
GET |
/user/ver-perfil/{username} |
Perfil público | ❌ |
GET |
/user/refresh |
Renova access token | ✅ |
PATCH |
/user/editar-perfil |
Edita perfil | ✅ |
| Método | Rota | Descrição | Auth |
|---|---|---|---|
GET |
/principal/publicacoes |
Lista todos os posts | ❌ |
GET |
/principal/imagem/{id} |
Retorna imagem de um post | ❌ |
POST |
/posts/criar-post |
Cria novo post | ✅ |
PATCH |
/posts/editar-post/{id} |
Edita post (só o autor) | ✅ |
Inclui um frontend estático em HTML/CSS/JS para demonstração visual da API.
- Feed público de posts visível sem login
- Login e cadastro via modal
- Criação de posts com upload de imagem
- Edição de posts do próprio usuário
A API roda localmente por enquanto. Deploy em breve.
Desenvolvido por Renan Alves