Skip to content

IPW_IP 2324 1 A3

Luís Falcão edited this page Dec 6, 2023 · 2 revisions
Instituto Superior de Engenharia de Lisboa
Bachelor in Computer Science and Computer Engineering
Bachelor in Informatics, Networks and Telecommunications Engineering
Internet Programming/Introduction to Web Programming
Winter Semester of 2023/2024 – 3rd practical assignment - SECA - Part2

Delivery

Due date for this assignment: 10/12/2023-23h59 17/12/2023-23h59

Delivery method

The development of the SECA 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 SECA application. The assignment should be delivered in the same Git repository used in part 1, by creating a tag called SECA-P2. If you need to make some changes to the delivery, just create another tag named SECA-P2.1, SECA-P2.2, etc.

The main goals of this part are adding a Web user interface to the SECA application developed in part 1, storing data in a database instead of memory, and incorporating new technologies and techniques covered in lectures.

Functional requirements

  1. Add the following to SECA Web API:

    1. Support more than one group with the same name, irrespective of its owner user.
    2. Create a new resource that returns the event (this is not a search by id), which must include at least the following details: name, an image, sales start and end time, event date(s), segment, genre and subGenre. This resource URI must contain the event ID.
  2. 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 movies. The only situations in which it is allowed to write the name of a movie 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.

Non-functional requirements

  1. The web HTML and CSS interface should be implemented in a new file called seca-web-site.js that should be at the same level as seca-web-api.js.
  2. Create a new module that replaces seca-data-mem.js 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 in seca-server. The interaction with ElasticSearch must be done through its HTTP API using fetch function, without using any specific node module for ElasticSearch.
  3. 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.
  4. [optional] Create integration tests for the API with supertest module

The server application modules dependencies should be as follows:

Module dependencies

Clone this wiki locally