Saleor Store
우리 컬렉션을 쇼핑하세요
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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).