Inspiration
Every term, Mrs. Adebayo Okonkwo sits with a notebook and writes down who paid school fees and who didn't. Three children in her school. Three different discounts she forgets to apply. Parents dispute payments. She loses money.
This is how 50,000+ private schools in Nigeria operate. No software exists for them because the market is too specific: cash-based, term-based, family-based. Existing tools assume monthly subscriptions and credit cards — neither of which exist in this context.
We built Ìwé because the notebook is not good enough.
What It Does
Ìwé is a school fee management platform built specifically for Nigerian private schools. It replaces notebooks and WhatsApp chaos with structured, automated fee collection.
Core features:
- Term-based academic calendar — 1st, 2nd, 3rd Term (Sept–July), not monthly subscriptions
- Automatic sibling discounts — 1st child full fee, 2nd 10% off, 3rd+ 20% off, calculated by enrollment date
- Partial payment tracking — cash, bank transfer, POS; status auto-updates (pending → partially_paid → paid)
- Late penalty calculation — 5% per month on outstanding balance after due date
- PDF receipt generation — professional receipts with school branding, payment breakdown, "PAID IN FULL" badge
- WhatsApp integration — one-click sends pre-filled receipt message to parent's WhatsApp
- Debtor list reports — one-click copies formatted PTA broadcast message for unpaid fees
The app is deployed and functional with sample data: Grace Academy, 6 students across 3 families, demonstrating the sibling discount system.
How We Built It
Built entirely in MeDo using iterative natural language prompts. No manual coding.
We started with the core data model — schools, families, students, academic terms, and fee invoices. Then we layered in the business logic that makes Ìwé defensible: a sibling discount engine that orders children by enrollment date and applies 0%, 10%, or 20% automatically. Partial payment tracking that recalculates status from all payment records, not just the latest transaction. A late penalty calculator that applies 5% per month on outstanding balances after the due date.
The UI came next — a clean dashboard with summary cards and collection charts, CRUD interfaces for managing families and students, and a bulk invoice generator that creates invoices for every student in a term with discounts applied automatically.
We added PDF receipt generation with school branding and payment breakdowns, WhatsApp integration via wa.me links for one-click parent communication, and debtor list reports formatted for PTA WhatsApp broadcasts.
Finally, we hardened the app with guardrails — duplicate invoice prevention, overpayment warnings, delete protection for records with dependencies, and session expiry handling.
Tech stack: React, TypeScript, Tailwind CSS, Supabase (PostgreSQL + Auth), jsPDF, Recharts. All generated and deployed through MeDo.
Challenges We Ran Into
Sibling discount ordering. The discount depends on enrollment date, not creation order. A student added today might be the 1st child if their enrollment date is older than their siblings. Required careful sorting logic.
Partial payment math. Status must recalculate by summing all payment records, not just adding the latest. A bug where ₦0 payments marked invoices as "paid" taught us to validate amounts and re-query the payments table on every transaction.
PDF generation. Client-side jsPDF needed precise formatting for A4 receipts with school branding, payment breakdown tables, and "PAID IN FULL" badges. Memory constraints in the browser required optimizing image handling.
WhatsApp integration without APIs. Using wa.me links instead of Twilio or WhatsApp Business API meant no backend infrastructure, but required careful URL encoding and conditional rendering when families lack WhatsApp numbers.
Accomplishments That We're Proud Of
Domain-specific logic that actually works. The sibling discount engine isn't a configuration toggle — it understands enrollment order, calculates percentages automatically, and handles edge cases like families with 4+ children. A generic payment app would ship a "discount code" feature. We shipped a system that knows who is 1st, 2nd, and 3rd in a family.
Building for cash, not cards. Every fintech demo shows Stripe integration. We built for cash, bank transfer, and POS — the reality of how Nigerian schools collect money. The PDF receipt and WhatsApp integration turn a cash transaction into a traceable, professional record.
Zero manual coding. The entire application — database, business logic, UI, PDF generation, WhatsApp links — was generated through natural language prompts in MeDo. We specified the problem. MeDo built the solution.
A working product, not a prototype. Deployed with real data. Tested end-to-end. Invoices generate. Payments record. Statuses update. PDFs download. WhatsApp messages send. This isn't mockups — it's functional software.
What We Learned
Specificity beats generality. "Nigerian private schools" is a stronger pitch than "African schools" or "EdTech." The sibling discount engine and term-based structure required understanding how these schools actually operate — not assuming they work like Western SaaS customers.
Prompt iteration matters. Feeding MeDo domain logic incrementally produced better results than dumping a full spec. Each prompt built on the previous one, testing edge cases before adding complexity.
Cash is a feature, not a bug. Building for cash, bank transfer, and POS — instead of online payments — is the correct product decision for this market. A payment gateway would alienate the actual user.
What's Next for Ìwé
- Bank transfer auto-confirmation — paste a transfer receipt, system auto-matches to invoice using reference numbers
- Multi-school support — franchise chains with centralized reporting across locations
- USSD integration — for parents without smartphones, enabling fee queries via basic mobile phones
Copy-paste this into Devpost. It follows their Markdown format with ## headers, bold text, bullet lists, and inline code for URLs.
Built With
- api)
- authentication
- client-side
- data
- database
- generation
- jspdf
- medo-?-ai-powered-full-stack-app-generation-platform-react-?-frontend-ui-library-typescript-?-type-safe-javascript-tailwind-css-?-utility-first-css-framework-supabase-?-backend-as-a-service-(postgresql-database
- postgresql
- recharts
- relational
- visualization
Log in or sign up for Devpost to join the conversation.