Australian Workforce Management Solution
Roster scheduling, time tracking, and team management for shift-based businesses
Website • Live Demo • Documentation
- Drag-and-drop scheduling with conflict detection
- Publish rosters instantly to your team
- Support for multiple work locations
- Week-at-a-glance and day views
- Geofence-verified clock in/out
- Track actual hours worked
- Offline support for time clock
- Multiple location support
- Employee invitation system
- Role-based access (Owner, Manager, Employee)
- Availability management
- ABN validation for Australian businesses
- Automatic timesheet generation
- CSV export for payroll
- Labor cost tracking
- Export historical data
- Push notifications for shift changes
- Clock in/out alerts
- Team messaging
- Live roster updates
- Free tier (up to 5 employees)
- Starter plan for growing teams
- Stripe-powered payments
- Automatic subscription management
| Component | Technology |
|---|---|
| Frontend (Web) | Next.js 16, React 19, TypeScript |
| Mobile App | React Native, Expo |
| Backend | Supabase (PostgreSQL, Auth, Edge Functions) |
| Styling | Tailwind CSS |
| Payments | Stripe |
| Deployment | Vercel (Web), EAS (Mobile) |
crewcircle/
├── apps/
│ ├── web/ # Next.js web application
│ │ ├── src/
│ │ │ ├── app/ # Next.js App Router pages
│ │ │ ├── features/ # Feature modules
│ │ │ ├── packages/# Shared packages (local)
│ │ │ └── store/ # Zustand state management
│ │ └── public/ # Static assets
│ └── mobile/ # React Native mobile app
│ ├── app/ # Expo Router pages
│ ├── lib/ # Utility libraries
│ └── context/ # React contexts
├── packages/
│ ├── supabase/ # Supabase client utilities
│ ├── validators/ # Zod validation schemas
│ └── ui-shared/ # Shared UI components
├── supabase/
│ ├── migrations/ # Database migrations
│ └── supabase/
│ └── functions/ # Edge functions
│ ├── stripe-webhook/
│ ├── shift-reminder/
│ └── send-push-notification/
└── docs/ # Documentation
- Node.js 20+
- Yarn package manager
- Supabase account
- Stripe account (for billing)
# Clone the repository
git clone https://github.com/Sensible-Analytics/crewcircle.git
cd crewcircle
# Install dependencies
yarn install
# Copy environment variables
cp .env.example .env.local
# Edit .env.local with your Supabase and Stripe keys
# Start development server
yarn dev# Supabase
NEXT_PUBLIC_SUPABASE_URL=your-supabase-url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
# Stripe
STRIPE_SECRET_KEY=your-stripe-secret
STRIPE_WEBHOOK_SECRET=your-webhook-secret
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=your-publishable-key
# App
NEXT_PUBLIC_SITE_URL=http://localhost:3000- Connect your GitHub repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy automatically on push to main
# Install EAS CLI
npm install -g eas-cli
# Configure EAS Build
eas build:configure
# Build for Android
eas build --platform android --profile production
# Submit to Google Play
eas submit --platform android --latestcd supabase
# Link to your project
supabase link --project-ref your-project-ref
# Deploy migrations
supabase db push
# Deploy edge functions
supabase functions deployFor full documentation, visit docs.crewcircle.co
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Proprietary - All rights reserved by Sensible Analytics
- Email: support@crewcircle.co
- Website: https://crewcircle.co
- Documentation: https://docs.crewcircle.co
Built with ❤️ in Australia by Sensible Analytics
