Estructura de proyectos
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.jossy normalmenteextends GranDB. - Vistas:
app/views/name.joss.htmlo.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.