Skip to content

A academic management application for instructors and students built with NextJs. Users can interact with courses and grade management tools - like a university student portal.

Notifications You must be signed in to change notification settings

davideastmond/book-report-react

Repository files navigation

Book Report

About

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.

Features

Authentication

  • Sign up and log in with email and password.
  • Student and Admin/Teacher security access

User Management

  • User can update their password.
  • User can update their name.

Courses and Course Work

  • 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.

Grade Weighting

  • Admins/Teachers can allocate weights to course work to emphasize importance of particular assignments, quizzes or final exams.

Grading

  • Admins/Teachers can assign numerical grades (0 - 100) for course work.

Final Grade Calculation and GPA

  • 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.

Charts, Graphs and Statistics

  • Admins/Teachers can view charts and graphs of course work grades.
  • Admins/Teachers can view statistics of course work grades (averages, medians, etc.).

Tech Stack

  • 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

Environment Variables

  • DATABASE_URL=#the connection string for your postgres instance
  • NEXT_AUTH_SECRET=#Required for auth - it can be any string
  • ADMIN_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.

Getting Started

  • Clone the repository.
  • Create a .env.local file in the root directory of the project and add the following environment variables, using sample.env as 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:coverage

Open http://localhost:3000 with your browser to see the result.

About

A academic management application for instructors and students built with NextJs. Users can interact with courses and grade management tools - like a university student portal.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages