Compare commits
2 Commits
bc73f3dcd5
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| dab3133aad | |||
| 1bf21f0754 |
@@ -0,0 +1,5 @@
|
|||||||
|
node_modules/
|
||||||
|
|
||||||
|
.next/
|
||||||
|
.env
|
||||||
|
*.log
|
||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
FROM node:20-alpine
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN npm ci
|
||||||
|
|
||||||
|
# Copy source code
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Build the application
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
# Set environment to production
|
||||||
|
ENV NODE_ENV=production
|
||||||
|
ENV NEXT_TELEMETRY_DISABLED=1
|
||||||
|
|
||||||
|
# Expose port
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
|
# Start the application
|
||||||
|
CMD ["npm", "start"]
|
||||||
@@ -1,3 +1,75 @@
|
|||||||
# expedicao-gold
|
# Expedição Gold - SaaS de Investimento em Expedições
|
||||||
|
|
||||||
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.
|
||||||
Submodule
+1
Submodule app added at 1bf21f0754
@@ -0,0 +1,4 @@
|
|||||||
|
// Shared in-memory store for demo purposes
|
||||||
|
let users = [];
|
||||||
|
|
||||||
|
module.exports = { users };
|
||||||
Reference in New Issue
Block a user