Image: AI generated
“Ya tenemos 200 endpoints”
Alguien lee el articulo de yongol y pregunta: “Se ve bien, pero nuestro proyecto ya tiene decenas de miles de lineas. Necesitamos escribir SSOT desde cero?”
Empezar desde cero seria ideal, pero en la practica es imposible. Ningun equipo puede detener un servicio en produccion y escribir specs desde cero. No se pueden arrancar los cimientos de una tienda abierta.
Por eso se creo juicer. Exprime SSOT del codigo existente.
Mete la fruta entera, sale jugo
juicer analiza estaticamente el codigo fuente de frameworks web para extraer automaticamente specs declarativas.
juicer scan --openapi ./my-project
Esta sola linea produce una spec OpenAPI 3.0 del codigo existente. Lo que tomaba dias de trabajo manual termina en segundos.
Cero overhead en runtime. Sin instrumentacion. Analisis estatico puro.
Tres frameworks
| Framework | Lenguaje | Extraccion |
|---|---|---|
| Gin | Go | Rutas, bindings, respuestas, middleware |
| NestJS | TypeScript | Decoradores, DTOs, guards, interceptores |
| FastAPI | Python | Rutas, modelos Pydantic, dependencias |
Consolidacion DDL
Cuando se acumulan 50 archivos de migracion, es dificil saber como luce el esquema actual.
juicer ddl ./migrations -o ./schema
Lee todo el historial de migraciones y genera un snapshot limpio CREATE TABLE por tabla.
Scaffolding de consultas sqlc
Extrae esqueletos de consultas SQL del codigo con patron repository.
juicer sql next --repo ./repository --queries ./db/query
juicer sql status
Entrada al pipeline yongol
La salida de juicer es la entrada de yongol. juicer extrae SSOT del codigo existente; yongol valida consistencia y genera codigo. La transicion de brownfield a greenfield ocurre incrementalmente.
Existing code
↓ juicer scan --openapi
↓ juicer ddl
↓ juicer sql next
OpenAPI + DDL + sqlc
↓ yongol validate
↓ yongol generate
SSOT-based codebase
No es obra de cimientos sino refuerzo antisismico. Patron Strangler Fig de Fowler (2004) – no reemplazar legacy de golpe; envolverlo incrementalmente.
Empezar
npx skills add park-jun-woo/juicer
juicer scan --openapi ./my-project
El codigo existente se convierte en jugo.
Code: github.com/park-jun-woo/juicer
Referencias
- Huang, R., Motwani, M., Martinez, I., & Orso, A. (2024). Generating REST API Specifications through Static Analysis. ICSE 2024. ACM
- Perry, D. E. & Wolf, A. L. (1992). Foundations for the Study of Software Architecture. ACM SIGSOFT, 17(4), 40-52. ACM
- Fowler, M. (2004). StranglerFigApplication. Link
- Lercher, A. et al. (2024). Generating Accurate OpenAPI Descriptions from Java Source Code. arXiv
- Chauhan, S. et al. (2026). OpenAI for OpenAPI. arXiv
- De Silva, L. & Balasubramaniam, D. (2012). Controlling software architecture erosion. JSS, 85(1). ScienceDirect
- Fritzsch, J. et al. (2019). Microservices Migration in Industry. IEEE ICSME. arXiv
- Curino, C. A. et al. (2008). Graceful database schema evolution. VLDB, 1(1). VLDB
- Nghiem, D. et al. (2023). REST API Design and Specification Practices. IEEE VL/HCC. IEEE
Articulos relacionados
- yongol – La quilla del SaaS de codificacion con IA – Herramienta que valida y genera codigo del SSOT extraido por juicer.
- Ratchet Pattern – Como hacer que los agentes terminen el trabajo – Trasfondo del flujo ratchet de
juicer sql next. - Reins Engineering – IA con riendas – El marco de ingenieria al que pertenece juicer.