Skip to content

Assignment - Backend Programming

agenda

As a mandatory backend development assignment, choose either of these assignments. You can find more information about both of the assignments in this document.

Recognition of Informal Learning

Contact Pasi Manninen, if you think that you are already a very skilled with backend programming and you have worked with some backend programming technology. You don't need to write any official papers/applications for that one. We can just arrange a code review meeting together.


1. Your own idea - main plan

You need to do backend based application in this assignment. You can use any server side programming language and database technologies. If you are using your own idea, then you need to discuss with teacher to get approvement. First look below reservations assignment to get an idea what kind of assignments are good ones.

Tip

Remember that you can create one full stack application which backend is created in this course and UI/client is created in YTSP0300 - Application Frameworks course.

You can pass this assignment, if you have done some server side application before. Just talk with Pasi Manninen about that (acquired prior learning).


2. Reservations - backup plan

Create a RESTful Web Service with Node/Express/Mongo, which you can use to make time reservations. You can make reservations for example for a dentist, a barber or for a doctor.

agenda

First define Schemas and Models. Model is something you save into the Mongo database. For saving models into the Mongo you can use Mongoose. You need different models for the client, for the worker, for reservations and for something you are reserving (for some service). You can assume that reserved time block can be variable of length. Connect client info and service to reservations. So, reservations is the "basic model" which connect to other models. Then define routes for you rest service.

For example Reservations can include the following routes:

  • GET /reservations - to get all the reservations
  • GET /reservations?search_criteria - to search the reservations by using different search criterias (like client's service, time between etc)
  • POST /reservations - to add new reservation
  • PUT /reservations/:id - to update new reservation
  • PATCH /reservations/:id - to partially update new reservation (like changing reservation time etc.)
  • DELETE /reservations/:id - to remove reservation

You can create some authorization mechanims for this assignment (admin can see/modify all the reservations, worker can see/modify only own made reservations, etc..). Using simple authentication module like require('passport') or JWT is enough.

Core requirements, grade 0-3

  • A new Worker, Client and Service can be created, modified, deleted
  • Worker can create a new reservation with client and service information
  • Worker can see a list of only own made reservations
  • Worker can edit/delete only own made reservation

Extra requirements, grade 4-5

  • Reservation can contain multiple services in same reservation
  • Admin can see all the worker data (name, phone, email, etc...)
  • Admin can see the list of all reservations
  • Admin can modify all available reservations
  • Use JWT or similar for the access token implementation

Client (testing service)

Use Postman or Visual Studio Code RestClient to test your RESTful service.

You don't need to do any client UI implementation to your application, but if you have skills and/or time you can use some client side framework like React, Angular or Vue to create a basic UI to your application.

Documentation

You need to include your planning documentation, which includes for example REST endpoints used, structure of your application, which APIs (and npms) will be used, what features you are going to implement, etc...

You need to keep track of your doing, which includes: day, task/feature information, time spent. Include also total hours. Every student need to keep that!

Include final documentation which describes what you have done and what planned features are implemented and are working in your app. Describe application architecture shown graphically, structure, function relationships, application relationships to files, databases, etc.

At the end, write your own feelings about your work with grade proposal. What parts of the project you found were easy, what parts were hard, what was the greatest learning experience for you during the project, any additional info you might want to provide. Self evaluation grade number about your work.

Remember include link to a video where you demo your app.

Use your repository README.md (or multiple md's) to create your documentation. Remember add your name and course what you are participating.


Returning

Create your own repository to our GitLab/Labranet and add at least a reporter role to Pasi Manninen for the evaluation purposes. This repository should contain all the source codes and documentation.

The repository must contain all the programming codes used in the application. Remember tell which codes have been learned from the tutorials and / or partially copied from elsewhere on the Internet or from the books. The source URLs of the other implemented codes used must be clearly displayed and told. All the programming codes are clearly commented. It is also clearly told what codes have been done by yourself (your own made codes).

Use a read.me file or wikis for the project documentation.

The results of the assignments are presented in a seminar or with a recorded video. For video recording, student can use e.g. Screencast-O-Matic. For storing, student can use e.g. YouTube or other cloud service because repositories are limites to 500 MB in GitLab/JAMK.


Grading

Grading is based on following:

  • Project work has been done throughout the course (not only in the last days)
  • Informativeness of the documentation
  • Number of the completed features
  • App and code structure, cleanes, commenting, error-free code
  • Quality of the code
  • RESTful implementation
  • Taking advantage and usage of external libraries
  • Results and their analysis
  • Reporting and presentation
  • Extra credit can be aquired by writing some tests

Tutorials and other materials from web

You can use tutorials for learning, but don't completely use any tutorials as your assignment. You need to do something by your own. If you are using some tutorials or any other materials from web, remember iclude those sources to your documentation or source code.

Warning

Don't use already made materials, make your own research! If you need more information about this, just contact teacher.