eduSpace

A self hosted school management system built with Reactjs, TypeScript, RSC, Prisma and MySQL.


Image

An initial highlevel design of eduSpace. This architecture is subject to change as I progress with the project. eduSpace repo

This design approach lies on the extreme where all tenants/users will share all the components. Although this tenant model is attractive for its simplicity and less expensive to run, this design has lots of limitations.

Project Scope & Goals

When it comes to developing a software, design is a very important factor. The design and architecture of a software should not only be scalable but also easy for developers to understand and contribute to. The architecture should allow for easy, incremental changes and should be able to adapt to new requirements.

I've devided to go with nextjs as it provides a lot of features out of the box. From scaling to routing, developer experience, Next.js has it all. And this allows me to focus on the software product & business logic itself rather than the infrastructure.

In the first series of this project, I'll be focusing on building the core features of the software. For starter, these features will focus on four main entities in any hypothetical school system.

  1. Students
  2. Teachers
  3. Guardians
  4. ClassGrades

To keep things simple, I'm starting with these four entities. The user of eduSpace will be able to manage students, teachers, guardians and class grades.

Click on a section below to learn more.

A database schema for school

Explains the database schema definition using Prisma.

View

Tenant Model

description for tenant model in eduSpace

View

Authentication & Authorization

Explains authentication and authorization using NextAuth.js.

View