Skip to content

A JEE back-end implementing REST API for managing primary school bureaucracy.

License

Notifications You must be signed in to change notification settings

polimi-mt-acg/back2school

Repository files navigation

back2school

A JEE web application backend of REST APIs for a primary school backend.

Project assignment

The goal of this service is to create a backend for managing primary school bureaucracy. The service should be exposed as a REST API. The back end should support the day-to-day operations of three kinds of users: parents, teachers, and administrators.

A fourth kind of user exists in the system, that is students. However, students do not have access to the API.

Parents should be able to:

  • see/modify their personal data
  • see/modify the personal data of their registered children
  • see the grades obtained by their children
  • see/modify appointments that they have with their children's teachers (calendar-like support for requesting appointments)
  • see the monthly payments that have been made to the school in the past
  • see/pay (fake payment) upcoming scheduled payments (monthly, material, trips)
  • see general/personal notifications coming from the school

Teachers should be able to:

  • see/modify their personal data
  • see the classrooms in which they teach, with information regarding the argument that they teach in that class, the students that make up the class, and the complete lesson timetable for that class
  • provide grades for the students in their class
  • see/modify the appointments that they have with parents

Administrators should be able to:

  • see the students that are enrolled in each class
  • create new students in the system and enroll them in classes
  • create new administrator/parent/teacher accounts
  • issue new payment requests to parents
  • send general notifications to all the parents/teachers in the school, to the parents/teachers of a specific class, or to a single specific parent/teacher.

Use appropriate authentication to ensure that specific users can only interact with specific resources.

Evaluated on: design of the API (resources/URIs/representations) + hypermedia

Our solution

The project has been implemented as JEE REST web application.

The application consist of a backend that exposes a set of REST API implemented with JAX-RS technology. To persist the data we used Hibernate ORM, a JPA implementation that abstract the data manipulation and ease the database interaction.

Standards and technologies employed:

  • Java 1.8 programming language
  • Maven project management and comprehension tool
  • JEE standard with: Wildfly application server (JBoss EAP: Enterprise Application Platform)
  • JAX-RS standard with: Jersey abstraction for RESTful Web Services in Java
  • JPA standard with: Hibernate ORM to handle data persistence and database interaction
  • SQL underling data query language, MariaDB database engine
  • JSON standard for structured data transfer
  • Docker paravirtualization technology for containerization of services and dev environment setup speed up
  • phpMyAdmin interface for database data visualization
  • TDD test driven development approach with Arquillian-JUnit framework for automated testing
  • Postman popular HTTP Request composer for by hand APIs tests

Project documentation

Checkout the documentation to initialize and run this project.

APIs documentation

Checkout the APIs documentation (made thanks to Postman) to discover all the implemented endpoints' functionality.

Project presentation

back2school project presentation - Arcari, Cilloni, Gregori

Project context

This project has been developed for the Middleware Technologies for Distributed Systems course (A.Y. 2017/2018) at Politecnico di Milano. Look at the polimi-mt-acg page for other projects.

Releases

No releases published

Packages

No packages published

Languages