Location- and face-verified attendance for many organizations at once. Employees check in from a mobile app; admins manage staff, locations, shifts, and reports from a web dashboard. Multi-tenant, co-branded, and built entirely on free tiers β no credit card.
β¨ Features Β· πΌοΈ Screenshots Β· π§ Architecture Β· β¬οΈ Setup Β· πΊοΈ Roadmap
Attendance across many organizations usually means a separate app per institution, easy buddy-punching (titip absen), and real cost. Field workforces β ambulance drivers, security posts, field teams β are especially hard to track because they report from many locations, not one office.
Muster is a single multi-tenant platform: one backend and one app serve many institutions. Presence is verified by location (geofence) and face, while admins manage everything from a web dashboard. To muster is to assemble personnel and take the roll β to confirm who is present and accounted for. That is exactly what this platform does, for every organization that plugs into it.
- π Location check-in (no paid Maps API) β Haversine geofence; radius set per location by the admin; check-in rejected outside the radius, with a live map view.
- π°οΈ Anti-fake-GPS β detects mock-location apps and flags spoofed coordinates.
- π Shift-aware β check-in/out tied to the day's shift; on-time / late computed automatically, with a personal attendance history.
- π§βπΌ Face verification β on-device liveness (anti-photo) + identity matching with MobileFaceNet embeddings. Private: only vectors leave the device, not photos.
- π’ Multi-tenant by design β data isolated per organization via PostgreSQL Row Level Security. One database, many institutions.
- π¨ Co-brand β the Muster brand stays primary; each institution appears as a secondary label (Muster Β· Institution Name) with its own small logo.
- ποΈ Full management β employees (manual + Excel import), locations, shifts, and schedules (bulk assign to many employees across a date range).
- π Reports & recap β filter by date/employee, on-time/late/mock summary, CSV export for Excel.
- ποΈ Super admin β create and manage institutions with no redeploy.
- π 100% free tier β Supabase, Vercel, Expo/EAS, OpenStreetMap. No credit card.
Login by NIP Β· Home with live GPS geofence + shift status Β· Photo check-in / check-out Β· Attendance history
Dashboard Β· Employees Β· Locations & radius Β· Shift scheduling Β· Reports + CSV export Β· Co-brand identity
MOBILE (employee) WEB ADMIN (institution)
React Native Β· Expo Next.js Β· Tailwind
check-in: GPS + face staff, locations, shifts,
dynamic co-brand Excel import, reports
\ /
\ HTTPS Β· JWT /
\ /
βββββββββββββββββββββββββββββ
β BACKEND β Supabase β
β PostgreSQL + RLS β
β Auth Β· Storage Β· Edge fn β
β every row β tenant_id β
βββββββββββββββββββββββββββββ
Monorepo layout:
muster/
βββ supabase/ # schema + RLS + auth functions + storage policies + seed
βββ apps/
β βββ admin/ # web dashboard (Next.js)
β βββ mobile/ # employee app (Expo / React Native)
βββ assets/ # brand + screenshots
Full technical design: ../MUSTER_BLUEPRINT.md.
Follow supabase/README.md: create a free Supabase project,
run migrations/0001 β 0002 β 0003 β 0004 β seed.sql, create the Storage
buckets (attendance-photos private, branding public), and turn off
Authentication βΈ Email βΈ Confirm email (employee login uses virtual NIP@muster.com
addresses). Copy the Project URL and anon key.
cd apps/admin
cp .env.local.example .env.local # fill URL + anon key
npm install
npm run dev # http://localhost:3000Deploy free on Vercel: import the repo, set Root Directory = apps/admin,
add the two NEXT_PUBLIC_SUPABASE_* env vars. See DEPLOY.md.
cd apps/mobile
cp .env.example .env # fill URL + anon key
npm install
eas build --platform android --profile preview # β downloadable .apkDetails in apps/mobile/BUILD_APK.md. Face recognition
requires a dev build β see apps/mobile/FACE_RECOGNITION.md.
- Admin adds an office/post location (use "pakai lokasi saya" on-site) and registers employees (manually or via Excel import), each with an NIP.
- Employee installs the app and logs in with their NIP (default password = NIP), then sets a new password on first login.
- Employee taps Absen sekarang β the app checks distance to the location (Haversine), detects fake GPS, takes a proof photo, and records the check-in/out.
- The check-in appears in the admin Reports page, ready to export as CSV.
Data out of sync after install? See
apps/mobile/TROUBLESHOOTING.mdβ usually the Confirm email toggle or a missing migration.
- Phase 0 β β location + photo attendance, multi-tenant, web admin, co-brand.
- Phase 1 π§ β face recognition (ML Kit liveness + MobileFaceNet); math + DB columns ready, embedding extraction needs a dev build.
- Phase 2 β β shifts, schedules (bulk assign), Excel import, reports + CSV.
- Phase 3 β β super admin: create/manage institutions with no redeploy.
- Phase 4 β³ β FCM notifications, MapLibre map picker, anti-fraud hardening.
Muster stores location and biometric (face) data. Handle it under Indonesia's PDP law: state the purpose of collection, store only what's needed (embeddings, not raw photos where possible), and provide access/erasure. This is not legal advice.
Issues and PRs welcome. The backend is plain PostgreSQL + RLS; the apps are standard Next.js and Expo β add a page or a screen and wire it to Supabase.
For legitimate workforce attendance on systems and staff you are authorized to manage. The author is not responsible for misuse.
MIT Β© 2026 Abil Khosim.
Cybersecurity Specialist
Muster is an original project by Abil Khosim, an independent security tool by Abil Khosim (NoxNull). Released under the MIT License β Β© 2026 Abil Khosim. Please keep this attribution when reusing or redistributing.
Everyone present. Everyone accounted for. π