75 lines
2.5 KiB
Markdown
75 lines
2.5 KiB
Markdown
# 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. |