OkulSistem
School management and online tuition payments for a private school — parents pay installments by card, the finance team reconciles, everyone gets receipts.
Money, minors and messages: a school platform where security is a product requirement.
Problem
Students, parents, installments, online payments, receipts and consent records all carry different permissions and risks. The school needed one system for its daily finance work without exposing data across roles.
Approach
A NestJS API and a Next.js front end with role-based access for administrators, finance staff, teachers and parents. Installments and balances live in an auditable ledger; card payments go through Garanti BBVA and VakıfBank 3D Secure without ever storing card data, and bank transfers have an approve-or-reject flow. Receipts are generated as PDFs, notifications go out by SMS and e-mail through a queue, and sensitive actions are written to an audit log.
Result
Live for the school’s families: parents pay online, the finance team approves transfers and tracks balances, and the school’s SMS directory stays in sync with the platform.
What’s inside
- Installment plans and balances per student
- 3D Secure card payments through two banks
- Bank-transfer approval workflow
- PDF receipts and payment notifications
- KVKK consent management and audit log
- Bulk SMS directory for announcements
Stack
Under the hood
The code layer of this project — modules and moving parts.
frontend/ Next.js · shadcn/ui → admin · finance · teacher · parent backend/ NestJS → auth · students · finance · payments · receipts payments Garanti BBVA + VakıfBank 3D Secure (no card data stored) transfers bank transfer → finance approves / rejects queue Redis + BullMQ → SMS · e-mail notifications data MySQL 8 · audit log · KVKK consent records
Ready software
Parents pay tuition installments by card; the finance team reconciles and everyone gets receipts.