Ir al contenido

Páginas web

Frontend en Next.js 16 App Router (tcgcards-web). Las rutas se definen por archivos page.tsx en src/app/**. Las carpetas con paréntesis como (public), (dashboard), (auth) son route groups y NO aparecen en la URL.

URL pública: https://tcgcards.cl

URLArchivoQué hace
/src/app/(public)/page.tsxHome: carrusel de banners, exploración por TCG, sets recientes
/aboutsrc/app/(public)/about/page.tsxSobre tcgcards: qué es, cómo funciona el modelo
/accesoriossrc/app/(public)/accesorios/page.tsxCatálogo de accesorios con filtros
/bannedsrc/app/(public)/banned/page.tsxAviso para cuentas baneadas
/cartassrc/app/(public)/cartas/page.tsxFeed de cartas individuales más recientes
/cards/[id]src/app/(public)/cards/[id]/page.tsxDetalle de carta del catálogo: ofertas, ventas recientes
/challasrc/app/(public)/challa/page.tsxCatálogo de lotes (challa)
/checkoutsrc/app/(dashboard)/checkout/page.tsxCarrito + confirmación + integración MP
/como-funcionasrc/app/(public)/como-funciona/page.tsxGuía visual de 5 pasos
/contactsrc/app/(public)/contact/page.tsxPágina de contacto
/cookiessrc/app/(public)/cookies/page.tsxPolítica de cookies
/helpsrc/app/(public)/help/page.tsxFAQs
/listings/[id]src/app/(public)/listings/[id]/page.tsxDetalle de publicación: galería, precio, vendedor, comprar
/privacysrc/app/(public)/privacy/page.tsxPolítica de privacidad
/searchsrc/app/(public)/search/page.tsxBúsqueda global con filtros
/selladosrc/app/(public)/sellado/page.tsxCatálogo de productos sellados
/setssrc/app/(public)/sets/page.tsxListado de sets agrupados por TCG
/sets/[tcg]/[slug]src/app/(public)/sets/[tcg]/[slug]/page.tsxDetalle de un set: grilla de cartas
/tarifassrc/app/(public)/tarifas/page.tsxComisiones y tarifas
/termssrc/app/(public)/terms/page.tsxTérminos y condiciones
/u/[username]src/app/(dashboard)/u/[username]/page.tsxPerfil público de un vendedor
/u/[username]/publicacionessrc/app/(dashboard)/u/[username]/publicaciones/page.tsxTodas las publicaciones del vendedor
URLArchivoQué hace
/loginsrc/app/(auth)/login/page.tsxLogin con Google
/api/auth/[...nextauth]src/app/api/auth/[...nextauth]/route.tsAPI NextAuth (callbacks, logout, etc.)

Todas bajo src/app/(dashboard)/me/...

URLQué hace
/mePerfil del usuario + edición + wallet + accesos rápidos
/me/bank-accountCuenta bancaria (encrypted) para retiros
/me/comprasMis compras (filtradas por estado)
/me/compras/[id]Detalle de compra: chat, fotos, disputar
/me/listingsMis publicaciones (con filtros)
/me/listings/newCrear publicación (4 tipos)
/me/listings/[id]/editEditar publicación existente
/me/mensajesInbox de conversaciones
/me/ventasMis ventas (filtradas por estado)
/me/ventas/[id]Detalle de venta: chat, aceptar/enviar
/me/walletSaldo + retiros + historial
/me/withdrawalsHistorial de retiros
/me/withdrawals/newSolicitar retiro

Admin (requiere login + user.isAdmin === true)

Sección titulada «Admin (requiere login + user.isAdmin === true)»

Todas bajo src/app/(dashboard)/admin/...

URLQué hace
/adminDashboard principal con KPIs
/admin/bannersGestión de banners del home
/admin/banners/newCrear banner
/admin/banners/[id]Editar banner
/admin/disputesCola de disputas
/admin/disputes/[id]Resolver disputa
/admin/ordersBúsqueda de órdenes
/admin/orders/[id]Detalle de orden (admin view)
/admin/reconciliationReconcilia wallet vs ledger
/admin/reportsCola de reportes
/admin/reports/[id]Resolver reporte (warn/suspend/ban)
/admin/usersUsuarios moderados
/admin/users/[username]Detalle de usuario (perfil + moderation)
/admin/users/[username]/bank-accountCuenta bancaria del user (decrypted)
/admin/users/[username]/walletWallet del user (credit/debit manual)
/admin/wallet-systemSystem wallet (comisiones acumuladas)
/admin/withdrawalsCola de retiros
/admin/withdrawals/[id]Detalle de retiro (procesar/cancelar)

Estas viven dentro de tcgcards-web (no en tcgcards-api). Son endpoints que el cliente llama y que después hacen requests al backend o a servicios externos directamente.

URLArchivoQué hace
/api/auth/[...nextauth]src/app/api/auth/[...nextauth]/route.tsNextAuth — login/logout/session/callback Google
/api/banners/sign-uploadsrc/app/api/banners/sign-upload/route.tsFirma upload a Cloudinary para banners (admin)
/api/orders/[id]/resume-paymentsrc/app/api/orders/[id]/resume-payment/route.tsReanuda pago en MP de una orden en awaiting_payment
  • Carpetas con paréntesis ((public), (dashboard), (auth)) son route groups: agrupan páginas con un layout común sin afectar la URL.
  • [param] = ruta dinámica (un solo segmento).
  • [...slug] = catch-all (cero o más segmentos).
  • layout.tsx define el layout compartido por todas las páginas de esa carpeta y sub-carpetas.
  • route.ts son API endpoints (NO páginas).
  • loading.tsx, error.tsx, not-found.tsx son archivos especiales para UI de estados.
Tipo de páginaRequiere
(public)/*Nada
(auth)/loginNo estar logueado
(dashboard)/me/*Sesión activa (cookie Auth.js)
(dashboard)/admin/*Sesión activa + user.isAdmin === true
(dashboard)/checkoutSesión activa + items en carrito
(dashboard)/u/[username]Nada (es público, pero comparte layout con dashboard)

El control se hace via middleware o en cada page.tsx con auth() de Auth.js.