3.0 KiB
AirCard-IOS
Inoffizielles Hobbyprojekt, mit dem man eigene Kartenmotive für Apple Wallet unter https://aircard-ios.org gestalten kann. Bilder hochladen, Vorlage und Netzwerk-Logo wählen, herunterladen – oder mit Konto speichern. Keine Verbindung zu Apple, Visa, Mastercard, UnionPay, American Express, JCB oder Discover.
Aufbau
web/ – Vite + TypeScript ohne Framework. Frontend-Module in src/:
card/– Geometrie, Zuschnitt, Canvas-Rendering (keine DOM-Abhängigkeiten, einzeln testbar)editor/– UI (Vorlagen, Vorschau, Download, Speichern)account/– Appwrite-Client, Auth, Kartenverwaltungpages/– Routen (/,/karten,/passwort-neuvia History-API)
deploy/ – Webhook-Router (Port 8087), Build-Skript (deploy.sh), nginx-Config, Traefik-Route für Appwrite.
docs/ – Spec, Plan, Appwrite-Konfiguration.
Lokal entwickeln
cd web
npm ci
npm run dev # Entwicklungsserver http://localhost:5173
Login und Speichern brauchen die Appwrite-Route. Der lokale Host wird nur dann erkannt, wenn die Web-Plattform localhost in der Appwrite-Console eingetragen ist (unter Projekt → Overview → Integrations → Platforms). Die Umgebungsvariablen VITE_APPWRITE_ENDPOINT und VITE_APPWRITE_PROJECT_ID müssen für die lokale Entwicklung verfügbar sein (Standard: https://appwrite.webklar.com/v1 und 6ac2130a00289343d6d5).
Tests
cd web && npx vitest run # Unit-Tests (card/*, editor/*, account/*)
npx tsc --noEmit # TypeScript-Prüfung
node --test deploy/webhook-server.test.js # Webhook und Build-Logik
node --test web/scripts/appwrite-setup.test.mjs # Appwrite-Schema
Deploy
Automatisch: Push auf main → Gitea-Webhook → Container webklar-aircard-build führt npm ci und vite build aus → Ergebnis nach out/ → nginx webklar-aircard liefert.
Manuell:
docker exec webklar-aircard-build sh /deploy.sh
Starten nur mit:
docker compose up -d aircard-build aircard
Die Appwrite-API wird über /home/webklar/apps/traefik/dynamic/aircard.yml geroutet: Requests auf aircard-ios.org/v1 mit Header X-Appwrite-Project: aircard gehen an den Appwrite-Container.
Appwrite
Projekt aircard auf appwrite.webklar.com:
- Projekt-ID (öffentlich):
6ac2130a00289343d6d5 - Datenbank:
aircard, Tabelle:cards, Bucket:card-images - Auth: E-Mail + Passwort, Sitzungsdauer 30 Tage, max. 5 pro Nutzer, Nutzerlimit 2000
- Web-Plattformen:
aircard-ios.org,localhost
Schema prüfen:
node --env-file=/home/webklar/apps/.env web/scripts/appwrite-setup.mjs --check
Schema erstmalig anlegen:
node --env-file=/home/webklar/apps/.env web/scripts/appwrite-setup.mjs
Umgebungsvariablen (in /home/webklar/apps/.env):
AIRCARD_APPWRITE_PROJECT_ID– Projekt-ID (idempotent im Skript lesbar)AIRCARD_APPWRITE_API_KEY– API-Keyaircard-provision(nur für Setup)
Hinweis
Inoffizielles Hobbyprojekt. Alle Marken gehören ihren Inhabern.