No description
  • TypeScript 97.5%
  • Dockerfile 1.7%
  • CSS 0.8%
Find a file
Emmanuel Arias c166401e79
Some checks failed
CI / quality (push) Failing after 20s
CI / integration (push) Failing after 26s
docs(next): contenido jugable EN PROD (6 challenges, /challenges, progreso); pendientes de pulido
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 20:44:04 +00:00
.forgejo/workflows feat(assessment): slice Challenge structured-answer — el learner por fin HACE algo 2026-06-29 17:41:36 +00:00
apps feat(content): 3 challenges de criterio más (6 en total) 2026-06-29 20:06:24 +00:00
docs feat(assessment): runner de sandbox gVisor + ADR-0002 Opción B validada 2026-06-29 01:24:43 +00:00
packages/shared feat: bootstrap toolchain + verified walking-skeleton vertical slice 2026-06-27 19:27:03 +00:00
.dockerignore feat: production deploy to learn.emmanuelariasa.com (Traefik + TLS) 2026-06-27 20:10:10 +00:00
.env.example feat: bootstrap toolchain + verified walking-skeleton vertical slice 2026-06-27 19:27:03 +00:00
.env.prod.example feat: Forgejo OAuth (genericOAuth, env-driven) + prod redeploy with all 5 modules 2026-06-27 21:12:41 +00:00
.gitignore feat: bootstrap toolchain + verified walking-skeleton vertical slice 2026-06-27 19:27:03 +00:00
.npmrc feat: bootstrap toolchain + verified walking-skeleton vertical slice 2026-06-27 19:27:03 +00:00
biome.json chore: biome format + ignore generated files 2026-06-27 23:41:44 +00:00
docker-compose.dev.yml feat: bootstrap toolchain + verified walking-skeleton vertical slice 2026-06-27 19:27:03 +00:00
docker-compose.prod.yml feat: real Feed — GitHub Releases source + deployed worker + /feed page 2026-06-27 21:53:16 +00:00
NEXT.md docs(next): contenido jugable EN PROD (6 challenges, /challenges, progreso); pendientes de pulido 2026-06-29 20:44:04 +00:00
package.json chore: biome format + ignore generated files 2026-06-27 23:41:44 +00:00
pnpm-lock.yaml feat(frontend): assessment challenge slice with TanStack Query 2026-06-28 07:07:40 +00:00
pnpm-workspace.yaml feat: identity module with Better Auth (email/password + roles) + UX guidelines 2026-06-27 20:52:13 +00:00
README.md docs: bootstrap dev-platform repo with architecture docs 2026-06-27 05:58:46 +00:00
tsconfig.base.json feat: bootstrap toolchain + verified walking-skeleton vertical slice 2026-06-27 19:27:03 +00:00
turbo.json feat: bootstrap toolchain + verified walking-skeleton vertical slice 2026-06-27 19:27:03 +00:00

Dev Platform — Plataforma Interna de Desarrollo

Plataforma interna del equipo que consolida tres pilares: feed de contenido técnico, base de conocimiento curada y aprendizaje + evaluación de habilidades. Filosofía: desarrollar criterio técnico real, no copiar y pegar.

Estado: diseño arquitectónico completo y revisado en frío (11 ADRs + modelo de dominio). Aún no hay código de aplicación — el siguiente paso es el bootstrap del toolchain y el primer slice vertical. Ver Próximos pasos.

Arquitectura (resumen)

Modular Monolith con Clean Architecture interna por módulo. Cinco módulos, cada uno con su dominio, repositorios y una fachada pública (index.ts); aislamiento estricto (sin FK entre schemas, comunicación por eventos / fachadas).

Módulos: content_aggregation, knowledge_base, learning_engine, assessment, identity.

Decisiones clave (detalle en docs/adr/):

  • Grading polimórfico por estrategia; la mayoría de notas oficiales en rieles deterministas, LLM-judge calibrado para el resto.
  • Skill matrix como proyección de un stream de señales (evolucionable a IRT sin migración).
  • Eventos cross-proceso vía outbox transaccional; in-process vía EventBus tipado.
  • Ejecución de código en dos modos: snippets aislados (Judge0) y repo-PR (Forgejo Actions).
  • Single-node VPS; Judge0 endurecido con riesgo residual aceptado y disparador de revisión.

Stack

  • Runtime: Bun · Backend: Elysia + Drizzle + PostgreSQL (schemas por módulo)
  • Tipado cliente: Eden Treaty (acotado por feature, ≤ ~300 rutas/app — ver ADR-0004)
  • Frontend: TanStack Start + Router/Query/Form + React, shadcn/ui + Tailwind, Monaco
  • Auth: Better Auth · Cache/sesiones: Valkey · Búsqueda: Meilisearch
  • Ejecución: Judge0 (snippets) + Forgejo Actions (repo-PR)
  • Monorepo: Turborepo + Bun workspaces · Infra: VPS único, Forgejo + OpenClaw

Layout del repo

dev-platform/
├── docs/                 # documentación de arquitectura (ADRs + modelo de dominio)
│   ├── adr/              # Architecture Decision Records (00010011)
│   └── assessment-domain-model.md
├── apps/
│   ├── backend/          # Elysia + Bun — el modular monolith (módulos Clean Arch)
│   ├── frontend/         # TanStack Start — SSR
│   └── workers/          # cron jobs de Content Aggregation (proceso separado)
└── packages/
    └── shared/           # tipos, contratos de eventos cross-módulo, EventBus, utils (idempotencia)

Documentación

Empieza por docs/adr/README.md — índice de las 11 decisiones de arquitectura. El modelo de dominio de Assessment muestra el patrón de capas (entidades, puertos, eventos) que siguen todos los módulos.

Próximos pasos

  1. Validación en frío de los ADRs.
  2. Bootstrap del toolchain: package.json raíz + turbo.json + tsconfig base con versiones pineadas (Bun, Elysia, TanStack Start, Drizzle).
  3. Spike de TanStack Start (SSR + loader + deploy en OpenClaw).
  4. Primer slice vertical: ruta de onboarding "aprende este proyecto" (dogfooding end-to-end).
  5. Construir set de calibración del juez (Fase 0 del roadmap de contenido — ver ADR-0003/0011).