Rede social moderna com feed, perfis, comentários, curtidas, bookmarks e temas visuais.
- Visão geral
- Stack
- Pré-requisitos
- Como rodar localmente
- Variáveis de ambiente
- Estrutura do projeto
- Scripts disponíveis
- Funcionalidades
ProMaxHub é uma aplicação web full-stack de rede social. O backend é uma API REST em Node.js/Express com banco SQLite. O frontend é uma SPA (Single Page Application) em HTML, CSS e JavaScript puro, servida diretamente pelo servidor.
| Camada | Tecnologia |
|---|---|
| Servidor | Node.js + Express |
| Banco | SQLite via better-sqlite3 |
| Auth | JWT (jsonwebtoken) + bcrypt |
| Frontend | HTML5 + CSS3 + JavaScript (Vanilla) |
| Nodemailer (opcional, para verificação) |
- Node.js v18 ou superior — nodejs.org
- npm (já vem com o Node.js)
- Git — git-scm.com
git clone https://github.com/seu-usuario/promaxhub.git
cd promaxhubnpm installCopie o arquivo de exemplo e preencha os valores:
# Windows
copy .env.example .env
# macOS / Linux
cp .env.example .envAbra o arquivo .env e defina pelo menos o JWT_SECRET com uma string aleatória longa. As configurações de SMTP são opcionais — sem elas a verificação de email fica desativada, mas o app funciona normalmente.
# Modo produção
npm start
# Modo desenvolvimento (reinicia automaticamente ao salvar)
npm run devhttp://localhost:3000
O banco de dados SQLite (server/promaxhub.db) é criado automaticamente na primeira execução. Não é necessário nenhum setup adicional.
| Variável | Obrigatório | Descrição |
|---|---|---|
PORT |
Não | Porta do servidor (padrão: 3000) |
JWT_SECRET |
Sim | Segredo para assinar tokens JWT |
JWT_EXPIRES_IN |
Não | Expiração do token (padrão: 7d) |
SMTP_HOST |
Não | Host SMTP para envio de emails |
SMTP_PORT |
Não | Porta SMTP (padrão: 587) |
SMTP_USER |
Não | Usuário SMTP |
SMTP_PASS |
Não | Senha ou app password SMTP |
SMTP_FROM |
Não | Remetente exibido nos emails |
APP_URL |
Não | URL pública do app (usado nos links de verificação) |
Aviso de segurança: nunca commite o arquivo
.envcom credenciais reais. Ele já está no.gitignore.
promaxhub/
├── public/ # Frontend servido pelo Express
│ ├── index.html
│ ├── images/
│ ├── scripts/
│ │ ├── api.js # Camada de comunicação com a API
│ │ ├── app.js # Roteamento SPA e inicialização
│ │ ├── auth.js # Login, cadastro, setup de perfil
│ │ ├── feed.js # Feed, posts, curtidas, comentários
│ │ ├── profile.js # Visualização de perfil
│ │ ├── saved.js # Posts salvos (bookmarks)
│ │ ├── settings.js # Configurações e temas
│ │ └── toast.js # Notificações toast
│ └── styles/ # Folhas de estilo CSS
│
├── server/
│ ├── server.js # Entry point do Express
│ ├── database.js # Conexão SQLite e criação das tabelas
│ ├── middleware/
│ │ └── auth.js # Middleware de autenticação JWT
│ ├── routes/
│ │ ├── auth.js # /api/auth — register, login, verify
│ │ ├── posts.js # /api/posts — feed, criar, curtir, comentar
│ │ └── users.js # /api/users — perfil, settings, conta
│ └── uploads/ # Pasta de uploads (vazia no repositório)
│
├── .env.example # Modelo de variáveis de ambiente
├── package.json
└── README.md
| Comando | Descrição |
|---|---|
npm start |
Inicia o servidor em modo produção |
npm run dev |
Inicia com --watch (reinicia ao salvar arquivos) |
- Cadastro e login com JWT
- Verificação de email (opcional, via SMTP)
- Setup de perfil com avatar, bio e interesses
- Feed de posts com texto e imagem
- Curtir e descurtir posts
- Comentários com exclusão
- Salvar posts (bookmarks)
- Página de perfil com estatísticas
- Troca de senha
- Temas visuais: Dark, Light, Cyberpunk, Midnight
- Modo compacto e ajuste de fonte
- Exclusão de conta
- Banco SQLite local — zero configuração de banco externo