尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Plataforma de coleta de lixo eletrônico em Diadema-SP. O cliente solicita a coleta pelo site, um coletor da equipe EcoByte recolhe o material no endereço informado e o leva ao ecoponto EcoByte, e o cliente acompanha cada etapa até a conclusão.
Projeto acadêmico full-stack, construído com documentação primeiro: regras, decisões e questões em aberto ficam em docs/.
| Parte | Endereço |
|---|---|
| Site | https://eco-byte-neon.vercel.app |
| API (verificação de saúde) | https://ecobyte-api-rp3e.onrender.com/api/v1/health |
A API usa o plano gratuito do Render, que "dorme" após 15 minutos sem uso. O primeiro acesso depois disso leva cerca de 1 minuto.
Cliente (pessoa física ou jurídica)
Coletor
Administrador
$facet, $unwind, $lookup, $group):
Site institucional
Navegador ──HTTPS──▶ Frontend (Next.js, Vercel)
│ proxy de /api/v1/* (mesma origem: cookie de sessão first-party)
▼
Backend (Express, Render) ──▶ MongoDB Atlas
HttpOnly. Nada sensível vai para o localStorage.Detalhes em docs/01_ARCHITECTURE.md.
| Camada | Tecnologias |
|---|---|
| Frontend | Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS 4, shadcn/ui (Radix), Lucide, TanStack Query, React Hook Form, Zod |
| Backend | Node.js 22, Express 5, TypeScript, Mongoose 9, Zod, express-session + connect-mongo, Argon2id, Nodemailer |
| Banco | MongoDB (Atlas em produção), com índices geoespaciais 2dsphere, TTL e únicos |
| Testes | Vitest, Testing Library, Supertest e MongoDB em memória (mongodb-memory-server) |
| Infraestrutura | Vercel (frontend), Render (backend), MongoDB Atlas, GitHub Actions e Dependabot |
__Host- em produção. Trocar a senha encerra as demais sessões, e a sessão do administrador expira após 30 minutos sem uso.Cache-Control: no-store nas respostas da API.Detalhes em docs/09_AUTHENTICATION_SECURITY.md e nas decisões DEC-090 a DEC-096.
.nvmrc) e npmmongodb://localhost:27017# 1. Clonar e instalar (monorepo com npm workspaces, um único lockfile)
git clone https://github.com/ErickLarssen/EcoByte.git
cd EcoByte
npm ci
# 2. Criar os arquivos de ambiente a partir dos exemplos
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env
No backend/.env, preencha SESSION_SECRET com pelo menos 32 caracteres. Para gerar um valor:
node -e "console.log(require('crypto').randomBytes(48).toString('base64url'))"
Sem SMTP_HOST, os e-mails (confirmação e redefinição de senha) aparecem no console do backend.
# 3. Popular o banco local com dados de demonstração (apaga o banco local)
npm run seed --workspace backend
# 4. Subir frontend e backend juntos
npm run dev
O site abre em http://localhost:3000, e a API fica em http://localhost:4000. O navegador acessa só a porta 3000; o Next.js repassa /api/v1/* ao backend.
Criadas pelo seed. Não existem em produção: lá, o primeiro administrador é criado pelo npm run bootstrap.
| Perfil | Senha | |
|---|---|---|
| Administrador | [email protected] | SenhaAdmin123! |
| Cliente (pessoa física) | [email protected] | ClientePF123! |
| Cliente (pessoa jurídica) | [email protected] | ClientePJ123! |
| Coletor | [email protected] | Coletor123! |
| Comando | O que faz |
|---|---|
npm run dev | Frontend e backend em modo de desenvolvimento |
npm test | Testes dos dois workspaces |
npm run lint / npm run typecheck | Lint e verificação de tipos |
npm run build | Build de produção dos dois workspaces |
npm run seed --workspace backend | Dados de demonstração. Apaga o banco e é bloqueado em produção |
npm run bootstrap --workspace backend | Banco novo: cria o primeiro administrador e o ecoponto, sem apagar nada |
npm run purge --workspace backend | Remove definitivamente perfis listados em PURGE_EMAILS. Só simula, a não ser com PURGE_CONFIRMAR=APAGAR |
Estratégia em docs/17_TESTING.md.
Frontend na Vercel, backend no Render (configurado por render.yaml) e banco no MongoDB Atlas. O passo a passo, com a inicialização do banco e o teste após o deploy, está em docs/19_DEPLOYMENT.md §21.2.
EcoByte/
├── frontend/ Next.js (App Router)
│ └── src/
│ ├── app/ páginas e layouts (site, autenticação, cliente, coletor, admin)
│ ├── components/ ui (shadcn), common, domain, features, layouts
│ ├── hooks/ consultas e mutações (TanStack Query)
│ ├── lib/ cliente da API, validações, navegação, cabeçalhos de segurança
│ └── proxy.ts CSP com nonce por requisição
├── backend/ API Express
│ ├── src/
│ │ ├── routes/ controllers/ services/ rotas → controle → regras de negócio
│ │ ├── models/ validators/ middlewares/ Mongoose, Zod, autenticação e segurança
│ │ ├── domain/ máquina de estados da coleta
│ │ └── database/ seed, bootstrap e purge
│ └── tests/
├── docs/ documentação do projeto (fonte da verdade)
├── .github/ CI e Dependabot
└── render.yaml configuração do backend no Render
| Documento | Conteúdo |
|---|---|
| 00 Visão geral | Objetivo, perfis e escopo |
| 01 Arquitetura · 02 Domínio | Camadas e entidades |
| 03 Regras de negócio · 04 Requisitos | O que o sistema deve fazer |
| 05 Rotas · 06 API | Contrato da API |
| 07 Banco · 08 Consultas | Modelagem e consultas no MongoDB |
| 09 Segurança | Autenticação, autorização e proteção de dados |
| 10 Design system · 11 Componentes · 12 Responsividade |
Desenvolvido por @ErickLarssen.
| Interface |
| 13 Fluxo do coletor · 14 Máquina de estados | Operação da coleta |
| 15 Interações · 16 Assets | Movimento e recursos visuais |
| 17 Testes · 18 Desenvolvimento · 19 Deploy · 20 Seed | Operação do projeto |
| Decisões · Questões em aberto | Registro de decisões (DEC) e pontos sem definição (OQ) |
| Avaliação heurística (IHC) | Diagnóstico de usabilidade com as 10 heurísticas de Nielsen |
| Arquitetura e HTTP (Web III) | Por que Express em camadas, o HTTP na prática e os fluxos de request/response, com trocas reais |