Onboarding para nuevos
Esta guía asume que eres un desarrollador (frontend o backend) que va a colaborar. Si solo necesitas entender el producto a alto nivel, anda a visión.
1. Accesos a pedir (antes de tocar código)
Sección titulada «1. Accesos a pedir (antes de tocar código)»Pídele al dueño del proyecto que te dé acceso a:
| Servicio | Para qué | Quién lo provee |
|---|---|---|
GitHub yoeldtrujillo | Repos tcgcards-web, tcgcards-api, tcgcards-docs | Yoel |
| Vercel team | Deploys y env vars del frontend | Yoel |
GCP project api-cards-prod | Cloud Run, Cloud Scheduler, Secret Manager | Yoel |
| MongoDB Atlas | BD productiva (read-only para empezar) | Yoel |
| Cloudflare team | DNS, Email Routing, Pages, Access | Yoel |
| Cloudinary | Storage de imágenes | Yoel |
| Resend | Email outbound | Yoel |
| Mercado Pago | Pagos (panel) | Yoel |
| Sentry | Errores | Yoel |
| PostHog | Eventos | Yoel |
| Google Cloud Console (OAuth) | Configuración del login Google | Yoel |
Tu email tiene que estar en el whitelist de Cloudflare Access también para acceder a este sitio de docs.
2. Herramientas a instalar
Sección titulada «2. Herramientas a instalar»Lista mínima para trabajar:
# Node 20+ (recomendado: nvm o asdf para manejar versiones)node --version # debería ser >= 20
# Git (probablemente ya tienes)git --version
# Google Cloud SDKbrew install --cask google-cloud-sdkgcloud auth logingcloud config set project api-cards-prod
# (opcional) Vercel CLI si vas a manejar el frontend desde CLInpm install -g vercelvercel login
# MongoDB tools (para backups/restores)brew tap mongodb/brewbrew install mongodb-database-toolsbrew install mongodb-community # opcional, para Mongo localEditor recomendado: VS Code o Cursor con la extensión Astro (para este repo de docs) y la oficial de TS.
3. Clonar los repos
Sección titulada «3. Clonar los repos»mkdir -p ~/Documents/Repos && cd ~/Documents/Repos
git clone git@github.com:yoeldtrujillo/tcgcards-web.gitgit clone git@github.com:yoeldtrujillo/tcgcards-api.gitgit clone git@github.com:yoeldtrujillo/tcgcards-docs.git4. Levantar tcgcards-api local
Sección titulada «4. Levantar tcgcards-api local»cd ~/Documents/Repos/tcgcards-api
# Instalar dependenciasnpm install
# Copiar .env.example a .envcp .env.example .env
# Editar .env y llenar valores. Opciones:# a) Para los secrets reales: leer desde GCP Secret Manager# gcloud secrets versions access latest --secret=MONGODB_URI --project=api-cards-prod# b) Para Mongo: usar tu Mongo local o un cluster Atlas tuyo de dev# c) Para Cloudinary/Resend/MP: crear cuentas free de prueba
# Build + tests + devnpm run build # verifica que typecheck pasenpm test # corre tests (con mongodb-memory-server)npm run dev # arranca en http://localhost:3000Lista de envs requeridas: ver variables de entorno.
5. Levantar tcgcards-web local
Sección titulada «5. Levantar tcgcards-web local»cd ~/Documents/Repos/tcgcards-web
npm installcp .env.example .env.local
# Editar .env.local:# - TCGCARDS_API_URL=http://localhost:3000 (o la URL de tu api local)# - NEXT_PUBLIC_API_URL=http://localhost:3000# - NEXT_PUBLIC_SITE_URL=http://localhost:3000# - AUTH_SECRET=$(openssl rand -hex 32)# - AUTH_GOOGLE_ID / AUTH_GOOGLE_SECRET = pedir a Yoel un set de dev en Google Cloud Console# - INTERNAL_JWT_SECRET y INTERNAL_AUTH_SECRET = el MISMO valor que tu tcgcards-api local
npm testnpm run dev # arranca en http://localhost:3000
# (NOTA: tcgcards-api también default es 3000. Si vas a levantar ambos, cambia el PORT# del api a 3001 y ajusta TCGCARDS_API_URL en tcgcards-web a http://localhost:3001.)Abre http://localhost:3000 en el browser. Login con Google debería funcionar contra tu credencial de dev.
6. Levantar tcgcards-docs local (este sitio)
Sección titulada «6. Levantar tcgcards-docs local (este sitio)»cd ~/Documents/Repos/tcgcards-docs
npm installnpm run dev # arranca en http://localhost:4321No requiere env vars.
7. Conceptos clave que tienes que entender
Sección titulada «7. Conceptos clave que tienes que entender»Antes de tocar código, lee en este orden:
- Visión del producto — qué hacemos
- Stack y arquitectura — cómo está armado
- Servicios — los repos y cómo se relacionan
- Glosario — términos del dominio (no inventes sinónimos)
- Decisiones técnicas — por qué hicimos las cosas así
- CLAUDE.md y AGENTS.md de cada repo — convenciones del codebase
8. Tu primer cambio
Sección titulada «8. Tu primer cambio»Recomendaciones para empezar suave:
- Frontend: arreglar algún string de copy en una página estática. Editas →
npm run dev→ ves el cambio → commit → push → Vercel deploya automáticamente. - Backend: corregir un mensaje de log o agregar un campo opcional a un endpoint existente. Editas →
npm test→ push → pídele a Yoel que deploye congcloud run deploy.
Nunca hagas un deploy a producción sin OK explícito. Vercel deploya automático en push, pero revisas antes de mergear a main.
9. Convenciones que NO puedes violar
Sección titulada «9. Convenciones que NO puedes violar»| Regla | Por qué |
|---|---|
No usar voseo argentino (querés/podés/iniciá) | Audiencia chilena |
| No hardcodear hex de colores en componentes UI | Tokens shadcn solo |
| Backend usa CLP cents (integer) | Aritmética de floats da errores |
import 'server-only' en archivos con secrets | Falla en build si filtran al client |
Schemas Mongoose nullable = default: null (no required: true) | Inserts fallan con bug raro si están desalineados |
Switch sobre kind exhaustivo (default: const _exhaustive: never) | Bug histórico con bulk listings |
| Stock-dependent reads sin cache | Mostrar stock viejo lleva a “no hay stock” en checkout |
| No deployar prod sin OK | tcgcards está productivo con MP integrado |
10. ¿Dónde busco cuando no sé?
Sección titulada «10. ¿Dónde busco cuando no sé?»- Este sitio primero. Search arriba a la derecha.
- CLAUDE.md / AGENTS.md del repo correspondiente.
docs/superpowers/specs/ydocs/superpowers/plans/entcgcards-apipara decisiones detalladas históricas.- Sentry para errores en prod.
- Yoel para decisiones de producto / negocio.
11. Comandos útiles del día a día
Sección titulada «11. Comandos útiles del día a día»# Frontendnpm run dev # arranca localnpm test # testsnpm run build # typecheck + build prod
# Backendnpm run dev # arranca local (con tsx watch)npm test # tests (incluye integration con mongo in-memory)npm run build # tscnpm run sync:initial # rebuilds catalog desde TCGplayer (cuidado)npm run sync:incremental # syncs catalog cambios incrementales
# Cloud Rungcloud run services describe tcgcards-api --region us-central1 --project api-cards-prodgcloud run services logs read tcgcards-api --region us-central1 --project api-cards-prod --limit 100
# Cloud Scheduler (crons)gcloud scheduler jobs list --project api-cards-prod --location us-central1gcloud scheduler jobs run <job-name> --project api-cards-prod --location us-central1
# Mongo (si vas a inspeccionar prod directo)mongosh "<MONGODB_URI>"
# Secretsgcloud secrets versions access latest --secret=MONGODB_URI --project api-cards-prodCualquier duda, abrir issue en el repo correspondiente o preguntar directo a Yoel.