A multi-school SaaS platform with daily credit-based access control.
- 1 Credit = 1 Day of system access
- Schools purchase credits to activate their account
- Credits expire after the purchased period ends
- Dashboard is locked when credits run out
| Plan | Credits | Duration | Price (PKR) | Per Day |
|---|---|---|---|---|
| Monthly | 30 | 30 Days | Rs 2,000 | ~Rs 67 |
| Quarterly+ | 100 | 100 Days | Rs 5,000 | Rs 50 (Save 17%) |
- School Admin: Selects a plan and sends payment via JazzCash or Bank Transfer
- School Admin: Submits payment reference in the dashboard
- System: Creates a pending credit request
- ilmsoft Admin: Reviews and approves/rejects the request
- On Approval: Credits are added to the school's account immediately
schools- School profiles withtotal_creditsandcredit_expires_atcredit_requests- Pending/approved/rejected purchase requestsadmin_users- ilmsoft administrators who can approve requests
- CreditGuard Component: Blocks dashboard access when credits expire
- Real-time Updates: Credit status updates immediately on approval
- Expiry Tracking: Automatic expiration date calculation
To create an admin user:
- Sign up normally at
/signup - Get the user ID from Supabase auth
- Insert into admin_users table:
INSERT INTO public.admin_users (user_id, email)
VALUES ('user-uuid-here', 'admin@example.com');- Access admin panel at
/admin
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_PUBLISHABLE_KEY=your_supabase_anon_keyCopy
.env.exampleto.env.localand fill in your Supabase credentials.
npm install
npm run devThe app is configured for static hosting on Netlify or similar platforms.
Payment details are configured in src/pages/Dashboard.tsx. Update the JazzCash number and bank IBAN with your actual accounts before going live.