Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기hlima-dev/ConectFome
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Plataforma de doação e resgate de alimentos que conecta doadores (mercados, restaurantes, feiras) a receptores (ONGs e famílias em situação de vulnerabilidade), redistribuindo alimentos que seriam descartados. Projeto de faculdade baseado nos Objetivos de Desenvolvimento Sustentável da ONU.README 전문 보기 ↗
Plataforma de doação e resgate de alimentos que conecta doadores (mercados, restaurantes, feiras) a receptores (ONGs e famílias em situação de vulnerabilidade), redistribuindo alimentos que seriam descartados. Projeto de faculdade baseado nos Objetivos de Desenvolvimento Sustentável da ONU.
Todos os dias, mercados, restaurantes e feiras descartam alimentos em condições de consumo — só não vendáveis pelo padrão estético ou pelo prazo comercial, não pela segurança alimentar. Do outro lado, ONGs e famílias em vulnerabilidade enfrentam insegurança alimentar diária. O ConectFome existe para fechar essa distância: cadastro de doadores e receptores, agendamento de coleta com rotas e voluntários, e um relatório de quanto alimento foi efetivamente resgatado por mês.
ENTREGUE é comida que
chegou a quem precisava, em vez de ser descartada. O ciclo de status
da doação (abaixo) existe justamente para que essa entrega seja um
evento registrado e mensurável, não uma promessa./relatorios) é o indicador direto desse impacto, e o estado
VENCIDA existe para tornar visível, e não esconder, o que ainda se
perde antes da coleta.Monorepo com backend e frontend separados, mesma fundação de auth/ estrutura do projeto ATHLO (Node/Express/Prisma) e o mesmo raciocínio de modelagem de logística do PRODUCTION ERP (veículo/motorista/romaneio → aqui veículo/voluntário/rota de coleta), reimplementados em Prisma — não código copiado, já que os stacks de origem são diferentes.
conectfome/
├── backend/ # Node + Express + TypeScript + Prisma + PostgreSQL
│ ├── prisma/
│ │ ├── schema.prisma # 8 modelos, 6 enums
│ │ └── seed.ts # dados de exemplo (idempotente)
│ ├── src/
│ │ ├── config/ # env (Zod) e cliente Prisma
│ │ ├── controllers/ # validação (Zod) + chamada ao service
│ │ ├── services/ # regra de negócio
│ │ ├── middlewares/ # auth, CSRF, rate limit, erro
│ │ ├── routes/ # mapeamento REST
│ │ └── utils/ # AppError, JWT, cookies, paginação
│ └── tests/ # Vitest — services e middlewares
└── frontend/ # React + Vite + TypeScript + Tailwind
└── src/
├── components/ # DataTable, Modal, ConfirmDialog, StatusBadge
├── layouts/ # AppLayout (nav por papel)
├── routes/ # PrivateRoute, RoleRoute
├── services/ # chamadas à API (axios)
├── hooks/ # TanStack Query
├── pages/ # telas, organizadas por módulo
└── types/ # tipos e labels de cada domínio
Três papéis: ADMIN (nasce só via seed, nunca por cadastro público), DOADOR e RECEPTOR. Login em cookies httpOnly (access + refresh), proteção CSRF por dupla submissão, bloqueio de conta após 5 tentativas de senha erradas em 15 minutos, e mensagens de erro genéricas no login pra não vazar quais e-mails existem.
O cadastro público (/cadastro) cria o User e, na mesma transação, o
perfil Donor ou Recipient vinculado, conforme o papel escolhido.
DISPONÍVEL → RESERVADA → AGENDADA → COLETADA → ENTREGUE
│ │
└── CANCELADA ┘
└── VENCIDA ───┘
Cada estado é uma ação distinta e rastreável (quem fez, quando), em vez de um único campo "concluído" — é isso que permite ao relatório separar "resgatado" de "entregue" de "perdido".
| Módulo | O que faz | Quem acessa |
|---|---|---|
| Doadores / Receptores | Cadastro, edição e desativação (soft delete) | ADMIN (CRUD completo); o próprio dono vê/edita seu cadastro |
| Doações | Criar, casar com receptor, cancelar, marcar vencida, confirmar recebimento | DOADOR (as próprias), RECEPTOR (as suas), ADMIN (todas) |
| Voluntários / Veículos | Cadastro simples, com edição | ADMIN |
| Rotas de coleta | Criar, anexar/desanexar doação, iniciar, concluir, cancelar | ADMIN |
| Relatórios | Kg resgatado por mês, por doador, por receptor, resumo de KPIs | ADMIN |
Pré-requisitos: Node 20+, PostgreSQL 16+.
git clone https://github.com/hlima-dev/ConectFome.git
cd ConectFome
# banco de dados
sudo -u postgres psql -c "CREATE ROLE conectfome LOGIN PASSWORD 'conectfome';"
sudo -u postgres psql -c "CREATE DATABASE conectfome_db OWNER conectfome;"
# backend
cd backend
cp .env.example .env # ajuste DATABASE_URL/JWT_SECRET se preciso
npm install
npx prisma migrate dev
npm run db:seed
npm run dev # http://localhost:3333
# frontend (em outro terminal)
cd ../frontend
cp .env.example .env
npm install
npm run dev # http://localhost:5173
Senha de todas as contas: Conect@123
| Papel | Perfil | |
|---|---|---|
| ADMIN | [email protected] | — |
| DOADOR | [email protected] | Mercado Bom Preço |
| DOADOR | [email protected] | Restaurante Sabor Caseiro |
| RECEPTOR | [email protected] | ONG Mesa Solidária |
| RECEPTOR | [email protected] | Lar da Vovó Joana (família) |
O seed também cria 2 voluntários, 2 veículos e doações de exemplo em
DISPONÍVEL, RESERVADA, VENCIDA e uma já ENTREGUE no mês
anterior (pra o gráfico de relatório mostrar mais de um mês).
cd backend && npm run test # 81 testes — services e middlewares
cd frontend && npm run test # testes de componente (Login/Register)
Escopo deliberado: testes unitários com Prisma mockado (vi.mock),
sem integração com banco real — a mesma escolha do projeto ATHLO. A
consulta SQL crua do relatório mensal (ReportService.monthlyKg) foi
validada manualmente contra PostgreSQL real durante o desenvolvimento;
o teste unitário cobre o mapeamento da resposta, não a query em si.
VENCIDA é uma ação manual
(do doador ou do admin), não um job agendado. Evita a complexidade
operacional de um scheduler pra uma decisão que, na prática, alguém
vai querer confirmar de qualquer forma.Driver do projeto de referência (PRODUCTION ERP); no mundo real,
esse público tende a operar por telefone/WhatsApp, não por painel web.Fundação de autenticação, estrutura de camadas e padrão de testes adaptados do projeto ATHLO. Raciocínio de modelagem de logística (veículo/motorista/romaneio) adaptado do PRODUCTION ERP — em ambos os casos, o padrão foi reimplementado em Prisma/Express, não copiado (os projetos de origem usam Java/Spring).