{"id":28767124,"url":"https://github.com/davideastmond/book-report-react","last_synced_at":"2026-04-28T01:32:27.003Z","repository":{"id":295481421,"uuid":"988478524","full_name":"davideastmond/book-report-react","owner":"davideastmond","description":"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.","archived":false,"fork":false,"pushed_at":"2025-12-02T20:45:45.000Z","size":776,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-12-04T12:44:42.521Z","etag":null,"topics":["drizzle-orm","full-stack","neon-postgres","next-js","react-testing-library","reactjs","tailwindcss","typescript","vercel","vitest"],"latest_commit_sha":null,"homepage":"https://book-report-react.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davideastmond.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-22T15:51:25.000Z","updated_at":"2025-11-21T20:38:57.000Z","dependencies_parsed_at":"2025-05-25T20:26:46.931Z","dependency_job_id":"177e55d1-c721-480d-bba9-a1ed763c357b","html_url":"https://github.com/davideastmond/book-report-react","commit_stats":null,"previous_names":["davideastmond/book-report-react"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/davideastmond/book-report-react","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davideastmond%2Fbook-report-react","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davideastmond%2Fbook-report-react/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davideastmond%2Fbook-report-react/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davideastmond%2Fbook-report-react/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davideastmond","download_url":"https://codeload.github.com/davideastmond/book-report-react/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davideastmond%2Fbook-report-react/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32362781,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T20:07:02.737Z","status":"ssl_error","status_checked_at":"2026-04-27T20:07:00.910Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["drizzle-orm","full-stack","neon-postgres","next-js","react-testing-library","reactjs","tailwindcss","typescript","vercel","vitest"],"created_at":"2025-06-17T13:01:03.695Z","updated_at":"2026-04-28T01:32:26.998Z","avatar_url":"https://github.com/davideastmond.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Book Report\n\n## About\n\nThis 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.\n\n## Features\n\n### Authentication\n\n- Sign up and log in with email and password.\n- Student and Admin/Teacher security access\n\n### User Management\n\n- User can update their password.\n- User can update their name.\n\n### Courses and Course Work\n\n- Admins/Teachers can create courses.\n- Admins/Teachers can create/update course work (assignments, quizzes, exams, essays...) for courses.\n- Admins/Teachers can enroll students in courses.\n- Students can enroll and de-enroll themselves in/from courses.\n- Admins/Teachers can lock a course, preventing students from enrolling or de-enrolling.\n- Admins/Teachers can set a course as completed.\n\n### Grade Weighting\n\n- Admins/Teachers can allocate weights to course work to emphasize importance of particular assignments, quizzes or final exams.\n\n### Grading\n\n- Admins/Teachers can assign numerical grades (0 - 100) for course work.\n\n### Final Grade Calculation and GPA\n\n- All course final grades are calculated using the defined weights.\n- 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.\n\n### Charts, Graphs and Statistics\n\n- Admins/Teachers can view charts and graphs of course work grades.\n- Admins/Teachers can view statistics of course work grades (averages, medians, etc.).\n\n## Tech Stack\n\n- [React](https://reactjs.org/) - A JavaScript library for building user interfaces\n- [Next.js and Vercel](https://nextjs.org/) - The React Framework for producing full-stack applications with server-side rendering and static site generation\n- [NextAuth.js](https://next-auth.js.org/) - Authentication for Next.js applications\n- [TypeScript](https://www.typescriptlang.org/) - A superset of JavaScript that compiles to clean JavaScript output\n- [Tailwind CSS](https://tailwindcss.com/) - A utility-first CSS framework for creating custom designs\n- [Drizzle ORM](https://orm.drizzle.team/) - TypeScript ORM for Postgres databases\n- [PostgreSQL](https://www.postgresql.org/) - The world's most advanced open source relational database\n- [Amazon RDS](https://aws.amazon.com/rds/) - AWS Amazon Relational Database Service (Postgres)\n- [Ag Charts](https://www.ag-grid.com/charts/react/quick-start/) - A powerful charting library for React applications\n- [Vitest](https://vitest.dev/) - A Vite-native test framework\n- [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/) - A lightweight solution for testing React components\n\n## Environment Variables\n\n- `DATABASE_URL=`#the connection string for your postgres instance\n- `NEXT_AUTH_SECRET=`#Required for auth - it can be any string\n- `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.\n\n## Getting Started\n\n- Clone the repository.\n- Create a `.env.local` file in the root directory of the project and add the following environment variables, using `sample.env` as a reference:\n- install the dependencies by running:\n\n```bash\nnpm install\n# or\nyarn install\n# or\npnpm install\n```\n\n- Run the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n# or\npnpm dev\n```\n\n- Run the test suite\n\n```bash\nnpm run test\n# or\nyarn test\n# or\npnpm test\n```\n\n- Test Coverage\n\n```bash\nnpm run test:coverage\n# or\nyarn test:coverage\n# or\npnpm test:coverage\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavideastmond%2Fbook-report-react","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavideastmond%2Fbook-report-react","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavideastmond%2Fbook-report-react/lists"}