https://github.com/davideastmond/book-report-react
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.
https://github.com/davideastmond/book-report-react
drizzle-orm full-stack neon-postgres next-js react-testing-library reactjs tailwindcss typescript vercel vitest
Last synced: about 2 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/davideastmond/book-report-react
- Owner: davideastmond
- Created: 2025-05-22T15:51:25.000Z (about 1 year ago)
- Default Branch: dev
- Last Pushed: 2025-12-02T20:45:45.000Z (7 months ago)
- Last Synced: 2025-12-04T12:44:42.521Z (7 months ago)
- Topics: drizzle-orm, full-stack, neon-postgres, next-js, react-testing-library, reactjs, tailwindcss, typescript, vercel, vitest
- Language: TypeScript
- Homepage: https://book-report-react.vercel.app
- Size: 758 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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](https://reactjs.org/) - A JavaScript library for building user interfaces
- [Next.js and Vercel](https://nextjs.org/) - The React Framework for producing full-stack applications with server-side rendering and static site generation
- [NextAuth.js](https://next-auth.js.org/) - Authentication for Next.js applications
- [TypeScript](https://www.typescriptlang.org/) - A superset of JavaScript that compiles to clean JavaScript output
- [Tailwind CSS](https://tailwindcss.com/) - A utility-first CSS framework for creating custom designs
- [Drizzle ORM](https://orm.drizzle.team/) - TypeScript ORM for Postgres databases
- [PostgreSQL](https://www.postgresql.org/) - The world's most advanced open source relational database
- [Amazon RDS](https://aws.amazon.com/rds/) - AWS Amazon Relational Database Service (Postgres)
- [Ag Charts](https://www.ag-grid.com/charts/react/quick-start/) - A powerful charting library for React applications
- [Vitest](https://vitest.dev/) - A Vite-native test framework
- [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/) - 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:
```bash
npm install
# or
yarn install
# or
pnpm install
```
- Run the development server:
```bash
npm run dev
# or
yarn dev
# or
pnpm dev
```
- Run the test suite
```bash
npm run test
# or
yarn test
# or
pnpm test
```
- Test Coverage
```bash
npm run test:coverage
# or
yarn test:coverage
# or
pnpm test:coverage
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.