0%
balqalam Logo
balqalam
FeaturesCommunityPricingDocumentation
Login
  • Introduction
  • Pitch
  • Hogwarts
  • Live Demo
  • MVP
  • Roadmap
  • Launch Sprint
  • PRD
  • Get Started
  • Localhost
  • Architecture
  • Structure
  • Pattern
  • Page
  • Layout
  • Content
  • Types
  • Config
  • Actions
  • Queries
  • Authorization
  • Validation
  • Form
  • Table
  • Detail
  • Card
  • Util
  • Hooks
  • List Params
  • Views
  • README.md
  • ISSUE.md
  • Technology Stack
  • Database
  • File
  • CDN Assets
  • Entry Points
  • Dashboard
  • Authentication
  • Credentials
  • OAuth
  • Flow Diagrams
  • Multi-Tenancy
  • Offline
  • Onboarding
  • Onboarding Videos
  • Add Values
  • Admission
  • Application
  • Attendance
  • Compliance
  • Profile
  • Exams
  • Exam Wizard
  • Timetable
  • Classrooms
  • Notifications
  • Conference
  • LMS (Lumos)
Finance
  • Finance
  • Fee Management
  • Invoice
  • Wallet
  • Salary
  • Payroll
  • Timesheet
  • Expenses
  • Budget
  • Receipt
  • Accounts
  • Banking
  • Reports
  • Dashboard
  • Permissions
  • Messages
  • Integration Flow
  • Provision
  • AI Document Processing
  • Document Intelligence
  • Internationalization
  • Translation
  • Translation Guide
  • Icons
  • Docs Factory
  • Inspiration
  • Listings
  • Teachers
  • Students
  • Catalog
  • Library
  • Contributing
  • Code of conduct
  • GitHub Workflow
  • Database Seeds
  • Database Safety
  • Test Accounts
  • Playwright
  • Prettier
  • Block Rebound
Sales & GTM
  • Marketing Brief
  • Sales
  • Go-to-market
  • Marketing
  • Admission — Feature Spotlight
  • Pilot Program
  • Leads
  • Proposal
  • Outreach Templates
  • Case Study
  • Competitors
  • Landing-page teardown
  • Competitor FAQ
  • Business model
  • Shared economy
  • Traction
Fundraising & Ecosystem
  • Get Support
  • Investor Deck
  • Data Room
  • Investors
  • Accelerators
  • Incubators
  • Grants
  • Sponsors
  • Partners
  • Competitions & Hackathons
  • Universities & Training Centers

Add Values

PreviousNext

Twelve value milestones from school signup to full automation, with current implementation status and prioritized fix plan.

Each milestone is a concrete moment where the platform delivers usable value to a school owner. They build sequentially from first signup to full operation.

Status

#MilestoneStatusWhat it isPrereq
1School Online~93%Live school URL + join code after onboardingComplete 15 onboarding steps
2Share and Invite~70%Members join via URL or join codeSchool Online
3First Announcement~97%Post visible to all membersSchool Online
4Team Onboard~88%Add teachers manually or via CSVSchool Online
5Students In~93%Add students manually, CSV, or admissionSchool Online
6Classes Formed~90%Class = teacher + subject + studentsTeam + Students
7Timetable Running~95%Weekly schedule for all classesClasses
8Attendance Tracked~95%Mark daily attendance per classClasses + Timetable
9Grades Recorded~90%Exams, marks, report cardsClasses + Students
10Fees Collected~78%Fee structure + paymentsStudents
11Parents Connected~85%Parents linked, see grades and attendanceStudents + Guardians
12School Automated~60%Cross-system triggers (attendance + grades + fees)All above

Per-milestone notes

1. School Online — ~93%

15-step onboarding; platform provisions a live subdomain via middleware rewrite (school.databayt.org).

  • All 15 steps shipped with routes, validation, server actions
  • School creation atomic ($transaction)
  • completeOnboarding() activates school, fires provisionSchoolDefaults(), generates join code
  • Location step uses Mapbox
GapEffortImpact
Duplicate action.ts + actions.ts in subdomainQuickCleanup
Stripe not integrated (price/discount steps store data only)LargeRevenue
DNS providers stubbed (custom domains scaffolded)LargeEnterprise

