API backend para uma rede social inspirada no Twitter, desenvolvida com NestJS, Prisma e PostgreSQL.
Os usuÔrios podem criar contas, seguir outros usuÔrios, fazer posts com imagens, curtir, comentar e visualizar um feed dinâmico.
Acesse o link acima para a documentação interativa (OpenAPI) completa da API.
- Autenticação com JWT (login e registro)
- Autenticação segura com tokens JWT
- Verificação de email via token
- Proteção de rotas com Guards e estratégias Passport
- UsuƔrios
- CRUD de usuƔrios
- Upload de avatar com Cloudinary
- Seguir e deixar de seguir outros usuƔrios
- Perfil personalizado com bio e informaƧƵes
- Contagem de seguidores e seguindo
- Posts
- Criar posts com imagem opcional
- Atualizar e remover posts (somente o autor)
- Curtir e descurtir posts
- Comentar posts, editar e excluir comentƔrios
- Upload de imagens com Cloudinary
- Feed
- Visualizar todos os posts
- Filtrar apenas por posts de usuƔrios seguidos
- Paginação e ordenação de resultados
- Email
- Envio de emails de verificação via Resend
- Templates HTML personalizados
- Confirmação de conta por email
git clone [https://github.com/santyasm/twii-social-backend.git](https://github.com/santyasm/twii-social-backend.git)
cd twii-social-backend# Usando pnpm
pnpm install
# Usando npm
npm install
# Usando yarn
yarn installCrie um arquivo .env na raiz do projeto com as variƔveis:
DATABASE_URL="postgresql://user:password@host:port/dbname?schema=public"
JWT_SECRET="sua_chave_secreta"
CLOUDINARY_CLOUD_NAME="seu_cloud_name"
CLOUDINARY_API_KEY="sua_api_key"
CLOUDINARY_API_SECRET="sua_api_secret"
RESEND_API_KEY="sua_resend_api_key"
FRONTEND_URL="url_do_frontend"
SMTP_FROM="Twii <no-reply@seudominio.com>"# pnpm
pnpm prisma migrate dev
# npm
npx prisma migrate dev
# yarn
yarn prisma migrate dev# pnpm
pnpm run start:dev
# npm
npm run start:dev
# yarn
yarn start:devPara rodar em produção, primeiro é necessÔrio compilar o projeto (build) e depois iniciÔ-lo (start:prod):
# Passo 1: Compilar o projeto
pnpm run build
# ou
npm run build
# ou
yarn build
# Passo 2: Iniciar o servidor
pnpm run start:prod
# ou
npm run start:prod
# ou
yarn start:proddocker build -t twii-social-backend .docker run -p 3000:3000 --env-file .env twii-social-backend-
POST /auth/registerā Registro -
POST /auth/loginā Login -
GET /auth/verify-emailā Verificação de email -
POST /auth/resend-verificationā Reenviar email de verificação
-
GET /usersā Listar todos -
GET /users/:idā Buscar por ID -
PATCH /users/:idā Atualizar usuĆ”rio -
DELETE /users/:idā Remover usuĆ”rio -
POST /users/:id/followā Seguir usuĆ”rio -
POST /users/:id/unfollowā Deixar de seguir
-
POST /postsā Criar post -
GET /postsā Listar posts -
GET /posts/:idā Buscar post -
PATCH /posts/:idā Atualizar post -
DELETE /posts/:idā Remover post -
POST /posts/:id/likeā Curtir post -
POST /posts/:id/unlikeā Descurtir post -
POST /posts/:id/commentsā Comentar -
PATCH /posts/comments/:idā Editar comentĆ”rio -
DELETE /posts/comments/:idā Excluir comentĆ”rio
GET /posts/feedā Feed do usuĆ”rio?onlyFollowing=trueā apenas posts de quem o usuĆ”rio segue?onlyFollowing=falseā posts sugeridos (todos)?page=1&limit=10ā paginação de resultados?orderBy=createdAt&order=descā ordenação dos resultados
- Sistema de notificaƧƵes (likes, comentƔrios, novos seguidores)
- Suporte a vĆdeos nos posts
- Recuperação de senha via email
- Sistema de hashtags e busca por tópicos
- Mensagens diretas entre usuƔrios (chat)
- Implementar refresh token para autenticação mais segura
- Melhorar sistema de recomendaƧƵes (posts sugeridos)
- Criar testes unitÔrios e de integração (Jest)
-
FaƧa um fork do projeto
-
Crie uma branch para sua feature (
git checkout -b feature/nova-feature) -
Commit suas alteraƧƵes (
git commit -m 'feat: minha nova feature') -
FaƧa push para a branch (
git push origin feature/nova-feature) -
Abra um Pull Request š
Este projeto estƔ sob a licenƧa MIT.