正在載入完整 README。 以下為已儲存的摘錄。
myclub app | the next generation 🏆 myclub ist die moderne Lösung für Vereinsarbeit, die wieder Freude macht. Mit myclub wird aus Pflicht wieder Passion. Digital. Einfach. Gemeinsam. Wir bieten eine zentrale Plattform für modernes Vereinsmanagement, die alle Vereinsprozesse in einer einzigen App vereint. Mit myclub organisierst du Trainings, Spiele, Events und vieles mehr – flexibel, intuitiv und jederzeit verfügbar. Wenige Klicks. Volle Kontrolle. Maximaler Überblick.檢視完整 README ↗
myclub ist die moderne Lösung für Vereinsarbeit, die wieder Freude macht. Mit myclub wird aus Pflicht wieder Passion. Digital. Einfach. Gemeinsam.
Wir bieten eine zentrale Plattform für modernes Vereinsmanagement, die alle Vereinsprozesse in einer einzigen App vereint. Mit myclub organisierst du Trainings, Spiele, Events und vieles mehr – flexibel, intuitiv und jederzeit verfügbar. Wenige Klicks. Volle Kontrolle. Maximaler Überblick.
🏆 Meisterschafts-Modul: CHF 5.90/Monat
🤝 Helfer-Modul: CHF 4.90/Monat
🚀 myclub PRO: CHF 7.90/Monat
Unsere Strategie basiert auf fünf Hauptprinzipien:
Unsere Mission ist es, den administrativen Ballast von den Schultern der 375'000 Ehrenamtlichen in Schweizer Sportvereinen zu nehmen. Damit bleibt mehr Zeit für das, was wirklich zählt: Den Sport.
Unsere Vision ist es, in einer Zeit, in der 40% der Vereine Schwierigkeiten haben, Freiwillige zu finden, digitale Lösungen zu schaffen, die Vereinsarbeit wieder attraktiv machen - für alle Generationen.
# Repository klonen
git clone https://github.com/myclubapp/app.git
cd app
# Abhängigkeiten installieren
npm install
# Entwicklungsserver starten
ionic serve
Wir verwenden eine GraphQL API für Sportdaten. Weitere Details finden Sie in diesem Repository.
Wir verwenden conventionalcommits für unsere Commit-Nachrichten.
Folgen Sie der [Anleitung](npm install --save-dev husky) für die Installation:
# Installation
npm install --save-dev husky prettier pretty-quick
npx husky init
# Pre-commit Hook in .husky/pre_commit konfigurieren
npx pretty-quick --staged
# This tells your system: "Hey, this file is a script that can be executed."
chmod +x .husky/pre-commit
# make some changes
git add .
git commit -m "your new message"
git push
# App Icon & Splash Screen Generator Installation
npm install --global pwa-asset-generator
# Light Mode Assets
pwa-asset-generator ./resources/icon.png -i ./src/index.html -m ./src/manifest.webmanifest --splash-only --dark-mode -p 0%
# Dark Mode Assets
pwa-asset-generator ./resources/icon_dark.png -i ./src/index.html -m ./src/manifest.webmanifest --splash-only -p 0%
Zusätzliche Tools:
Unterstützte Sprachen:
Die App ist als PWA verfügbar unter:
Alle Apps (myclub, Verbands-Apps, Vereins-Apps) werden aus einem Codebase
gebaut und unterscheiden sich nur durch ihr Theme. Verwaltet wird das
ausschliesslich in themes.config.json:
"app-vbc-schaffhausen": {
"label": "VBC Schaffhausen",
"hostingSite": "vbc-schaffhausen",
"workflow": "main"
}
Daraus generiert npm run themes:sync die vier Konfigurationsdateien:
| Datei | generierter Teil |
|---|---|
angular.json | architect.build.configurations |
package.json | alle Scripts mit Präfix build: / build-deploy: |
firebase.json | hosting |
.firebaserc | projects.default + targets.*.hosting |
⚠️ Diese vier Abschnitte nie von Hand editieren. Änderungen gehören in
themes.config.json, danachnpm run themes:sync. Der CI-Jobthemes:checklässt den Build rot laufen, wenn generierter Stand und Config auseinanderlaufen.
Nicht generiert und weiterhin von Hand gepflegt: die Base-Options in
angular.json (Dev-Build), sowie pro Theme variables.scss, index.html,
manifest.webmanifest und die Assets unter src/custom-themes/<theme>/.
# Übersicht aller Apps mit Hosting-Target und URL
npm run themes:list
# Konfigurationen neu generieren / auf Drift prüfen
npm run themes:sync
npm run themes:check
# Bauen
npm run build:app-unihockey # oder: npx ng build --configuration app-unihockey
# Bauen + deployen
npm run deploy:apps -- app-unihockey app-volleyball
npm run deploy:apps -- --all
npm run deploy:apps -- --all --dry-run # zeigt nur, was passieren würde
npm run deploy:apps -- prod --skip-build # bestehendes www/ deployen
Das Deploy-CLI läuft bewusst sequenziell — alle Konfigurationen schreiben
nach www/, parallele Builds würden sich gegenseitig überschreiben. In CI läuft
stattdessen pro App ein eigener Runner (siehe unten).
npm run theme:new -- app-fc-musterhausen \
--label "FC Musterhausen" \
--site fc-musterhausen \
--primary "#1d4ed8" \
--secondary "#f59e0b"
Das legt src/custom-themes/app-fc-musterhausen/ aus empty-template an,
berechnet die Ionic-Farbvarianten (-rgb, -shade, -tint, -contrast) nach
Ionic-Formel, füllt index.html und manifest.webmanifest, trägt die App in
themes.config.json ein und synchronisiert die vier Konfigurationsdateien.
Danach von Hand:
npx firebase hosting:sites:create fc-musterhausensrc/custom-themes/app-fc-musterhausen/assets/
(logo.png, logo_trans.png, bg/, favicon/, icons/, splash/)variables.scss prüfen — generiert werden nur primary und
secondary, Hintergründe bleiben auf den Werten der Vorlagenpm run build:app-fc-musterhausenWeitere nützliche Flags: --short-name, --contrast, --theme-dir
(bestehendes Theme mitbenutzen statt ein neues anlegen).
master → main.yml: Unit Tests +
Drift-Check, danach ein paralleler Deploy-Job pro App. Die Matrix wird zur
Laufzeit aus themes.config.json abgeleitet (tools/ci-matrix.mjs main) —
eine neue App in der Config bekommt automatisch ihren Job, ohne YAML-Änderung.beta → beta.yml: Tests + Deploy auf
beta-myclub.main manuell starten
(Run workflow) und im Feld apps z. B. app-unihockey,app-volleyball
eintragen. Leer lassen = alle.Für iOS/Android Build:
ionic capacitor add ios
ionic capacitor add android
Premium-Version mit:
app-basketball und app-fussball wurden entfernt — es gab weder
Theme-Ordner noch Hosting-Einträge dazu. Neu aufsetzen mit
npm run theme:new.Ausführliche Dokumentation finden Sie in unserem Wiki.
git checkout -b feature/AmazingFeature)git commit -m 'feat: Add some AmazingFeature')git push origin feature/AmazingFeature)Bitte beachte unsere Contribution Guidelines und Code of Conduct.
Dieses Projekt ist lizenziert unter der European Union Public Licence (EUPL) v. 1.2 - siehe die LICENSE Datei für Details.