Documentación oficial

Estructura de proyecto

Referencia técnica de Estructura de proyecto — Joss language and Joss Red ecosystem.

Estructura de proyectos

Índice

Web

joss new web mi_app y joss new mi_app crean la plantilla web real del paquete pkg/template/files.

Las cuatro variantes de joss new se validan en CI: web y consola deben parsear y analizar sin errores; consola además debe ejecutar; package y plugin deben compilar a un JP v2 firmado, verificable, con bytecode decodificable e índice de símbolos.

mi_app/
├── main.joss
├── env.joss
├── routes.joss
├── api.joss
├── joss.yaml
├── AGENTS.md                 # Guía y sintaxis para asistentes de IA
├── config/
├── app/
│   ├── controllers/          # Subcarpetas por dominio (web/, auth/, api/)
│   │   ├── web/
│   │   ├── auth/
│   │   └── api/
│   ├── models/               # Modelos GranDB (auth/, etc.)
│   │   └── auth/
│   ├── services/             # Servicios en segundo plano e integraciones
│   ├── middleware/           # Middleware de peticiones
│   ├── libs/                # Creado por la plantilla, no precargado actualmente por run
│   └── database/migrations/
├── assets/
├── public/
├── storage/
├── package.json
└── README.md

La plantilla también puede incluir rutas, archivos de autenticación, recursos frontend y colecciones de API. La lista exacta puede crecer; el generador y sus pruebas son la referencia ejecutable.

main.joss es obligatorio para joss server start. env.joss no es código Joss y no debe ejecutarse con joss run.

joss analyze descubre recursivamente la entrada y app/. Al ejecutar, la precarga runtime se limita a controllers, models, middleware, services, database, jobs, tasks y providers. Aunque la plantilla crea app/libs, esa carpeta no se precarga hoy. Colocar allí una declaración puede pasar el análisis y faltar en ejecución; mueve el código a un dominio cargado mientras se unifican ambas listas.

Consola

joss new console mi_cli crea main.joss, configuración, controladores, modelos, librerías y migraciones; no crea rutas, vistas, public/ ni assets web.

cd mi_cli
joss run main.joss

Paquete

joss new package mi_plugin crea:

mi_plugin/
├── joss.yaml
├── README.md
└── src/plugin.joss

Compílalo con joss build package .. Consulta Plugins.

Convenciones efectivas

  • Controladores: app/controllers/NameController.joss.
  • Modelos: app/models/Name.joss y normalmente extends GranDB.
  • Vistas: app/views/name.joss.html o .html.
  • Migraciones: timestamp, nombre descriptivo y extensión .joss.
  • Sintaxis generada: func, :: para estáticos y -> para instancias.

Los generadores se validan con una prueba que crea proyectos web y consola y pasa todos sus archivos .joss por el parser.