{"id":42080338,"url":"https://github.com/gloggi/qualix","last_synced_at":"2026-01-26T09:45:43.556Z","repository":{"id":38109368,"uuid":"174826431","full_name":"gloggi/qualix","owner":"gloggi","description":"Webapp zur Erfassung und Verwaltung von qualifikationsrelevanten Beobachtungen und Rückmeldungen in J+S-Ausbildungskursen der Pfadi.","archived":false,"fork":false,"pushed_at":"2025-08-04T04:37:47.000Z","size":5846,"stargazers_count":21,"open_issues_count":74,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-08-04T07:32:58.547Z","etag":null,"topics":["hacktoberfest","laravel","php","scouts","vuejs"],"latest_commit_sha":null,"homepage":"https://qualix.flamberg.ch","language":"PHP","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/gloggi.png","metadata":{"files":{"readme":"README.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}},"created_at":"2019-03-10T13:20:32.000Z","updated_at":"2025-08-03T07:20:33.000Z","dependencies_parsed_at":"2023-12-15T14:44:05.459Z","dependency_job_id":"95708c88-f8b8-4fcc-86ed-14751b379502","html_url":"https://github.com/gloggi/qualix","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gloggi/qualix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gloggi%2Fqualix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gloggi%2Fqualix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gloggi%2Fqualix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gloggi%2Fqualix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gloggi","download_url":"https://codeload.github.com/gloggi/qualix/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gloggi%2Fqualix/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28773195,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T09:42:00.929Z","status":"ssl_error","status_checked_at":"2026-01-26T09:42:00.591Z","response_time":59,"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":["hacktoberfest","laravel","php","scouts","vuejs"],"created_at":"2026-01-26T09:45:42.712Z","updated_at":"2026-01-26T09:45:43.544Z","avatar_url":"https://github.com/gloggi.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Qualix\n\u003e was gaffsch?\n\nWebapp zur Erfassung und Verwaltung von qualifikationsrelevanten Beobachtungen und Rückmeldungen in J+S-Ausbildungskursen der Pfadi.\n\nEine Live-Version ist unter \u003chttps://qualix.flamberg.ch\u003e verfügbar.\n\nWir benützen [Phrase](https://phrase.com), um Qualix auch in anderen Sprachen anzubieten.\n\n## Lokale Installation\n\nQualix ist ein PHP-Projekt basierend auf dem Framework Laravel. Wir verwenden [docker compose](https://docs.docker.com/compose/install/) um es lokal zur Entwicklung laufen zu lassen. Wenn du auf Linux arbeitest, musst du zuerst noch separat [Docker für Linux](https://docs.docker.com/install/#server) installieren.\n\nUm Qualix laufen zu lassen, musst du nur den Quellcode mit Git herunterladen und die Container starten:\n```\ngit clone https://github.com/gloggi/qualix.git\ncd qualix\ndocker compose up\n```\n\nWenn sich der Output beruhigt hat (wenn im Output mehrere Zeilen mit `qualix-npm` und `[emitted]` stehen), kannst du dein lokales Qualix unter \u003chttp://localhost\u003e und das Datenbank-Tool phpMyAdmin unter \u003chttp://localhost:8081\u003e aufrufen.\n\nWenn du E-Mails in deiner Qualix-Kopie auslöst (zum Beispiel beim Passwort-Reset oder wenn du jemanden in einen Kurs einlädst), werden diese nicht wirklich abgesendet, sondern sie landen im Mailcatcher. Du kannst diese Mails unter \u003chttp://localhost:1080\u003e ansehen.\n\n### Composer, artisan, etc. im Container\n\nDa alles was mit Qualix zu tun hat, inklusive PHP, Composer, artisan, etc. nur im Container läuft, musst du entsprechende Befehle auch in den Container hinein absetzen. Hier ein Paar Beispiele:\n\n```\ndocker compose exec qualix composer update\ndocker compose exec qualix php artisan tinker\ndocker compose exec qualix php -v\n```\n\n### Tests laufen lassen\n\nFür sämtliche Tests müssen zuerst die Container laufen (`docker compose up`).\n\n#### PHP Unit Tests\n\nVor den Unit Tests musst du einmalig die gecachete Config löschen:\n```\ndocker compose exec qualix php artisan config:clear --env=testing\n```\n\nDanach kannst du die Unit Tests mit PHPUnit laufen lassen:\n```\n# Alle Unit Tests\ndocker compose exec qualix vendor/bin/phpunit\n\n# Nur Unit Tests die \"Course\" im Namen haben\ndocker compose exec qualix vendor/bin/phpunit --filter=Course\n```\n\n#### Frontend Tests\n\nDie Frontend Tests kannst du wie folgt laufen lassen:\n```\n# Alle Frontend Tests\ndocker compose exec node npm run test\n\n# Ein spezifischer Test\ndocker compose exec node npm run test -- ObservationList\n```\n\n#### End-to-end Tests\n\nDu kannst die E2E-Tests mit Cypress headless (ohne sichtbares Browserfenster) laufen lassen:\n```\ndocker compose run e2e run\n```\n\nOder du kannst das grafische Tool von Cypress vom Container aus auf deinem Mac- oder Linux-Computer öffnen:\n```\n# Nur auf Mac OS: xhost installieren, danach den Computer neu starten\nbrew cask install xquartz\n\n# Dem Container erlauben, auf dem Host Fenster zu öffnen (nur einmal pro Computer-Neustart nötig)\nxhost local:root\n\n# Cypress öffnen\ndocker compose run e2e open\n```\n\n## Produktive Installation\n\n\u003e Qualix basiert auf Laravel 11 und benötigt deshalb eine PHP Version \u003e= 8.2.0\n\n1. **Code herunterladen**: `git clone https://github.com/gloggi/qualix.git \u0026\u0026 cd qualix`\n2. **Server-Einstellungen**: Eine Kopie von .env.example namens .env erstellen und die Angaben darin ergänzen. Zum Beispiel so (kritische Angaben sind mit `\u003csnip\u003e` zensiert):\n```\nAPP_NAME=Qualix\nAPP_ENV=production\nAPP_KEY=\nAPP_DEBUG=false\nAPP_URL=https://qualix.flamberg.ch\n# Set your own contact\n#APP_CONTACT_LINK=mailto:info@qualix.flamberg.ch\n#APP_CONTACT_TEXT=\"Kontaktiere Qualix\"\n\nLOG_CHANNEL=stack\n\nDB_CONNECTION=mysql\nDB_HOST=\u003csnip\u003e\nDB_PORT=3306\nDB_DATABASE=\u003csnip\u003e\nDB_USERNAME=\u003csnip\u003e\nDB_PASSWORD=\u003csnip\u003e\n\nBROADCAST_DRIVER=log\nCACHE_DRIVER=file\nQUEUE_CONNECTION=sync\nSESSION_DRIVER=file\nSESSION_LIFETIME=120\n\nMAIL_MAILER=smtp\nMAIL_HOST=\u003csnip\u003e\nMAIL_PORT=\u003csnip\u003e\nMAIL_USERNAME=\u003csnip\u003e\nMAIL_PASSWORD=\u003csnip\u003e\nMAIL_ENCRYPTION=SSL\n\nHITOBITO_BASE_URL=https://db.scout.ch\nHITOBITO_CLIENT_UID=\u003csnip\u003e\nHITOBITO_CLIENT_SECRET=\u003csnip\u003e\nHITOBITO_CALLBACK_URI=https://qualix.flamberg.ch/login/hitobito/callback\n\n# Collaboration in the feedback editor via WebRTC\nCOLLABORATION_ENABLED=true\nCOLLABORATION_SIGNALING_SERVERS=\"wss://signaling.yjs.dev wss://y-webrtc-signaling-eu.herokuapp.com wss://y-webrtc-signaling-us.herokuapp.com\"\n\nSENTRY_LARAVEL_DSN=\u003csnip\u003e\nSENTRY_CSP_REPORT_URI=\u003csnip\u003e\nMIX_SENTRY_VUE_DSN=\u003csnip\u003e\n```\n\u003e Für die `HITOBITO_*` Einstellungen, siehe weiter unten.\n3. **Backend-Dependencies installieren und `APP_KEY` generieren**: `docker compose run --entrypoint \"/bin/sh -c 'composer install --no-dev \u0026\u0026 php artisan key:generate'\" qualix`\n4. **Frontend-Code builden**: `docker compose run --entrypoint \"/bin/sh -c 'npm install \u0026\u0026 npm run prod'\" node`\n5. **Optimierung (optional)**: `docker compose run --entrypoint \"composer install --optimize-autoloader --no-dev\" qualix`\n    Siehe [hier](https://laravel.com/docs/9.x/deployment#optimization) für weitere Erklärungen.\n6. **Auf den Webhost hochladen**: Z.B. mit FTP alles (Ordner und Dateien) ausser .git, cypress, node_modules und tests hochladen\n7. **Mit SSH auf den Server einloggen**, da die folgenden Befehle in der finalen Umgebung ausgeführt werden müssen\n8. **Optimierung (optional)**: `php artisan config:cache \u0026\u0026 php artisan route:cache \u0026\u0026 php artisan view:cache`  \n    Siehe [hier](https://laravel.com/docs/9.x/deployment#optimization) für weitere Erklärungen.\n9. **Datenbank-Tabellen einrichten**: `php artisan migrate`\n10. **Laravel Storage-Link einrichten**: `php artisan storage:link`\n\n### Hitobito / MiData Anbindung\n\nUm den Login via MiData (oder eine andere hitobito-Instanz) zu ermöglichen, muss man Qualix auf hitobito als erlaubte OAuth-Applikation registrieren. Dafür muss der jeweilige Dachverband kontaktiert werden. Bei der MiData stellt die PBS dafür ein [Antragsformular](https://forms.office.com/Pages/ResponsePage.aspx?id=iq6Fcs2Xq0m9ordFTZ0Fa8gnQG-i3p9KkbcKGL9nFhtUMEpMQkYwMzQxNUVEWEIxRTNWTDhPMDVEMS4u) zu Verfügung. Der Dachverband (z.B. die PBS) kann dann die Werte für die `HITOBITO_*` Variabeln in der .env-Datei liefern.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgloggi%2Fqualix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgloggi%2Fqualix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgloggi%2Fqualix/lists"}