Skip to content

santyasm/twii-social-backend

Repository files navigation

Twii Logo Nest Logo

šŸ“± Social Network API

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.


šŸ“˜ Documentação da API

Swagger Documentation

Acesse o link acima para a documentação interativa (OpenAPI) completa da API.


šŸš€ Tecnologias e VersƵes

Badge Descrição
NestJS Framework principal da aplicação.
Node.js Ambiente de execução JavaScript.
Prisma ORM para banco de dados.
PostgreSQL Banco de dados relacional.
JWT Autenticação baseada em tokens.
Cloudinary Armazenamento e manipulação de imagens.
Resend ServiƧo de envio de emails.
Swagger Documentação interativa da API.
Docker Containerização e deploy.

✨ Features

  • 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

šŸ“¦ Instalação e uso

1. Clonar o repositório

git clone [https://github.com/santyasm/twii-social-backend.git](https://github.com/santyasm/twii-social-backend.git)
cd twii-social-backend

2. Instalar dependĆŖncias

# Usando pnpm
pnpm install

# Usando npm
npm install

# Usando yarn
yarn install

3. Configurar variƔveis de ambiente

Crie 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>"

4. Executar migraƧƵes do Prisma

# pnpm
pnpm prisma migrate dev

# npm
npx prisma migrate dev

# yarn
yarn prisma migrate dev

5. Rodar a aplicação em modo dev

# pnpm
pnpm run start:dev

# npm
npm run start:dev

# yarn
yarn start:dev

6. Rodar em produção

Para 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:prod

🐳 Usando Docker

Build da imagem

docker build -t twii-social-backend .

Subir o container

docker run -p 3000:3000 --env-file .env twii-social-backend

šŸ”· Endpoints principais

Autenticação

  • 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

UsuƔrios

  • 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

Posts

  • 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

Feed

  • 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

šŸ“Œ Roadmap

  • 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)

šŸ‘©ā€šŸ’» Contribuindo

  1. FaƧa um fork do projeto

  2. Crie uma branch para sua feature (git checkout -b feature/nova-feature)

  3. Commit suas alteraƧƵes (git commit -m 'feat: minha nova feature')

  4. FaƧa push para a branch (git push origin feature/nova-feature)

  5. Abra um Pull Request šŸš€

šŸ“œ LicenƧa

Este projeto estƔ sob a licenƧa MIT.

šŸ‘©ā€šŸ’» Autora

Feito com šŸ’œ por Yasmin Santana LinkedIn GitHub

About

API backend para uma rede social inspirada no Twitter, desenvolvida com NestJS, Prisma e PostgreSQL.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors