Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bc73f3dcd5 |
@@ -1,5 +0,0 @@
|
||||
node_modules/
|
||||
|
||||
.next/
|
||||
.env
|
||||
*.log
|
||||
-22
@@ -1,22 +0,0 @@
|
||||
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,75 +1,3 @@
|
||||
# Expedição Gold - SaaS de Investimento em Expedições
|
||||
# expedicao-gold
|
||||
|
||||
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.
|
||||
SaaS de investimento em expedições
|
||||
-1
Submodule app deleted from 1bf21f0754
@@ -1,4 +0,0 @@
|
||||
// Shared in-memory store for demo purposes
|
||||
let users = [];
|
||||
|
||||
module.exports = { users };
|
||||
Reference in New Issue
Block a user