This is a web app platform to manage academic grades for a school or university, allowing instructors to manage courses, course work, students and grades, and allowing students to manage their courses and grades.
- Sign up and log in with email and password.
- Student and Admin/Teacher security access
- User can update their password.
- User can update their name.
- Admins/Teachers can create courses.
- Admins/Teachers can create/update course work (assignments, quizzes, exams, essays...) for courses.
- Admins/Teachers can enroll students in courses.
- Students can enroll and de-enroll themselves in/from courses.
- Admins/Teachers can lock a course, preventing students from enrolling or de-enrolling.
- Admins/Teachers can set a course as completed.
- Admins/Teachers can allocate weights to course work to emphasize importance of particular assignments, quizzes or final exams.
- Admins/Teachers can assign numerical grades (0 - 100) for course work.
- All course final grades are calculated using the defined weights.
- Students can search for courses that are completed within a time frame, and the system will calculate the final grade and GPA for all courses.
- Admins/Teachers can view charts and graphs of course work grades.
- Admins/Teachers can view statistics of course work grades (averages, medians, etc.).
- React - A JavaScript library for building user interfaces
- Next.js and Vercel - The React Framework for producing full-stack applications with server-side rendering and static site generation
- NextAuth.js - Authentication for Next.js applications
- TypeScript - A superset of JavaScript that compiles to clean JavaScript output
- Tailwind CSS - A utility-first CSS framework for creating custom designs
- Drizzle ORM - TypeScript ORM for Postgres databases
- PostgreSQL - The world's most advanced open source relational database
- Amazon RDS - AWS Amazon Relational Database Service (Postgres)
- Ag Charts - A powerful charting library for React applications
- Vitest - A Vite-native test framework
- React Testing Library - A lightweight solution for testing React components
DATABASE_URL=#the connection string for your postgres instanceNEXT_AUTH_SECRET=#Required for auth - it can be any stringADMIN_PASSWORD=#Create an admin password to allow for admin tasks. It can be any string. It needs to be included in the Authorization headers as a Bearer token for admin tasks.
- Clone the repository.
- Create a
.env.localfile in the root directory of the project and add the following environment variables, usingsample.envas a reference: - install the dependencies by running:
npm install
# or
yarn install
# or
pnpm install- Run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev- Run the test suite
npm run test
# or
yarn test
# or
pnpm test- Test Coverage
npm run test:coverage
# or
yarn test:coverage
# or
pnpm test:coverageOpen http://localhost:3000 with your browser to see the result.