Exams Repo is a REST API built to manage the share of old exams between students. Along with getting and posting exams, the API can sign AWS put requests for client-side uploading. You can check out the frontend repo that consumes this API here
front end app consuming this API
Please note:
The backend is hosted on Heroku free, it takes a while for it to wake up
The UI is intentionally disorienting to discourage Instructors from digging into
- List all the exams for a given combination of Degree and Instructor
- List all the exams for a given combination of Degree and Class
- Add a new exam to the database with a link to the exam file
- Upload a new exam
- Add a new degree
Examinations don't have to be a guesser's game. If some people know how an Instructor has been evaluating their students, why shouldn't all people know? Students all over the world see it this way, but they keep storing these exams in some messy drive. Exams Repo organizes the exams by degree, professor and class. It will also further classify the exams based on it's semester and category. Exams Repo can be used to help students get straight to the point. Here's what to study, now go ahead and ace it!
- TypeScript, Node.js , Express.js , PostgreSQL
- Jest , supertest
- This project was built using Node v14.16.1 , make sure you have a compatible version of Node installed. You can check your version of Node by running
$ node --version
- If you already have Node but do not wish to upgrade, please checkout NVM
- The database is built with PostgreSQL which you should also have
- Once you have everything installed, clone this repository
$ git clone https://github.com/vitorelourenco/exams-repo-backend-api
- Navigate to the project's folder
$ cd exams-repo-backend-api
- Install the dependencies
$ npm i
- Create a database in postgres called examsrepo
$ createdb -h localhost -p 5432 -U postgres examsrepo
- Create a test database in postgres called examsrepotest
$ createdb -h localhost -p 5432 -U postgres examsrepotest
- Build the project to compile TypeScript into JavaScript
$ npm run build
- Run typeorm migrations to get the latest database schema
npm run typeorm migration:run
-
Create a .env file following the template provided in .env.example , you can leave the port as is but please remember to use your postgres password in the database url. Also, the upload feature won't work without an AWS setup. You can learn how to make your own AWS s3 bucket here and you can learn how to sign put requests here . The signing code is already baked in but you'll need credentials either way. Learn how to create your AWS keys here
-
Follow the installation steps for the front end if you wish to see your local version being consumed over a browser.
$ npm run dev
$ npm run test
$ npm run build
👤 Vitor Emanuel Lourenco
- GitHub: @vitorelourenco
- Twitter: @Vitorel
- LinkedIn: vitoremanuellourenco
- As a user I want to add a new Class
- As a user I want to add a new Instructor
- As a user I want to tie an Instructor to a Class
- You can take a look at the Possible Future Features session and open a PR that implements them.
- You can also suggest other features.
- Feel free to check out the issues page.
Give a ⭐️ if you like this project!