KRISH MAURYA — FOLIO ©2026
0
[CS /04] Case study — ©2026SELECTED WORK (03)

Gurukul

A complete school management system with OCR-powered admissions, attendance, timetables, fees and AI-assisted operations — plus a companion app for parents with frictionless portal-link login.

ROLEFull-stack · solo build
TIMELINE2026 · 2 weeks
CORE STACKNext.js · React Native · Prisma · PostgreSQL
STATUSShipped
[01] OverviewTHE SHORT VERSION

What it is.

Gurukul started from a real problem: schools are drowning in paperwork. Admissions come on loose sheets, attendance is scattered, timetables clash, and parents have no way to stay informed without pestering the office. I built one platform with two surfaces — a full-featured web dashboard for admins and teachers, and a lightweight React Native app for parents.

Every admission starts with OCR: upload a document, Tesseract extracts student fields, an admin verifies the record. Attendance, timetables and fees live in PostgreSQL with role-based views. And parents never need a password — they get a unique portal link, paste it once into the app, and stay connected to their child's school life.

Next.jsReact NativeTypeScriptPostgreSQLPrismaTesseractBrevoTailwind CSS
krishmaurya.me/gurukul04 / 03
gurukul — admin dashboard
Gurukul — app preview

Gurukul

Role-based web dashboard + React Native companion app
[02] The challengeWHY IT WAS HARD

Problems worth solving.

  • Extracting student data reliably from handwritten and printed admission documents.
  • Designing a role-based schema so admins, teachers and parents each see only what they need.
  • Building a parent app that works offline and syncs seamlessly when reconnected.
  • Managing timetables without conflicts across hundreds of classes and staff.
  • Keeping fees tracked and reminders sent without manual intervention.
[03] ApproachHOW IT GOT BUILT

Built in four moves.

STEP 01

OCR-first admissions

Tesseract extracts fields from uploaded PDFs and images. An admin review flow lets humans verify and correct before the student record is committed to the database.

STEP 02

Role-based schema

PostgreSQL schema with RLS (row-level security) queries — admins see everything, teachers see their classes, parents see only their child.

STEP 03

Portal-link auth for parents

No passwords on the app. Once a student is admitted, parents get an email with a unique link. One paste into the app, and they're in — session persists across app close/reopen.

STEP 04

Conflict-aware timetabling

The timetable builder checks for room, staff and student collisions in real time before a slot is saved.

[04] Key featuresSHIPPED & WORKING

What it does.

Admin dashboard

Full operational control: students, staff, fees, communications, AI assistant.

OCR admissions

Upload documents, auto-extract fields, admin review, instant student record.

Attendance workflows

Teachers mark attendance on web, parents see reports on the app.

Timetable builder

Drag-and-drop scheduling with live conflict detection for rooms, staff and students.

Fee tracking

Invoice generation, payment tracking, automated reminders via Brevo email.

Parent app

Portal-link login, zero passwords, real-time attendance and fee updates.

AI assistant

Natural-language queries over school data — attendance trends, fee summaries, etc.

Notifications

Admissions approved, fees due, attendance marks posted — parents stay in the loop.

[05] Under the hood$ tree ./gurukul

How it fits together.

krish@dev — zsh — 80×24
krish@dev ~ % tree ./gurukul --depth 1
./gurukul
├── web/ Next.js 14 · RSC · role-based dashboards
├── app/ React Native · portal-link auth · offline-first
├── api/ Next.js Server Actions · Prisma queries
├── db/ PostgreSQL · Prisma schema · RLS policies
├── ocr/ Tesseract · document processing pipeline
├── email/ Brevo integration · admission & fee reminders
└── ai/ AI-Assisted operations for school insights
KEY DECISIONSDECISIONS.md
  • Tesseract for OCR — open-source, accurate enough for school documents, no vendor lock-in.
  • Portal-link auth over OAuth — parents already have chaos with passwords; a link in email is friction-free.
  • Prisma ORM with RLS — type-safe queries plus database-level access control.
  • Separate web and app — web is feature-rich, app is a lightweight read window optimized for parents checking in.
[06] Results & learningsBY THE NUMBERS

What it proved.

OCR extraction accuracy on school documents>90%
manual timetable conflict resolution needed0
interfaces (web dashboard + React Native app)2
  • OCR is only the start — the human review workflow is where reliability lives.
  • Portal-link login beats traditional auth for low-tech user bases — one paste, you're in.
  • Role-based schema at the database layer beats application-level filtering — it's simpler and enforces privacy by default.
  • A lightweight app can be more valuable than a full-featured one if it solves the parent's actual use case: quick, offline access to attendance and fees.