About this source code

VidyaCloud is a school ERP I built for groups that run more than one school. A trust with five branches gets one login for the head office, a separate admin for each school, and data that never leaks between them. A single school works just as well; it's simply a group of one.

It's plain PHP. No Composer, no npm, no build step. Upload it to any host that runs PHP 8.3, import one SQL file, fill in the .env, and it's running. That was deliberate: most schools in India are on shared hosting, and I wanted something a local IT person can install and maintain without learning a framework.

What's inside

  • Admissions: enquiry → application → interview → admission pipeline, with follow-ups and conversion to a student record.
  • Students & parents: profiles, siblings, documents, promotion, bulk import/export by CSV.
  • Academics: classes, sections, subjects, timetable with clash checks, homework, study material.
  • Attendance: daily class attendance, teachers limited to their own classes, date lock for older records, staff attendance.
  • Exams: exam setup, marks entry, grading, report cards.
  • Fees & accounts: fee structures, invoices, collection with receipts, dues and defaulter lists, concessions, day book, ledgers and vouchers.
  • HR & payroll: staff records, leave, salary structures and payslips.
  • Transport: routes, stops, vehicles, student allocation, and a driver app that sends location updates.
  • Hostel, library, inventory and assets.
  • Front office: visitor log, gate passes, phone and postal registers, complaints.
  • Communication: notices, notifications, SMS and WhatsApp through your own gateway, PTM scheduling, surveys.
  • Certificates and ID cards, a simple school website builder, live class scheduling with meeting links, and compliance records.
  • AI assistant that can be pointed at any OpenAI-compatible endpoint (off by default).

Portals

Parents, staff and drivers each get a mobile-friendly portal that installs to the home screen (PWA). Parents see attendance, homework, notices, fees due and results for each child. Drivers see their route and share location.

Roles and permissions

14 built-in roles: super admin, group admin, school admin, teacher, accountant, receptionist, librarian, HR, transport manager, hostel manager, parent, student, driver and auditor. Permissions are checked per module and per school, so a teacher at one branch can't open records at another, even by editing the URL.

REST API

A versioned JSON API (/api/v1, about 230 routes) with bearer tokens for mobile apps and session + CSRF for the browser. The same permission rules apply as in the web panel. Documented in docs/API.md.

Security

  • Argon2id passwords, CSRF on every form, prepared statements throughout.
  • Sensitive fields encrypted with AES-256-GCM.
  • Tenant scoping enforced in the data layer, not just the UI.
  • Private files kept outside the web root; the app refuses to serve them directly.
  • Audit log of who changed what.

Tested

The package ships with its own test runner: 1,148 checks covering tenant isolation, permissions, fees, attendance, the API and the web login flow. Run php tests/run.php after any change and you'll know quickly if something broke.

Language

English and Hindi out of the box. Adding another language is a matter of copying one translation file.

Please note

  • SMS, WhatsApp and email need your own provider accounts. Until you connect one, messages are written to a log file so nothing fails.
  • Online fee payment through a gateway is not built in yet. Fees collected in cash, UPI, cheque or bank transfer are recorded with receipts.
  • No native Android/iOS app is included. The portals are PWAs, and the API is there if you want to build one.

Preview & demo

Screenshots above are from the included demo data (5 schools across 2 groups). After install, log in with any of these demo accounts: - Super admin: admin@vidyacloud.local / Admin@123 - Group admin: group1@vidyacloud.local / Group@123 - School admin: admin@school-1.local / School@123 - Teacher: teacher1@school-1.local / Teach@123 - Accountant: accounts@school-1.local / Acct@123 - Parent: parent1@school-1.local / Parent@123 - Student: student1@school-1.local / Student@123 - Driver: driver1@school-1.local / Driver@123 Change or remove these before going live. Download includes: full source code, database/schema.sql (empty install), database/vidyacloud-complete.sql (with demo data), installation guide (PDF), API and deployment docs, and the test suite. Requirements: PHP 8.3 or newer with pdo_mysql, mbstring, openssl, json, fileinfo; MySQL 8 or MariaDB 10.6+; Apache with mod_rewrite (or Nginx); cron access for reminders and backups. Works on shared hosting and XAMPP.

Open live demo

License

Single-organisation licence. You may: - Install and use the software for one school or one group of schools under the same management. - Modify the code for your own use. - Hire a developer to install or customise it for you. You may not: - Resell, redistribute or share the source code, modified or not. - Offer it as a hosted service (SaaS) to other schools or organisations. - Remove the licence notice from the source files. Need it for multiple unrelated clients or a SaaS? Contact us for an extended licence. Provided as-is. Bug fixes for the purchased version are free for 6 months; installation help and custom features are available separately.