Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Muster

πŸ“‹ Muster

Attendance & Presence Platform β€” present, and accounted for.

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.

License: MIT Platform Stack LinkedIn

✨ Features Β· πŸ–ΌοΈ Screenshots Β· 🧭 Architecture Β· ⬇️ Setup Β· πŸ—ΊοΈ Roadmap

Muster

🧩 The Problem

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.

✨ Key Features

  • πŸ“ 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.

πŸ–ΌοΈ Screenshots

πŸ“± Mobile β€” employee app

Login by NIP Home: GPS geofence and shift Photo check-in Attendance history

Login by NIP Β· Home with live GPS geofence + shift status Β· Photo check-in / check-out Β· Attendance history

πŸ–₯️ Web admin β€” institution dashboard

Dashboard Employees Locations and radius Shift scheduling Reports and CSV export Co-brand identity

Dashboard Β· Employees Β· Locations & radius Β· Shift scheduling Β· Reports + CSV export Β· Co-brand identity

🧭 Architecture

              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.

⬇️ Setup

1) Backend β€” Supabase (do this first)

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.

2) Web admin β€” Next.js

cd apps/admin
cp .env.local.example .env.local     # fill URL + anon key
npm install
npm run dev                          # http://localhost:3000

Deploy free on Vercel: import the repo, set Root Directory = apps/admin, add the two NEXT_PUBLIC_SUPABASE_* env vars. See DEPLOY.md.

3) Mobile β€” Expo (APK, no Android Studio)

cd apps/mobile
cp .env.example .env                 # fill URL + anon key
npm install
eas build --platform android --profile preview   # β†’ downloadable .apk

Details in apps/mobile/BUILD_APK.md. Face recognition requires a dev build β€” see apps/mobile/FACE_RECOGNITION.md.

πŸ“– How to Use

  1. Admin adds an office/post location (use "pakai lokasi saya" on-site) and registers employees (manually or via Excel import), each with an NIP.
  2. Employee installs the app and logs in with their NIP (default password = NIP), then sets a new password on first login.
  3. 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.
  4. 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.

πŸ—ΊοΈ Roadmap

  • 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.

πŸ”’ Privacy

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.

🀝 Contributing

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.

⚠️ Disclaimer

For legitimate workforce attendance on systems and staff you are authorized to manage. The author is not responsible for misuse.

πŸ“„ License

MIT Β© 2026 Abil Khosim.


πŸ‘€ Developed by Abil Khosim

Cybersecurity Specialist

LinkedIn

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. πŸ“‹

About

πŸ§‘β€πŸ’Ό Enterprise attendance platform with GPS validation, face verification, shift management, and multi-organization support.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages