Files
2026-06-25 00:55:34 +02:00

75 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Expedição Gold - SaaS de Investimento em Expedições
Projeto demonstrativo de um SaaS simples construído com **Next.js (React + Node)**.
## Funcionalidades
- Página inicial (landing) com links para entrar e cadastrar-se.
- Página de login (`/login`) autenticação via API mock (`/api/login`).
- Página de cadastro (`/signup`) criação de conta via API mock (`/api/signup`).
- Após login, redirecionamento para `/dashboard` (página "Em construção").
- Logout remove o token do `localStorage` e redireciona para login.
- API de login e cadastro salva usuários em memória (para demonstração) e retorna um token falsificado.
## Pré-requisitos
- Node.js (v18 ou superior)
- npm ou yarn
## Instalação
```bash
# Clone o repositório (ou copie os arquivos)
git clone <SEU_REPOSITORIO>
cd expedicao-gold
# Instale dependências
npm install
```
## Executando em desenvolvimento
```bash
npm run dev
```
A aplicação estará disponível em <http://localhost:3000>.
## Estrutura de pastas
```
expedicao-gold/
├─ pages/
│ ├─ _app.js
│ ├─ index.js # landing page
│ ├─ login.js
│ ├─ signup.js
│ ├─ dashboard.js # área logada (em construção)
│ └─ api/
│ ├─ login.js # rota POST /api/login
│ └─ signup.js # rota POST /api/signup
├─ styles/
│ └─ globals.css
├─ package.json
└─ README.md
```
## Como funciona a autenticação (mock)
1. Na página de login, ao submeter o formulário, o frontend faz uma `POST` para `/api/login` com `{ username, password }`.
2. A rota `/api/login` verifica se o usuário existe no array em memória (`users`) e compara a senha (usando `bcryptjs`).
3. Se válido, retorna um objeto `{ token, user }`. O token é salvo em `localStorage`.
4. O middleware em `dashboard.js` verifica a presença do token; se ausente, redireciona para `/login`.
5. Logout remove o token e redireciona para a página inicial.
> **Observação:** Este é apenas um protótipo. Para produção, substitua o armazenamento em memória por um banco de dados real, use cookies seguros ou JWT com expiração, e adicione validação e proteção de rotas no servidor.
## Personalização
- Alterar mensagens e estilos nos arquivos de página.
- Estender a API para buscar/salvar usuários em um banco de dados (ex: PostgreSQL, MongoDB).
- Implementar rotas protegidas com middleware ou usando uma biblioteca como `next-auth`.
## Licença
MIT sinta-se livre para usar, modificar e distribuir.