Mobile app by Club Calima — an engineering-led startup incubator building good software
A dead-simple Expo app that wraps our internal monitoring dashboard in a full-screen WebView. Built so collaborators can install it on their phones and check on their services from anywhere — as long as they're connected to our magic DNS
self hosting stack:
- Grafana — dashboards for metrics and logs
- Loki — log aggregation (think: lightweight ELK alternative)
- Prometheus — metrics scraping and alerting
- Tailscale — private overlay network with magic DNS, so
monitor.your-domain.orgjust works on any enrolled device without exposing anything to the public internet
You can run this exact setup on a VPS or a Raspberry Pi. Check out grafana/loki and the Tailscale docs to get started.
Right now access is via Grafana's admin credentials — you install the app, connect to Tailscale, and log in with the admin password. Simple, works great for a small team of collaborators who already trust each other.
This is intentionally minimal for now. Planned improvements:
- Proper auth — Grafana SSO (OAuth/OIDC) so each person has their own account, no shared passwords
- Role-based access — read-only viewers vs editors vs admins
- Native feel — bottom nav between key dashboards without going through the Grafana web UI
- Notifications — push alerts for critical thresholds via Grafana alerting webhooks
You'll need:
- A Tailscale account and at least one node running your monitoring stack
- Your Grafana reachable via a magic DNS name (e.g.
monitor.your-domain.org) - Node.js 18+ and Expo CLI on your dev machine
npm install
cp .env.example .env
# set EXPO_PUBLIC_MONITOR_URL=http://monitor.your-domain.org in .envThis app uses react-native-webview (a native module) so Expo Go won't work. You need a development build:
# iOS
npx expo run:ios --device
# Android
npx expo run:android --deviceAfter the first native build, npx expo start is enough for hot reload during development.
app/(tabs)/index.tsx ← the whole app, basically just a WebView
app.json ← Expo config
.env.example ← env var reference
- Expo + Expo Router
- react-native-webview
- Tailscale for private networking