2. Share and Invite — ~70%

Backend solid (~1089 lines in actions.ts); UI gaps block self-enrollment.

  • inviteMember(), approve/reject/suspend, role change, bulk ops, CSV export
  • MembershipRequest model with status tracking
  • joinSchoolByCode() exists (no UI)
  • /accept-invite?token=... accept/decline flow
  • Public school marketing pages exist
  • expire-invitations cron exists (not yet in vercel.json)
GapEffortImpact
No join code entry UI for usersQuickSelf-enrollment
No join code display/copy UI for adminsQuickSharing
No bulk invite UI (paste multiple emails)MediumEfficiency
Register expire-invitations cronQuickCleanup

3. First Announcement — ~97%

Full CRUD (~1251 lines), audience scoping, priority, scheduling, pinning, auto-translate (Google Translate API), read tracking, in-app notifications, scheduled publishing cron, export, parent portal view.

GapEffortImpact
Email notifications not wired (publish dispatches in-app only despite emailOnPublish toggle)QuickReach
No file attachmentsMediumUsability

4. Team Onboard — ~88%

Email invite + accept link, CSV/XLSX/JSON bulk import via bulkImportTeachers(), downloadable templates, role-specific profile creation, member CSV export.

GapEffortImpact
No bulk invite (paste multiple emails)MediumEfficiency
No post-import teacher onboarding wizardLargeExperience

5. Students In — ~93%

Full CRUD (7-step registration), CSV/XLSX/JSON bulk import, admission pipeline (campaigns → applications → merit list → enrollment → section placement with capacity checks), guardian linking, student access codes.

No critical MVP gaps.

6. Classes Formed — ~90%

Class = Subject + Teacher + Grade + Term + Classroom + Students. Full CRUD (~65KB actions), StudentClass bridge with capacity, subject-teacher roles (PRIMARY, CO_TEACHER, ASSISTANT), catalog subject linking, CSV export.

GapEffortImpact
gradeId not auto-derived from subject/catalog on createClassQuickData integrity

7. Timetable Running — ~95%

3-phase AI generation (974 lines), visual grid editor, role-based views, conflict detection (teacher/room/student), substitutions, templates, PDF/CSV export, RBAC across 28+ guarded mutations, readable preview names.

GapEffortImpact
Performance optimizations (React.memo, virtual scrolling)MediumScale
ARIA labels, keyboard navMediumA11y

8. Attendance Tracked — ~95%

Most complete subsystem. Daily marking with 6 statuses, smart class auto-select, bulk shortcuts (P/A/L, Ctrl+S), QR/barcode/RFID/geofence verification, excuses (7 categories), interventions (14 types), analytics, CSV export, kiosk mode, hall passes.

GapEffortImpact
STAFF role has write access (should be read-only)QuickSecurity
24 .tsx.bak files to deleteQuickHygiene
No parent notification on absence (dispatchNotification missing in attendance save)QuickCommunication

9. Grades Recorded — ~90%

40+ exam routes, full CRUD for exams and marks, manual / auto-calculate / AI-assisted / bulk / OCR mark entry, question bank with AI generation + CSV, GPA 4.0/5.0/letter/CGPA configs, report cards (queries via class.termId), progress reports, certificates, exam wizard.

GapEffortImpact
Academic metrics (GPA, pass rate) on admin dashboard return hardcoded zerosMediumVisibility
No real-time collaboration during gradingLargeWorkflow

10. Fees Collected — ~78%

Models: FeeStructure, FeeAssignment, Payment, Refund, Scholarship, Fine. Tabbed UI (5 tabs), CRUD with schoolId scope, financial reports (balance sheet, income statement, trial balance), invoice wizard, bulk generation, email sending, fee-overdue cron, dashboard stats.

GapEffortImpact
Auto-invoice on fee assignmentQuickWorkflow
Receipt PDF generatorMediumRecords
Late fee auto-calc on overdueQuickRevenue
paymentNumber uses Date.now()+random (no DB unique)QuickData integrity
No parent self-service payment portalLargeRevenue
No online payment gateway per schoolLargeRevenue

11. Parents Connected — ~85%

