个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Pair-aidance, mutual help and human/AI cooperation platform.
This repository is under active cleaning for public publication. Internal documentation, agent workflows, tests and operational tooling have been archived locally and are not published here.
Public repository — progressive cleanup phase.
Full product documentation is not yet published here.
After running php artisan migrate --seed, the following demo accounts are available for local development:
All demo emails use the reserved .test domain and ar查看完整 README ↗Pair-aidance, mutual help and human/AI cooperation platform.
This repository is under active cleaning for public publication. Internal documentation, agent workflows, tests and operational tooling have been archived locally and are not published here.
composer install
npm install && npm run build
cp .env.example .env
php artisan key:generate
touch database/database.sqlite
php artisan migrate --seed
php artisan storage:link
php artisan serve
Public repository — progressive cleanup phase. Full product documentation is not yet published here.
After running php artisan migrate --seed, the following demo accounts are available for local development:
| Name | Organization | Role | Password | |
|---|---|---|---|---|
[email protected] | Demo Admin | Main | Super Admin | password |
[email protected] | Demo Main Member 1 | Main | Member | password |
[email protected] | Demo Main Member 2 | Main | Member | password |
[email protected] | Demo LaunchPals Member 1 | LaunchPals | Admin | password |
[email protected] | Demo LaunchPals Member 2 | LaunchPals | Member | password |
| Local Apache server (as an example for testing) : https://test.laravel |
| Property | Main | LaunchPals |
|---|---|---|
| Slug | main | launchpals |
| Platform name | BouclePro | LaunchPals |
| Locale | fr | en |
| Loop mode | multi (multiple loops) | mono (single loop) |
| Primary loop | — | LaunchPalsCircle |
| Default org | Yes | No |
| Admin | [email protected] | [email protected] |
| Demo language | French | English |
All demo emails use the reserved .test domain and are safe for public documentation.
Dashboard seeders are skipped in production environments (app()->environment('production')).
Pour reproduire un bug de production, auditer des données réelles ou répéter une release, on travaille sur un jumeau local de la PROD — jamais sur la PROD.
PROD ──(pg_dump lecture seule)──▶ baseline locale ──(TEMPLATE)──▶ bouclepro_prod_work
aucune écriture neutralisée, immuable jetable, recréable
pg_dump en lecture seule.remember_token, clés IA, jetons d'invitation). Elle est scellée IS_TEMPLATE = true avec CONNECTION LIMIT = 0 : elle ne sert que de modèle, on ne travaille jamais dessus.bouclepro_prod_work, jetable et recréable en quelques secondes.bouclepro_prod_work.Organization = Tenant reste la règle : le seed QA n'alimente que main et launchpals et ne touche aucune autre Organization.Les empreintes de mot de passe de la PROD sont conservées : personne ne connaît les mots de passe des comptes réels. C'est précisément pourquoi l'étape QA est nécessaire pour ouvrir une session sur le jumeau.
1. Confirmer la version déployée en PROD. Elle est affichée dans le pied de page du site de production. C'est elle qui nommera la baseline — pas la version locale de develop, qui peut être plus récente.
2. Produire un dump PROD frais, en lecture seule, avec un chemin explicite :
ai/scripts/pg-dump.sh prod-dump _local/sync_prod/dumps/production_<version>_<horodatage>.dump
Toujours passer le chemin : la destination par défaut n'est pas l'emplacement canonique.
3. Choisir une baseline, ou en créer une. Lister celles qui existent déjà :
psql -h 127.0.0.1 -U bouclepro -d postgres \
-c "SELECT datname, datistemplate, datconnlimit FROM pg_database
WHERE datname LIKE 'bouclepro_prod_baseline_%' ORDER BY datname;"
Pour en créer une depuis le dump — --dry-run d'abord, puis la même commande sans :
export DATABASE_TARGET=bouclepro_prod_baseline_<version_prod>_<AAAAMMJJ>
./_local/sync_prod/create-prod-baseline.sh \
--dump _local/sync_prod/dumps/<le dump>.dump \
--name "$DATABASE_TARGET" \
--dry-run
DATABASE_TARGET doit valoir exactement --name. Ne pas utiliser --yes : la confirmation demande de saisir le nom de la base, et c'est la garde.
4. Recréer le jumeau, BASE= toujours explicite :
BASE=<la baseline choisie> ./_local/sync_prod/reset-prod-work.sh
5. Vérifier les migrations, et ne migrer que s'il y en a en attente :
php artisan migrate:status --env=prodwork
php artisan migrate --env=prodwork # seulement si Pending > 0
6. Injecter les comptes QA — dans le jumeau uniquement :
php artisan db:seed --class=UserSeeder --env=prodwork
7. Vérifier les comptes QA, en lecture seule : les cinq comptes du tableau Seed Data présents, non bannis, dans les Organizations attendues. Un seeder qui sort en succès ne garantit pas un compte connectable — UserSeeder utilise firstOrCreate, donc il n'écrase rien si l'email existe déjà.
8. Lancer le rehearsal :
./_local/sync_prod/rehearsal-serve.sh # http://127.0.0.1:8097
9. Tester les connexions et l'isolation tenant : un membre d'une Organization ne doit atteindre aucune surface d'une autre.
reset-prod-work.sh sans BASE= : son défaut historique pointe encore vers une baseline ancienne, et le jumeau obtenu passerait pour un jumeau courant.develop soit plus récent est normal : c'est migrate:status qui tranche.bouclepro (environnement de développement), ni sur bouclepro_test./login n'est pas forcément un défaut : vérifier banned_at avant de conclure.APP_URL et le port servi plutôt que du produit. Le script le rappelle au démarrage.Ce workflow s'appuie sur deux répertoires volontairement laissés hors du dépôt — non suivis par git, absents du dépôt public :
_local/sync_prod/ — outils de référence du workflow PROD → LOCAL (create-prod-baseline.sh, reset-prod-work.sh, rehearsal-serve.sh), ainsi que les dumps, rapports et journaux ;ai/scripts/ — outillage d'exploitation, dont pg-dump.sh.Les chemins cités sont relatifs à la racine du dépôt. Les identifiants de production vivent hors du dépôt et ne sont jamais affichés.
pg-dump.sh mirror-import, prod-mirror, import, reset — ces sous-commandes écrasent la base de développement locale ; elles relèvent de l'ancien modèle « restauration par-dessus bouclepro », remplacé par le couple baseline / jumeau.QaAccountsSeeder — déprécié, délègue à UserSeeder.LegacyDataOrganizationSeeder — hors de ce workflow : il réécrit organization_id en masse sur plusieurs tables.BouclePro Core is licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later).
Commercial licenses, plugin exceptions, and integration exceptions may be discussed on a case-by-case basis.
Existing third-party dependencies keep their own licenses.