IPW_IP 2425 1 A3 - isel-leic-ipw/2425i-IPW-LEIC33D GitHub Wiki
Bachelor in Informatics, Networks and Telecommunications Engineering
Winter Semester of 2024/2025 – 3rd practical assignment - FOCCACIA - Part2
The development of the FOCCACIA application has 3 development cycles, phased in three parts. For each one, the deadline for delivering the solution will be defined, and it will be a non-negotiable requirement.
This document includes the requirements of part 2 of the FOCCACIA application. The assignment should be delivered in the same Git repository used in part 1, by creating a tag called FOCCACIA-P2
. If you need to make some changes to the delivery, just create another tag named FOCCACIA-P2.1
, FOCCACIA-P2.2
, etc.
The main goals of this part are adding a Web user interface to the FOCCACIA application developed in part 1, storing data in a database instead of memory, and incorporating new technologies and techniques covered in lectures.
-
Add the following to FOCCACIA Web API:
- Support more than one group with the same name, irrespective of its owner user.
- Create a new resource that returns a given team details (this is not a search), which must include at least the following details: team name, team image, stadium name, and the leagues the team has participated.
-
Create a web interface for presentation in a web browser, for all the functionalities provided by the Web API. All operations that in Web Api are implemented with PUT and DELETE methods, except for user creation, must be implemented using the POST method using HTML forms. This web interface is server-side rendered, using the following technologies: HTML, CSS, and Handlebars. You may use Bootstrap for the base style of the user interface.
When using the web application, in no situation the (human) user will have to know and/or introduce any id for groups or teams or leagues. The only situations in which it is allowed to write the name of a teams is to carry out searches in order to obtain a list of results. The only situation in which it is allowed to manually enter the name of a group is when creating or editing that group.
-
The web HTML and CSS interface should be implemented in a new file called
focaccia-web-site.mjs
that should be at the same level asfocaccia-web-api.mjs
. -
Create a new module that replaces
focaccia-data-mem.mjs
so that the data is stored in an ElasticSearch database. This change should not imply any additional change in the remaining modules of the application besides module loading infocaccia-server.mjs
(or a specific module for application configurations). The interaction with ElasticSearch must be done through its HTTP API using fetch function, without using any specific node module for ElasticSearch.
NOTE: The module focaccia-data-mem.mjs
must not be deletes and it should be possible to change the implementations by changing the module imports in the module that configuras the application.
-
In addition to the previous requirements, this part of work should be used to improve the code quality as well as the quality and quantity of tests, whether unit or integration.
-
[optional] Create integration tests for the API with supertest module
The server application modules dependencies should be as follows: