Skip to content

TanvirCou/grade-sync

Repository files navigation

๐Ÿซ GradeSync โ€” School Management System

Next.js TypeScript TailwindCSS Clerk Prisma PostgreSQL CI/CD

Overview

GradeSync is a full-featured, responsive school management web application built with Next.js 15, TypeScript, and Tailwind CSS. It provides a centralized platform for managing academic workflows across four roles โ€” Admin, Teacher, Student, and Parent โ€” with secure multi-role authentication powered by Clerk, real-time schedules via BigCalendar, and comprehensive data management through Prisma ORM and PostgreSQL (Neon). The project also implements a robust CI/CD pipeline using GitHub Actions to ensure code quality and automated deployments.


๐Ÿ“บ Live Demo

๐Ÿ”— https://grade-sync-school.vercel.app/


๐Ÿ‘ฅ Demo Accounts

For testing the application with different roles:

Role Username Password
Admin testingadmin admin1234
Teacher testingteacher teacher1234
Student testingstudent student1234
Parent testingparent parent1234

๐Ÿš€ Features

๐Ÿ” Authentication & Role Management

  • Secure Multi-Role Access: Powered by Clerk, providing seamless login and secure session management for four distinct roles.
  • Dynamic Dashboards:
    • Admin: Full platform control โ€” manage teachers, students, parents, classes, subjects, lessons, events, exams, assignments, attendance results, and announcements.
    • Teacher: View assigned lessons, manage exams, assignments, and attendance for their classes.
    • Student: View personal schedule, results, exams, and assignments through a weekly BigCalendar.
    • Parent: Monitor their children's schedules and academic activities.

๐Ÿ“… Schedule & Calendar

  • Weekly BigCalendar: Interactive work-week view (react-big-calendar) showing lessons mapped by day (Mondayโ€“Friday).
  • Day Navigation: Easily switch between days to view different lesson schedules.
  • Event Visibility: 8:00 AM lessons are clearly visible with a start time offset of 7:30 AM.

๐Ÿ“š Academic Management

  • Lessons: Create and manage lessons with assigned subject, class, teacher, day, and time.
  • Exams & Assignments: Linked to specific lessons with start/end time support.
  • Results: Track student performance per exam or assignment.
  • Attendance: Record and update attendance per lesson.
  • Announcements & Events: Create global or class-specific communications.

๐Ÿ‘ค People Management

  • Teachers & Students: Full CRUD with photo upload via Cloudinary, Clerk user creation, and role assignment.
  • Parents: Independently created with a searchable student-linking dropdown (multi-select).

๐ŸŽจ User Experience & Design

  • Premium Forms: Polished form modals with loading spinners, error states, section headers, and toast notifications.
  • Responsive Layout: Clean, modern design across all screen sizes with DaisyUI + Tailwind CSS.

๐Ÿ“ธ Screenshots

๐Ÿ  Admin Dashboard

Admin Dashboard

๐Ÿ‘จโ€๐Ÿซ Teacher Dashboard

Teacher Dashboard

๐Ÿ‘จโ€๐ŸŽ“ Student Dashboard

Student Dashboard

๐Ÿ‘ช Parent Dashboard

Parent Dashboard


๐Ÿ›  Tech Stack

Category Technology
Framework Next.js 15.0.7
Language TypeScript 5
Styling Tailwind CSS 3.4.1 + DaisyUI 4.12.23
Authentication Clerk 6.10.2
Database ORM Prisma 6.2.1
Database PostgreSQL (Neon)
Image Upload Cloudinary (next-cloudinary 6.16.0)
Calendar react-big-calendar 1.18.0
Charts Recharts 2.15.0
Form Management React Hook Form 7.54.2 + Zod 3.24.1
Notifications react-toastify 11.0.3
Code Quality ESLint + Prettier + Husky + commitlint

๐Ÿ“ Project Structure (Important Files)

src/app/layout.tsx โ€” Root layout with Clerk provider
src/app/globals.css โ€” Global CSS including BigCalendar premium styles
src/app/loading.tsx โ€” Global loading UI
src/app/not-found.tsx โ€” Custom Not Found page
src/app/error.tsx โ€” Global error page that catches runtime errors
src/app/api/ โ€” API routes for parent/student search
src/components/ โ€” Reusable UI components
src/lib/actions/ โ€” Server actions for all CRUD operations
src/lib/prisma.ts โ€” Prisma client singleton instance
src/lib/settings.ts โ€” Route access map
src/lib/utils.ts โ€” Helpers function
prisma/schema.prisma โ€” Full database schema
prisma/seed.ts โ€” Database seed script
src/middleware.ts โ€” Clerk route protection middleware
public/ โ€” Static assets including images and icons
tailwind.config.ts โ€” Tailwind CSS configuration
next.config.ts โ€” Next.js configuration


๐Ÿ“ฆ Installation & Usage

Follow these steps to set up the project locally:

1. Prerequisites

Ensure you have the following installed:

2. Clone the Repository

git clone https://github.com/TanvirCou/grade-sync.git
cd grade-sync

3. Install Dependencies

npm install
# or
yarn install

4. Configure Environment Variables

Create a .env file in the root directory and add the following variables:

# PostgreSQL (Neon)
DATABASE_URL_UNPOOLED=
PGHOST=
PGHOST_UNPOOLED=
PGUSER=
PGDATABASE=
PGPASSWORD=
POSTGRES_URL=
POSTGRES_URL_NON_POOLING=
POSTGRES_USER=
POSTGRES_HOST=
POSTGRES_PASSWORD=
POSTGRES_DATABASE=
POSTGRES_URL_NO_SSL=
POSTGRES_PRISMA_URL=

# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in

# Cloudinary (Image Uploads)
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=
NEXT_PUBLIC_CLOUDINARY_API_KEY=

5. Set Up the Database

Run Prisma migrations and seed the database:

npx prisma migrate dev
npx prisma db seed

6. Run the Application

Start the development server:

npm run dev
# or
yarn dev

The application will be available at http://localhost:3000.


๐Ÿ”ฎ Future Enhancements

  • Real-time Notifications โ€” Live alerts for new assignments, announcements, and exam results.
  • Grade Analytics โ€” Visual charts per student showing performance trends over time.
  • AI-Powered Insights โ€” Attendance pattern analysis and performance prediction.
  • Mobile App โ€” React Native companion app for students and parents.
  • Multi-language Support (i18n) โ€” Expand accessibility with support for multiple languages.

๐Ÿ“„ License

This project is for educational and portfolio purposes.

About

Grade-Sync is a school management system built with Next.js, Prisma, and PostgreSQL, featuring role-based dashboards for admins, teachers, students, and parents.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages