TrackMyTransits is a role-based transit tracking app built with Expo, React Native, Tamagui, and Supabase. It helps teams manage incoming transits, track inventory that has reached its destination, and keep user access organized across admin, receptionist, and worker workflows.
TrackMyTransits is designed for teams that need a simple mobile-first system to monitor shipments and related operational activity. Users log in with a Supabase-backed account and are routed to the correct experience based on their role.
- Role-based authentication and navigation for
admin,receptionist, andworkerusers - Incoming transit dashboards with detailed transit views
- Inventory views for transits that have reached their destination
- Transit status and container tracking
- User management for admin accounts
- CSV export for transit and inventory data
- Persistent Supabase auth sessions
- Bottom-sheet driven detail and action flows
If you want a quick visual preview, start here:
trackmytransits.mp4
- Expo / React Native
- Expo Router
- Tamagui
- Supabase
- React Hook Form
- Zod
- Node.js 18+
- pnpm
- A Supabase project
git clone https://github.com/jatindotdev/trackmytransits.git
cd trackmytransitspnpm installCopy the example env file and fill in your Supabase credentials:
cp .env.example .envRequired variables:
EXPO_PUBLIC_SUPABASE_URL=<YOUR_SUPABASE_URL>
EXPO_PUBLIC_SUPABASE_ANON_KEY=<YOUR_SUPABASE_ANON_KEY>pnpm startThen open the app on iOS, Android, or web from the Expo menu.
app/- Expo Router screens and role-based route layoutscomponents/- UI for transits, inventory, and bottom sheetslib/- Supabase client, fetchers, and utilitieshooks/- Shared React hookstypes/- Supabase-generated TypeScript types
The app expects Supabase tables for transit tracking and user management. The main queries touch:
transitusersstatuscontainer
If you are setting up a fresh backend, make sure these tables and their relationships match the queries in lib/fetchers.ts and the transit components.
- Login is powered by Supabase email/password auth.
- User roles drive routing after sign-in.
- The app stores session state locally so users stay signed in across launches.