{"id":29350304,"url":"https://github.com/vegito-app/local","last_synced_at":"2026-04-07T20:01:58.333Z","repository":{"id":302587513,"uuid":"1011146913","full_name":"vegito-app/local","owner":"vegito-app","description":"Portable Docker + GPU Based Development Environment","archived":false,"fork":false,"pushed_at":"2026-04-03T19:26:31.000Z","size":20675,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T21:46:34.905Z","etag":null,"topics":["android-studio","clarinet","docker","firebase-emulators","gpu","nvidia","robotframework","vault","xpra"],"latest_commit_sha":null,"homepage":"","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vegito-app.png","metadata":{"files":{"readme":"README.fr.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-30T11:24:57.000Z","updated_at":"2026-04-03T19:26:34.000Z","dependencies_parsed_at":"2025-11-27T19:18:46.793Z","dependency_job_id":null,"html_url":"https://github.com/vegito-app/local","commit_stats":null,"previous_names":["vegito-app/devlocal-docker","vegito-app/baremetal-devstack-docker","vegito-app/local"],"tags_count":125,"template":false,"template_full_name":null,"purl":"pkg:github/vegito-app/local","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vegito-app%2Flocal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vegito-app%2Flocal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vegito-app%2Flocal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vegito-app%2Flocal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vegito-app","download_url":"https://codeload.github.com/vegito-app/local/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vegito-app%2Flocal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31526666,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-studio","clarinet","docker","firebase-emulators","gpu","nvidia","robotframework","vault","xpra"],"created_at":"2025-07-08T23:00:30.231Z","updated_at":"2026-04-07T20:01:58.313Z","avatar_url":"https://github.com/vegito-app.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Release Version](https://img.shields.io/github/v/release/vegito-app/local?sort=semver)\n![CI](https://github.com/vegito-app/local/actions/workflows/application-release.yml/badge.svg?branch=main)\n\n# local\n\n\u003c!-- ![Logo](./assets/images/logo-1.png) --\u003e\n\n![image](https://github.com/user-attachments/assets/2b24c0b6-d77d-45d1-a16d-e8b2b134601b)\n\n**Environnement DevContainer portable pour Vegito**\n\nCe dépôt fournit un environnement de développement conteneurisé et accéléré par GPU, conçu pour le projet Vegito.  \nIl inclut une configuration prête à l’emploi pour Android Studio, les émulateurs Firebase, Clarinet (smart contracts Stacks), Vault (en mode dev), les outils GPU, et bien plus — le tout optimisé pour un usage en DevContainer (VS Code, Codespaces, etc.).\n\n\u003e 🔧 Actuellement supporté : **GPUs NVIDIA**  \n\u003e 💡 Le support des **GPU AMD** est bienvenu — vos PR sont les bienvenues !  \n\u003e 🧠 Pensé pour la reproductibilité, la portabilité et l’extensibilité.\n\n---\n\n## ⚙️ Fonctionnalités incluses\n\n- Android Studio avec support de l’émulateur\n- Emulateurs Firebase\n- Vault (mode dev)\n- Clarinet (Stacks)\n- Tests E2E avec Robot Framework\n- Intégration GCloud et builders personnalisés\n- Accès graphique headless via Xpra (HTML5)\n- GPU passthrough avec OpenGL / CUDA / Vulkan\n- Compatible DevContainers / Codespaces\n\n---\n\n## 🚀 Démarrage rapide\n\n```bash\nmake dev\n```\n\nCela démarre tous les services définis dans les fichiers `docker-compose`, incluant :\n\n- le conteneur principal `dev`,\n- le backend Go,\n- Firebase Emulators,\n- Clarinet,\n- Android Studio,\n- Vault (mode dev).\n\n---\n\n## 📦 Structure recommandée\n\nIntégrez ce dépôt comme un sous-dossier `local/` dans votre projet avec `git subtree` :\n\n```bash\ngit subtree add --prefix local https://github.com/vegito-app/local.git main --squash\n```\n\nVotre arborescence projet ressemblera à :\n\n```\n.\n├── Makefile\n├── README.md\n├── application/\n├── local/   \u003c- contient le DevContainer complet\n```\n\nLe `Makefile` principal inclut `local/local.mk` :\n\n```makefile\ninclude local/local.mk\n```\n\n---\n\n## 🧰 Services disponibles\n\nUtilisez `make help` pour afficher la liste des commandes disponibles.\n\nExemples :\n\n```bash\nmake android-studio-container-start\nmake firebase-emulators-container-sh\nmake vault-dev-container-stop\n```\n\n---\n\n## 🧠 Stack technique\n\n| Couche       | Contenu                                       |\n| ------------ | --------------------------------------------- |\n| 🧰 Base      | Debian 12 + Docker + NVIDIA Container Toolkit |\n| 📦 GPU       | Accès GPU via NVIDIA (passthrough)            |\n| 📱 Android   | SDK Android, AVD, Flutter SDK                 |\n| 🔐 Vault     | Mode dev ou cluster                           |\n| 💬 SSR       | V8Go + React SSR (avec Google Maps)           |\n| 🌐 Accès GUI | Xpra (Xorg + Openbox)                         |\n| 🧪 CI/E2E    | Tests avec adb, emulator, Robot Framework     |\n\n---\n\n## 🖥️ Accélération GPU\n\nVoir la documentation complète ici :  \n[GPU Docker pour Debian + NVIDIA](docker/gpu/README.md)\n\n```bash\nDISPLAY=:1 glxinfo | grep -E \"renderer|OpenGL\"\n```\n\n---\n\n## 🧪 Cas d’usage\n\n- Tests Flutter avec Google Maps et WebView\n- Rendu graphique et media dans les émulateurs\n- Tests d’inférence ML dans un environnement Docker GPU\n- Tests SSR avec V8Go et puppeteer\n- Intégration avec Android Studio via navigateur\n\n---\n\n## 🔐 Authentification GCP\n\nPour interagir avec Firebase, Terraform, etc. :\n\n```bash\nmake gcloud-auth-login-sa\n```\n\n---\n\n## 🔧 Setup rapide\n\n```bash\nmake local-android-studio-image-pull\nmake local-android-studio-container-sh\n```\n\nPuis dans le conteneur :\n\n```bash\ndisplay-start-xpra.sh\n```\n\nEt ouvrez dans votre navigateur :  \nhttp://localhost:5900/\n\n---\n\n## 🏗️ Organisation par couches\n\n### 1. **CI GitHub (niveau le plus haut)**\n\nChaque dépôt applicatif contient un workflow `application-release.yml` basé sur un template générique partagé `application-release-template.yml`.  \nCe pipeline :\n\n- compile l’application (mobile, backend, etc.)\n- génère les artefacts (APK, AAB, images Docker…)\n- publie dans un bucket GCS\n- rend accessible la version via : [https://release.vegito.app](https://release.vegito.app)\n\nIl déclenche des commandes `make` spécifiques à chaque projet.\n\n### 2. **Makefile modulaire**\n\nLe `Makefile` principal inclut dynamiquement tous les fichiers `*.mk` des sous-modules (`backend/`, `mobile/`, `frontend/`, etc.).  \nChaque module définit ses propres cibles via des fichiers comme :\n\n```\nmobile/flutter.mk\nbackend/backend.mk\n```\n\nCela permet :\n\n- une validation locale des builds\n- une factorisation des commandes pour la CI et les devs\n\n### 3. **Docker (build \u0026 run)**\n\nLes commandes Make utilisent :\n\n- `docker buildx bake` avec des `docker-bake.hcl` spécifiques\n- `docker compose` avec des `docker-compose.yml` propres à chaque module\n\nCe système permet de :\n\n- construire des images versionnées\n- exécuter tous les services dans un réseau Docker isolé\n\n### 4. **Environnement local et CI unifiés**\n\nGrâce à DevContainer, l’environnement utilisé localement est **identique** à celui de la CI.  \nIl permet notamment :\n\n- le debug des services localement (Go, Flutter, Firebase, etc.)\n- le test fonctionnel via RobotFramework\n- l’utilisation GPU dans un conteneur\n\n---\n\n## 🗂️ Ajout d’une nouvelle application\n\nPour qu’un dépôt soit compatible avec la CI générique :\n\n1. Créer un `Makefile` à la racine\n2. Exposer les cibles attendues par la CI (`make build`, `make test`, etc.)\n3. Structurer le projet par modules : `backend/`, `frontend/`, `mobile/`, `tests/`, etc.\n4. Ajouter les `Dockerfile`, `docker-compose.yml` et `docker-bake.hcl` nécessaires\n\n---\n\n## 🧬 Schéma d’architecture\n\n```mermaid\ngraph TD\n  A[Dev / CI GitHub] --\u003e B[Workflow application-release.yml]\n  B --\u003e C[Commandes make]\n  C --\u003e D[Makefile principal]\n  D --\u003e E[Modules *.mk]\n  C --\u003e F[docker buildx bake]\n  C --\u003e G[docker compose up]\n  F --\u003e H[Dockerfile + docker-bake.hcl]\n  G --\u003e I[docker-compose.yml]\n  H --\u003e J[Image Docker versionnée]\n  I --\u003e K[Conteneurs pour tests / builds]\n  K --\u003e L[Artifacts versionnés : APK, AAB, Images...]\n  L --\u003e M[Bucket GCS + Page releases]\n```\n\n---\n\n## 📘 Conclusion\n\nCe système CI/Makefile/Docker modulaire garantit :\n\n- une forte **portabilité** (local/dev/CI identiques)\n- une **extensibilité** aisée (ajout de modules ou dépôts)\n- une **reproductibilité** totale des builds\n\nIl peut être repris tel quel pour tout projet Flutter/Go basé sur des conteneurs et des workflows GitHub Actions.\n\n## 💡 Bonnes pratiques\n\n- Ce dépôt peut être utilisé comme **template public** pour projets Flutter + Go.\n- Tous les scripts Makefile sont modulaire et extensibles.\n- Vous pouvez proposer des PR ou utiliser cet environnement dans vos CI/CD.\n\n---\n\n## 📜 Licence\n\nMIT — utilisez, modifiez, améliorez librement.  \nVoir le fichier [LICENSE](./LICENSE).\n\n---\n\n# 🧠 Architecture CI/CD modulaire de Vegito\n\nLe projet **Vegito** repose sur une superposition cohérente de briques technologiques :  \nCI GitHub → Makefile → Docker → Code source modulaire.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvegito-app%2Flocal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvegito-app%2Flocal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvegito-app%2Flocal/lists"}