{"id":15450767,"url":"https://github.com/2color/real-world-grading-app","last_synced_at":"2025-04-06T22:08:34.439Z","repository":{"id":42887230,"uuid":"279902498","full_name":"2color/real-world-grading-app","owner":"2color","description":"An example of a real-world REST API backend built with TypeScript, Hapi, Prisma, and PostgreSQL. ","archived":false,"fork":false,"pushed_at":"2022-08-09T22:38:04.000Z","size":416,"stargazers_count":302,"open_issues_count":8,"forks_count":88,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-03-30T20:11:56.994Z","etag":null,"topics":["database-schema","hapi","orm","postgresql","prisma","rest-api","typescript"],"latest_commit_sha":null,"homepage":"","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/2color.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}},"created_at":"2020-07-15T15:15:40.000Z","updated_at":"2025-03-21T14:14:22.000Z","dependencies_parsed_at":"2022-08-12T10:10:48.390Z","dependency_job_id":null,"html_url":"https://github.com/2color/real-world-grading-app","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2color%2Freal-world-grading-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2color%2Freal-world-grading-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2color%2Freal-world-grading-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2color%2Freal-world-grading-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2color","download_url":"https://codeload.github.com/2color/real-world-grading-app/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247557767,"owners_count":20958047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["database-schema","hapi","orm","postgresql","prisma","rest-api","typescript"],"created_at":"2024-10-01T21:19:15.436Z","updated_at":"2025-04-06T22:08:34.418Z","avatar_url":"https://github.com/2color.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Real-world class grading backend\n\n## ⚠️ Warning\n\nThis repo is no longer actively maintained, however it's still a [great educational](https://www.prisma.io/blog/backend-prisma-typescript-orm-with-postgresql-data-modeling-tsjs1ps7kip1) resource for building REST APIs in Node.js. \n\n## Intro\n\nA real-world class grading application built with Prisma.\n\nThe grading application is used to manage enrollment in online classes, tests (as in exams) for classes, and test results.\n\nThe goal if this application is to showcase a real-world scenario of an application using Prisma. the following aspects of Prisma\n- Data modeling\n- CRUD\n- Aggregations\n- API layer\n- Validation\n- Testing\n- Authentication\n- Authorization\n- Integration with other APIs\n- Deployment\n\nCheck out the [**associated tutorial**](https://www.prisma.io/blog/modern-backend-1-tsjs1ps7kip1/) to learn more about how the backend was built.\n\n## Data model\n\nThe development of this project is driven by the database schema (also known as the data model).\nThe schema is first designed to represent the following concepts:\n\n- **User**: this can be a student or a teacher, or both. The role of the user is determined through their association with a course.\n- **Course**: represent a course that can have multiple students/teachers. Each user can be associated with multiple courses either as a student or as a teacher.\n- **CourseEnrollment**: \n- **Test**: Each course can have many tests\n- **TestResult**: Each Test can have many TestReusults that is associated with a student\n\nThese are defined in the [Prisma schema](./prisma/schema.prisma).\nThe database schema will be created by Prisma Migrate.\n\n## Tech Stack\n\n- Backend:\n  - PostgreSQL\n  - Node.js\n  - Prisma\n  - TypeScript\n  - Jest\n  - Hapi.js\n\n## How to use\n\nInstall npm dependencies:\n\n```\nnpm install\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2color%2Freal-world-grading-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2color%2Freal-world-grading-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2color%2Freal-world-grading-app/lists"}