Este é um projeto fullstack desenvolvido com Node.js no backend e Next.js no frontend, com o objetivo de praticar conceitos abordados no curso JStack. O foco principal está em paginação, infinite scroll e optimistic updates com React Query.
Além desses conceitos, o projeto simula uma rede social inspirada no Instagram, com funcionalidades de usuários, postagens, curtidas e sistema de seguidores.
- Criar novo usuário (
POST /users) - Listar usuários com paginação (
GET /users) - Buscar usuário por ID (
GET /users/:id)
- Criar novo post (
POST /posts) - Listar posts com paginação (cursor-based) (
GET /posts) - Excluir post (
DELETE /posts/:id)
- Curtir um post (
POST /likes/like) - Remover curtida (
POST /likes/unlike) - Listar curtidas de um post com paginação (
GET /likes/:post_id)
- Seguir um usuário (
POST /followers/follow) - Deixar de seguir (
POST /followers/unfollow) - Listar seguidores de um usuário (
GET /followers/:user_id) - Listar quem o usuário está seguindo (
GET /followers/:user_id/following)
Este projeto aplica os seguintes conceitos ensinados no curso:
- Paginação: Offset vs Cursor-based e Valores Pré-computados
- Infinite Scroll com React Query
- Optimistic Updates (UIs otimistas) para ações como curtir e seguir usuários
- Node.js com Fastify
- PostgreSQL
- Zod para validação de dados
- Next.js
- React Query para gerenciamento de cache e dados assíncronos
- Tailwind CSS + shadcn/ui para estilização
- React Virtualized para virtualização do feed
- Acesse a pasta
backende instale as dependências:cd backend npm install - Configure o banco de dados no arquivo
.env. - Execute o servidor:
npm run dev
- Acesse a pasta
frontende instale as dependências:cd frontend npm install - Execute a aplicação:
npm run dev