juicer – Exprime el SSOT del codigo existente 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

FrameworkLenguajeExtraccion
GinGoRutas, bindings, respuestas, middleware
NestJSTypeScriptDecoradores, DTOs, guards, interceptores
FastAPIPythonRutas, 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