# 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 cd expedicao-gold # Instale dependências npm install ``` ## Executando em desenvolvimento ```bash npm run dev ``` A aplicação estará disponível em . ## 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.