#:schema https://raw.githubusercontent.com/YunoHost/apps/master/schemas/manifest.v2.schema.json packaging_format = 2 id = "veyelalwa" name = "Vèy Lalwa" description.en = "Legislative watch on French law and its effects on the freedoms of individuals, associations and businesses, with a Guadeloupe focus" description.fr = "Veille législative sur le droit français et ses effets sur les libertés des individus, des associations et des entreprises, avec un zoom Guadeloupe" version = "1.0.1~ynh1" maintainers = [] [upstream] license = "AGPL-3.0-or-later" website = "https://o-k-i.net" code = "https://labola.o-k-i.net/cyber-mawonaj/veye-lalwa" admindoc = "https://labola.o-k-i.net/cyber-mawonaj/veye-lalwa/src/branch/main/README-pipeline.md" fund = "https://liberapay.com/OKI/donate/" [integration] yunohost = ">= 12.1" helpers_version = "2.1" architectures = "all" multi_instance = true ldap = "not_relevant" sso = "not_relevant" # L'installation construit l'application web (npm) et l'environnement Python du # pipeline, puis remplit la base depuis le corpus de recherche embarqué. disk = "700M" ram.build = "1G" # À l'exécution : Node en veille socket-like via Restart, plus un passage de # collecte deux fois par jour. ram.runtime = "200M" [install] [install.domain] type = "domain" # Pas de question « path » : l'application occupe la racine d'un domaine. # Les liens internes sont absolus (/recherche, /textes/…) et SvelteKit # exigerait de recompiler avec `paths.base` pour tenir sur un sous-chemin. # Mieux vaut une contrainte annoncée qu'un sous-chemin à moitié fonctionnel. [install.init_main_permission] type = "group" default = "visitors" # Une veille législative n'a d'intérêt que publique : c'est un travail # d'information citoyenne, pas un outil interne. [install.legifrance_client_id] ask.en = "Légifrance API client ID (PISTE)" ask.fr = "Identifiant client de l'API Légifrance (PISTE)" help.en = "From https://piste.gouv.fr — declare an application AND subscribe it to the « Légifrance » API. Use the OAuth pair (Client ID / Client secret), NOT the API key, which is rejected by the token endpoint. Leave empty: the pipeline then falls back on the Sénat and Conseil constitutionnel, which is enough to track promulgations and constitutional decisions." help.fr = "Depuis https://piste.gouv.fr — déclarez une application ET abonnez-la à l'API « Légifrance ». Utilisez le couple OAuth (Client ID / Client secret), PAS la clé d'API, refusée par le point d'accès du jeton. Laissez vide : le pipeline se replie alors sur le Sénat et le Conseil constitutionnel, ce qui suffit à suivre les promulgations et les décisions." type = "string" optional = true [install.legifrance_client_secret] ask.en = "Légifrance API client secret (PISTE)" ask.fr = "Secret client de l'API Légifrance (PISTE)" help.en = "The « Client secret » shown next to the Client ID. Leave empty if you left the ID empty." help.fr = "Le « Client secret » affiché à côté du Client ID. Laissez vide si vous avez laissé l'identifiant vide." type = "password" optional = true [install.contact_email] ask.en = "Contact address for the collectors' user-agent" ask.fr = "Adresse de contact pour le user-agent des collecteurs" help.en = "Sent with every request to Légifrance, the Sénat and the Conseil constitutionnel so their administrators can reach you. Presenting oneself honestly is the price of scraping public services." help.fr = "Envoyée à chaque requête vers Légifrance, le Sénat et le Conseil constitutionnel, pour que leurs administrateurs puissent vous joindre. Se présenter honnêtement est la contrepartie de l'interrogation de services publics." type = "email" optional = true [resources] [resources.sources.main] url = "https://labola.o-k-i.net/cyber-mawonaj/veye-lalwa/archive/v1.0.1.tar.gz" sha256 = "632e534fbcda5f5ebe771b9383f3807b8bf1a5a8e0fb24f7a22b77772fe75a94" autoupdate.strategy = "latest_forgejo_tag" [resources.system_user] [resources.install_dir] # Répertoire persistant : la base SQLite, le cache HTTP et l'export JSON y # vivent. Sans lui, `ynh_setup_source --full_replace` effacerait à chaque # mise à jour tout l'historique de veille accumulé. [resources.data_dir] [resources.permissions] main.url = "/" [resources.ports] [resources.apt] # sqlite3 : diagnostic et sauvegarde à chaud (.backup). # python3-venv : environnement du pipeline. # build-essential + python3-dev : repli de compilation de better-sqlite3 # quand aucun binaire précompilé ne correspond à l'architecture. packages = "ca-certificates, sqlite3, python3, python3-venv, python3-dev, build-essential" [resources.nodejs] version = "22"