Auf defikarte.ch sind derzeit über 15’000 Defibrillatoren mit ihrem Standort in der Schweiz und in Liechtenstein erfasst und täglich kommen weitere hinzu. Ziel ist es, durch einfachen Zugang zu den Defibrillatoren Leben zu retten.
Die App zu Defikarte.ch findet man in den Stores des jeweiligen Anbieters.
Nominierungen
- DINACon Award Shortlist der Kategorie Community Award
https://www.defikarte.ch/sponsors
Wir suchen Sponsoren Die Kosten für die Infrastruktur, wie Backend-Dienste und die Publikation der Webseite, werden durch unsere Partner gedeckt. Es ist uns wichtig, kostendeckend und gemeinnützig zu arbeiten, um unabhängig zu bleiben. Überschüsse investieren wir in die Weiterentwicklung der Karte, um ihre Reichweite und ihren Nutzen zu erhöhen.
Von unserer Plattform profitieren viele Organisationen. Mit deiner Unterstützung hilfst du uns, dieses wichtige Projekt aufrechtzuerhalten. Als Sponsor bieten wir dir eine individuelle Lösung und eine würdige Anerkennung. Werde Teil unserer Mission, Leben zu retten! Melde dich bei uns – Wir freuen uns auf deine Nachricht.
Made with contributors-img.
Open Source und Open Data ist einer der Grund-Manifeste der Defikarte.
Wir untersützen folgende Open Source Initiativen:
This is a monorepo with three packages, wired together with pnpm workspaces:
/src/app- React + Vite app, packaged as a native iOS & Android app with Capacitor/src/web- React web application/src/shared- Shared code between app and web
src/app and src/web each link ../shared as a workspace package, so dependencies are installed
per package.
- Node.js 24
- pnpm 10
- For mobile builds: Android Studio + JDK 21 (Android), macOS with Xcode (iOS)
cd src/app
pnpm install
cd ../web
pnpm installBoth packages read their configuration from a local .env file - copy .env.template and fill in
the values.
Mobile App:
cd src/app
pnpm run dev # browser dev server
pnpm run build # web bundle into dist/ (this is what Capacitor ships)
pnpm run sync:android # copy dist/ + plugins into the Android project
pnpm run sync:ios # same for iOS (macOS only)
npx cap open android # open in Android Studio to run on a device/emulator
npx cap open ios # open in XcodeWeb Application:
cd src/web
pnpm run dev # Start development server
pnpm run build # Build for productionThe app is not React Native - Capacitor wraps the built web bundle (src/app/dist) in a native
WebView and exposes native APIs through plugins, currently geolocation via @capacitor/geolocation
and the system bars via @capacitor/core. The native projects are committed under
src/app/android and src/app/ios, and the app id is ch.defikarte.app.
Because the native shells load the production build, pnpm run build has to run before every
cap sync. See src/app/README.md for the full workflow, and
docs/mobile-release-setup.md for signing and store releases.
| Workflow | Trigger | What it does |
|---|---|---|
Web: Build and Deploy (deploy-web.yml) |
push to main / dev touching src/web |
builds the web app and deploys it to defikarte.ch (main → production, dev → staging) |
Mobile: Build (build-mobile.yml) |
push to main touching src/app / src/shared, or manual on any branch |
builds signed .apk, .aab and .ipa, creates the version tag and a GitHub release (prerelease -beta off main) |
Mobile: Deploy to Stores (deploy-mobile.yml) |
after a release-producing mobile build, or manual with a release tag | uploads the .aab to the Play internal track and the .ipa to TestFlight |
Mobile versions are MAJOR.MINOR.<build number> (e.g. 1.0.52 = Android versionCode 52 = iOS
build 52). Bump MAJOR.MINOR via version in src/app/package.json. The tags are created by the
workflow, so don't push version tags by hand. Details:
docs/mobile-release-setup.md.
The /shared folder contains utilities and hooks that are used by both the app and web projects. See /shared/README.md for more details.
Example usage:
import {
formatCoordinates,
calculateDistance,
useDebounce,
} from "@defikarte/shared";