A JEE web application backend of REST APIs for a primary school backend.
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
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
Checkout the documentation to initialize and run this project.
Checkout the APIs documentation (made thanks to Postman) to discover all the implemented endpoints' functionality.
back2school project presentation - Arcari, Cilloni, Gregori
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.