尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A plataforma SaaS que vende o "Ecommerce" (motor multi-tenant em ecommerce/, uma cópia multi-tenant do ecommerce retrofitada pra atender centenas de lojas — ver ecommerce/README-TENANCY.md). A Rodoletas em si não é uma loja — é a landing, o cadastro/checkout, o dashboard do assinante e o onboarding que provisiona automaticamente um Tenant novo dentro do motor. Cadastro/login usam o Auth nativo do Supabase (e-mail+senha com confirmação de e-mail de verdade) e são separados da escolha de plano — ver ARQUITETURA.md §6 pro desenho completo.查看完整 README ↗
A plataforma SaaS que vende o "Ecommerce" (motor multi-tenant em ecommerce/,
uma cópia multi-tenant do ecommerce retrofitada pra atender centenas de lojas — ver
ecommerce/README-TENANCY.md). A Rodoletas em si não é uma loja — é a
landing, o cadastro/checkout, o dashboard do assinante e o onboarding que
provisiona automaticamente um Tenant novo dentro do motor.
backend/ Rust + Axum + SQLx — assinatura, auth, dashboard, onboarding
frontend/ Vite + React + TS + Tailwind v4 + Framer Motion — landing, área logada
ecommerce/ motor de e-commerce multi-tenant (o que a Rodoletas vende)
supabase/ (não usado ainda por este app — reservado pra integração futura)
Cadastro/login usam o Auth nativo do Supabase (e-mail+senha com
confirmação de e-mail de verdade) e são separados da escolha de plano —
ver ARQUITETURA.md §6 pro desenho completo.
Landing (/) -> Escolher plano (#planos) -> /cadastro?plano=X (conta + plano já atrelado)
OU Landing -> /cadastro (conta sem plano) -> Dashboard -> /planos -> /assinar?plano=X
-> /assinar (forma de pagamento) -> Pagamento (Pix ou cartão) -> /obrigado (polling de status)
-> Onboarding (/onboarding) -> POST /internal/provision-tenant no motor
-> Dashboard (/dashboard) -> "Entrar no painel da loja" (ecommerce/frontend)
ecommerce/backend/migrations/0005_tenancy.sql).MP_ACCESS_TOKEN está setado.
AbacatePay fica como fallback se só ABACATEPAY_API_KEY existir — ver
backend/src/gateway.rs. Sem nenhum token, tudo roda em modo mock.
Script de smoke: node scripts/test-mp-subscription.mjs (token via env).POST /internal/provision-tenant no motor de e-commerce (chave
compartilhada ECOMMERCE_INTERNAL_KEY/INTERNAL_API_KEY), que cria
Organization + Tenant + Subscription + o admin da loja numa unica
transação. O admin da loja usa o mesmo e-mail e senha da conta
Rodoletas (o hash Argon2 é reaproveitado, a senha em si nunca trafega) —
ver backend/src/routes/onboarding.rs.cd backend
docker compose up -d # Postgres na porta 5434
O projeto Supabase dedicado do ufersin (retmfoorwjwzuevaqlsr) continua
documentado em backend/.env.example pra quando a integração real
acontecer — não usado agora, de propósito (mesma decisão já tomada pro
motor de e-commerce).
# 1. Motor de e-commerce (porta 8080) — ver ecommerce/README.md
cd ecommerce/backend && docker compose up -d && cargo run
# 2. Backend Rodoletas (porta 8081)
cd backend && cargo run
# 3. Frontend Rodoletas (porta 5174)
cd frontend && npm install && npm run dev
Acesse http://localhost:5174. O frontend do motor de e-commerce
(ecommerce/frontend, porta 5173) só é necessário se você for testar o
"Entrar no painel da loja" depois do onboarding.
Copie backend/.env.example -> backend/.env e frontend/.env.example ->
frontend/.env. ECOMMERCE_INTERNAL_KEY (aqui) precisa ser IGUAL a
INTERNAL_API_KEY (em ecommerce/backend/.env) — é a chave que autoriza a
chamada de provisionamento entre os dois backends.
Login/cadastro do lojista usam o Auth nativo do Supabase (ver
ARQUITETURA.md §6) — sem isso, nenhuma rota autenticada funciona:
backend/.env: SUPABASE_URL (ex: https://<project-ref>.supabase.co).
O backend usa isso só pra buscar o JWKS público do projeto (Dashboard ->
Settings -> API -> JWT Keys) e verificar os tokens — não precisa de
nenhum secret. Faz panic no boot se essa variável estiver vazia, de
propósito.frontend/.env: VITE_SUPABASE_URL / VITE_SUPABASE_ANON_KEY (mesmo
projeto). No Dashboard desse projeto, configure Authentication -> URL
Configuration com o Site URL/Redirect URLs cobrindo
http://localhost:5174/** (e o domínio de produção), e habilite
"Confirm email" em Authentication -> Settings..github/workflows/deploy-vercel.yml já faz deploy
automático em todo push pra main (precisa configurar os secrets
VERCEL_TOKEN/VERCEL_ORG_ID/VERCEL_PROJECT_ID no repo, ver comentário
no topo do workflow)..github/workflows/ci.yml roda cargo check + tsc/vite build
em todo push/PR pra main, antes do deploy.<slug>.rodoletas.app, e nem isso
está de fato roteado ainda — é só o texto mostrado no dashboard).ecommerce/supabase/sunset_admin_auth.sql for portado pra
respeitar tenant (Fase 1B do motor, ver ecommerce/README-TENANCY.md).backend/src/routes/me.rs).