Guardian and StudentGuardian linked via admission/enrollment, parent portal routes (attendance, announcements, events), getMyChildren() / getChildGrades() / getChildTimetable() / getChildOverview(), dashboard with real grade trends and term progress, excuse submission, parent-teacher messaging, invoice history, admin parent listing.

GapEffortImpact
No attendance → parent dispatchQuickCommunication
No grade → parent dispatchQuickCommunication
No fee breakdown view for parentsMediumTransparency
No daily digest email (preference toggle exists, no impl)MediumEngagement

12. School Automated — ~60%

getDashboardSummary() with parallel metric fetching, notification system (6 models, 20 files, in-app + email), 10 active cron jobs (announcements, expiry, email queue, notification cleanup, event/assignment/teacher reminders, fee overdue, attendance policies, scheduled reports), inline triggers on fees, payments, assignments, announcements, exams, admission, membership, substitutions.

GapEffortImpact
Attendance save doesn't notify parentsQuickCommunication
Grade recording doesn't notify parentsQuickCommunication
Hardcoded academic metrics on dashboardMediumVisibility
No daily parent digest cronMediumEngagement
No cross-system analytics dashboardLargeReporting

Fix plan

Tier 1 — quick wins (under 1 hour each)

#FixMilestoneFiles
1Join code display/copy for admins2membership/content.tsx
2Join code entry dialog (calls joinSchoolByCode())2new join-code-dialog.tsx
3Announcement email dispatch (add "email" to channels when emailOnPublish)3announcements/actions.ts ~L1241
4Attendance → parent notification on ABSENT/LATE8, 11, 12attendance/actions.ts
5Real GPA/pass rate from ExamResult9, 12dashboard/actions.ts ~L350
6Auto-invoice in assignFee()10finance/fees/actions.ts
7Late fee creation in fee-overdue cron10api/cron/fee-overdue/route.ts
8paymentNumber @@unique + sequential generation10prisma/models/finance.prisma, fees/actions.ts
9STAFF attendance read-only8attendance/authorization.ts
10Subdomain duplicate cleanup (action.ts → actions.ts)1onboarding/subdomain/
11Register expire-invitations cron2vercel.json
12Delete 24 .tsx.bak files8attendance/**/*.bak
13gradeId auto-derive in createClass()6classes/actions.ts

Tier 2 — medium (2-4 hours each)

#FixMilestoneFiles
14Bulk invite (multi-email textarea)2, 4membership/invite-dialog.tsx
15Grade → parent dispatch on result publish11, 12exams/manage/actions/crud.ts
16Receipt PDF (@react-pdf template)10new finance/receipt-pdf.tsx
17Daily parent digest cron11, 12new api/cron/parent-digest/route.ts
18Parent fee breakdown view11dashboard/parent.tsx
19Announcement file attachments3prisma/models/announcement.prisma

Tier 3 — large (1-2 days each)

#FixMilestoneFiles
20Stripe per-school payments10finance/, Stripe MCP
21Parent self-service payment portal10, 11new parent route
22Cross-system analytics dashboard12analytics/
23DNS provider implementation (Cloudflare/Vercel API)1lib/dns-service.ts
24Teacher post-import onboarding wizard4new
25Timetable a11y + performance7timetable/

Priority

Tier 1 unblocks self-enrollment (1, 2), wires the last notification channels (3, 4), and puts real academic data on the dashboard (5). Tier 2 completes the parent notification loop and adds financial documents. Tier 3 is growth-stage — Stripe, custom domains, cross-system analytics.

See also

  • Onboarding
  • Architecture
Onboarding VideosAdmission

On This Page

StatusPer-milestone notes1. School Online — ~93%2. Share and Invite — ~70%3. First Announcement — ~97%4. Team Onboard — ~88%5. Students In — ~93%6. Classes Formed — ~90%7. Timetable Running — ~95%8. Attendance Tracked — ~95%9. Grades Recorded — ~90%10. Fees Collected — ~78%11. Parents Connected — ~85%12. School Automated — ~60%Fix planTier 1 — quick wins (under 1 hour each)Tier 2 — medium (2-4 hours each)Tier 3 — large (1-2 days each)PrioritySee also

Built by Databayt ·

Welcome to balqalam.

A great journey is about to begin.