# Syn Framework web minimaliste basé sur JavaScript vanilla et les Web Components. Routage hash-based, composants déclarés dans `components.yml`, build via `build.sh`. ## Structure d'un projet ``` ├── sources/ # Code servi — déployer ce dossier │ ├── index.html │ ├── favicon.svg │ ├── config.json # Config runtime (api_url, tokens…) │ ├── core/ # Framework core │ ├── components/ # Téléchargés par build.sh (gitignored) │ ├── vendor/ # Libs tierces (gitignored) │ └── pages/ │ └── / # Une page = un dossier ├── components.yml # Source de vérité └── build.sh # Télécharge les remotes + génère les JSON ``` ## Démarrer un projet ```bash cp -r template/ mon-projet/ cd mon-projet/ ./build.sh python3 -m http.server 8000 --directory sources/ ``` ## Ajouter une page 1. Créer `sources/pages//` avec : - `manifest.json` — `{ "route", "label", "icon" }` - `index.html` — fragment HTML (ex. ``) - `.js` — `customElements.define` + `export function init(main) {}` - `.css` — styles scopés à la page (optionnel) 2. Déclarer sous `local_pages:` dans `components.yml` 3. Ajouter la route à `menu:` si visible dans la nav 4. `./build.sh` ## Ajouter un composant 1. Déclarer sous `components:` dans `components.yml` : ```yaml components: - name: mon-composant repo: https://git.example.com/org/mon-composant ref: main ``` 2. `./build.sh` — télécharge dans `sources/components/mon-composant/` ## build.sh ``` ./build.sh # build complet ./build.sh --check # valide le manifest sans télécharger ``` Dépendances : `yq` (mikefarah v4), `jq`, `curl`. Variable optionnelle : `GIT_TOKEN` pour les repos privés.