个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Gestão de contratos parcelados (parcelas, comprovantes, quitação). Monorepo Bun + Elysia + React 19, com CI/CD no GitHub Actions.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Gestão de contratos parcelados — cada parcela no seu lugar. Acompanhe compras parceladas, aluguéis e acordos entre partes (ou solo): contratos, parcelas, comprovantes e quitação, com aprovação/contestação, notificações e dashboard.查看完整 README ↗
Gestão de contratos parcelados — cada parcela no seu lugar.
Acompanhe compras parceladas, aluguéis e acordos entre partes (ou solo): contratos, parcelas, comprovantes e quitação, com aprovação/contestação, notificações e dashboard.
Monorepo (Bun workspaces + Turborepo). O front é same-origin: chama /api/* no próprio domínio,
e um reverse-proxy (rewrite na Vercel) encaminha pro backend no Fly — mantendo o cookie de
sessão first-party.
Navegador ──▶ usequitto.vercel.app (React SPA · Vercel)
│ /api/* (rewrite)
▼
usequitto-api.fly.dev (Elysia · Fly.io)
├──▶ Neon (PostgreSQL)
└──▶ Cloudflare R2 (comprovantes · presigned)
| Camada | Tecnologias |
|---|---|
| API | Bun · Elysia · Drizzle ORM · PostgreSQL · Better Auth (Google + e-mail/senha) |
| Web | React 19 · Vite · TanStack Router & Query · Tailwind v4 · shadcn/Radix |
| Tipos | Eden Treaty (cliente tipado ponta a ponta, sem geração de código) |
| Storage | Cloudflare R2 (prod) · MinIO (dev/CI) — S3-compatível, upload pré-assinado |
| Infra | Vercel (web) · Fly.io (API) · Neon (DB) · GitHub Actions (CI/CD) |
| Qualidade | TDD · Biome/Ultracite · Lefthook · bun test · Vitest · Playwright + axe |
Valores monetários são inteiros em centavos; datas em ISO com máscara pt-BR.
apps/
api/ # backend Elysia (rotas, auth, drizzle, storage)
web/ # SPA React (rotas, hooks, componentes)
packages/
shared/ # tipos e contratos compartilhados (enums, helpers puros)
e2e/ # suíte Playwright (+ axe) dos fluxos críticos
Pré-requisitos: Bun ≥ 1.2 e Docker (para Postgres + MinIO).
git clone [email protected]:devjpedro/quitto.git
cd quitto
bun install
# sobe Postgres + MinIO (bucket criado automaticamente)
docker compose up -d
# variáveis de ambiente (ajuste se quiser Google OAuth local)
cp .env.example .env
# aplica as migrations
bun run --filter @quitto/api db:migrate
# sobe API (:3000) + web (:3001)
bun run dev
Abra http://localhost:3001. O Google é opcional em dev (sem GOOGLE_*, sobe só com e-mail/senha).
Veja .env.example. Resumo:
| Var | Para quê |
|---|---|
DATABASE_URL | conexão Postgres |
BETTER_AUTH_SECRET / BETTER_AUTH_URL | sessão/auth |
WEB_ORIGIN | origem confiável (CORS/CSRF) |
GOOGLE_CLIENT_ID / _SECRET | login social (opcional em dev) |
S3_ENDPOINT / _REGION / _BUCKET / _ACCESS_KEY_ID / _SECRET_ACCESS_KEY | storage (R2/MinIO) |
bun run test # unitários/integração (API: bun test · web: Vitest)
bun run lint && bun run typecheck # Biome + tsc
cd e2e && bun run e2e # E2E Playwright (+ axe a11y) — precisa de docker compose up
bun run --filter @quitto/web lh # Lighthouse local no /login
GitHub Actions (.github/workflows/ci.yml):
push/PR ──▶ verify (lint·typecheck·test·build) + e2e (Playwright·axe) ← gate
push main ──────▶ migrate (Neon) ──▶ deploy-api (Fly) ∥ deploy-web (Vercel) ──▶ smoke
Nada vai pra produção sem o gate passar. O deploy de produção é orquestrado pelo pipeline: o
main migra o banco e publica API + web em paralelo, depois valida com smoke test.
Proprietário — © 2026 João Pedro Souza Silva. Todos os direitos reservados. Veja LICENSE.