Uma aplicação moderna de autenticação construída com React, PostgreSQL e Bootstrap.
- Frontend: React 18, React Router, Bootstrap 5, React Icons
- Backend: Node.js, Express.js
- Banco de Dados: PostgreSQL
- Autenticação: JWT (JSON Web Tokens)
- Estilização: Bootstrap 5 + CSS customizado
react-auth-app/
├── frontend/ # Aplicação React (Vite)
│ ├── index.html
│ ├── package.json
│ ├── vite.config.js
│ ├── .gitignore
│ ├── .env # Variáveis de ambiente
│ ├── src/
│ │ ├── components/ # Componentes reutilizáveis
│ │ │ ├── Home.jsx
│ │ │ ├── Login.jsx
│ │ │ ├── Navbar.jsx
│ │ │ ├── Register.jsx
│ │ │ ├── ProtectedRoute.jsx
│ │ │ ├── AdminRoute.jsx
│ │ │ └── DashboardSidebar.jsx
│ │ ├── context/
│ │ │ └── AuthContext.jsx
│ │ ├── pages/ # Páginas da aplicação
│ │ │ ├── dashboard/ # Páginas protegidas do dashboard
│ │ │ │ ├── DashboardHome.jsx
│ │ │ │ ├── DashboardLayout.jsx
│ │ │ │ ├── Profile.jsx
│ │ │ │ ├── Settings.jsx
│ │ │ │ └── Users.jsx
│ │ ├── main.jsx
│ │ ├── App.jsx
│ │ └── index.css
│ └── ENV_SETUP.md
├── backend/ # API Node.js
│ ├── index.js
│ ├── package.json
│ ├── .gitignore
│ ├── .env # Variáveis de ambiente
│ ├── config/
│ │ └── database.js
│ ├── models/
│ │ └── User.js
│ ├── migrations/ # Scripts de migração do banco de dados
│ │ ├── add-username-column.sql
│ │ ├── add-roles-column.sql
│ │ ├── run-migration.js
│ │ └── run-roles-migration.js
│ ├── init-db.js # Script de inicialização do banco de dados
│ └── ENV_SETUP.md
├── package.json # Scripts principais
├── ecosystem.config.js # Configuração do PM2
├── nginx.conf # Configuração do Nginx
├── deploy.sh # Script de deployment
├── health-check.sh # Script de verificação de saúde
├── backup-db.sh # Script de backup do banco de dados
├── .gitignore # Git ignore global
└── README.md
- Node.js (versão 16 ou superior)
- PostgreSQL (versão 12 ou superior)
- npm ou yarn
-
Clone o repositório
git clone <url-do-repositorio> cd react-auth-app
-
Instale todas as dependências
npm run install-all
-
Configure o banco de dados PostgreSQL
- Crie um banco de dados chamado
react_auth_db - Configure as credenciais no arquivo
.envdo backend
- Crie um banco de dados chamado
-
Configure as variáveis de ambiente Crie um arquivo
.envna pastabackend/com as seguintes variáveis:POSTGRES_HOST=localhost POSTGRES_PORT=5432 POSTGRES_USER=seu_usuario_postgres POSTGRES_PASSWORD=sua_senha_do_postgres POSTGRES_NAME=react_auth_db JWT_SECRET=sua_chave_secreta_jwt PORT=5003
E na pasta
frontend/, crie um arquivo.env:VITE_APP_TITLE=React Auth App VITE_API_URL=http://localhost:5003
Para executar tanto o frontend quanto o backend simultaneamente:
npm run devBackend (API)
npm run backend
# ou
cd backend && npm run devFrontend (React)
npm run frontend
# ou
cd frontend && npm run devnpm run build # Build do frontend
npm start # Inicia o backend- ✅ Registro de usuários com validação (incluindo campo de nome de usuário)
- ✅ Login com autenticação JWT
- ✅ Interface responsiva com Bootstrap
- ✅ Proteção de rotas baseada em autenticação
- ✅ Criptografia de senhas com bcrypt
- ✅ Validação de formulários no frontend e backend
- ✅ Design moderno com ícones e gradientes
- ✅ Área administrativa com gerenciamento de usuários
- ✅ Controle de acesso baseado em roles (admin/user)
- ✅ Dashboard personalizado para usuários logados
A aplicação possui uma interface moderna e responsiva com:
- Página Home: Apresentação da aplicação com recursos destacados
- Formulário de Login: Autenticação de usuários existentes
- Formulário de Registro: Criação de novas contas com campo de nome de usuário
- Navbar: Navegação com status de autenticação
- Dashboard: Área protegida para usuários logados
- Área administrativa: Gerenciamento de usuários (apenas para admins)
- Design responsivo: Funciona em desktop, tablet e mobile
- Senhas são criptografadas usando bcrypt
- Tokens JWT para autenticação
- Validação de dados no frontend e backend
- Proteção contra ataques comuns
- Controle de acesso baseado em roles
- Proteção de rotas sensíveis
A aplicação é totalmente responsiva e funciona perfeitamente em:
- Desktop (1200px+)
- Tablet (768px - 1199px)
- Mobile (até 767px)
- Frontend: http://localhost:3004
- Backend API: http://localhost:5004
- Endpoints da API:
POST /api/register- Registro de usuárioPOST /api/login- Login de usuárioGET /api/verify- Verificação de tokenGET /api/users- Listagem de usuários (apenas admins)PUT /api/users/:id- Atualização de usuário (apenas admins)DELETE /api/users/:id- Exclusão de usuário (apenas admins)
PM2 é um gerenciador de processos para aplicações Node.js que mantém sua aplicação online.
npm install -g pm2-
Arquivo de configuração: O projeto já inclui um arquivo
ecosystem.config.jsconfigurado para o deployment. -
Inicie a aplicação com PM2:
npm run pm2:start
-
Comandos úteis do PM2:
npm run pm2:status # Listar aplicações npm run pm2:logs # Ver logs npm run pm2:restart # Reiniciar a aplicação npm run pm2:stop # Parar a aplicação npm run pm2:delete # Deletar a aplicação
-
Configurar PM2 para iniciar automaticamente:
pm2 startup # Gerar comando de inicialização pm2 save # Salvar configuração atual
Nginx é um servidor web que pode ser usado como proxy reverso para sua aplicação.
# Ubuntu/Debian
sudo apt update
sudo apt install nginx
# CentOS/RHEL
sudo yum install nginx-
Use o arquivo de configuração fornecido:
sudo cp nginx.conf /etc/nginx/sites-available/react-auth-app
-
Habilite o site:
sudo ln -s /etc/nginx/sites-available/react-auth-app /etc/nginx/sites-enabled/
-
Teste a configuração:
sudo nginx -t
-
Reinicie o Nginx:
sudo systemctl restart nginx
Para adicionar HTTPS à sua aplicação:
-
Instale o Certbot:
sudo apt install certbot python3-certbot-nginx
-
Obtenha um certificado SSL:
sudo certbot --nginx -d seu-dominio.com -d www.seu-dominio.com
-
Configure a renovação automática:
sudo crontab -e # Adicione esta linha: 0 12 * * * /usr/bin/certbot renew --quiet
O projeto inclui scripts para migração do banco de dados:
-
Executar migração inicial (adicionar coluna username):
cd backend npm run migrate -
Executar migração de roles:
cd backend npm run migrate:roles -
Inicializar o banco de dados:
cd backend npm run init-db
O projeto inclui vários scripts úteis para manutenção:
-
Deploy da aplicação:
./deploy.sh
-
Verificação de saúde:
./health-check.sh
-
Backup do banco de dados:
./backup-db.sh
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Se você encontrar algum problema ou tiver dúvidas, por favor abra uma issue no repositório.