BORGA provides access, through a web interface, to some of the features provided by the Board Game Atlas website, making use of its Web API for this purpose.
The link for the deployed application is here.
BORGA allows the user to perform the following operations:
- Search board games by name
- See details of a specific game
- Gets the 20 most popular board games
- Create and manage groups of games (requires login)
These operations can be performed via Web-UI (Website) or Web-API.
The application modules dependencies are the following:
Modules description:
-
borga-launch.js
- launches the server application -
borga-config.js
- contains the application configurations, such as database and guest user information -
borga-server.js
- entry point to the server application -
borga-web-site.js
- implementation of the web site -
borga-web-api.js
- implementation of the HTTP routes that make up the REST API of the web application -
borga-services.js
- implementation of the logic of each of the application's functionalities -
board-games-data.js
- access to the Board Games Atlas API -
borga-data-mem.js
- access to borga data (games, groups and users), stored in memory -
borga-data-db.js
- access to borga data (games, groups and users), stored in an ElasticSearch database -
borga-errors.js
- contains the applications errors list
The borga-data-mem.js
and borga-data-db.js
modules are at the same level and have similar implementations, so the server can choose which of the two the borga-services.js
module uses.
The user can search games by name, and manipulate the expected result by adding a limit of games to be searched and/or ordering the by name, rank or price. This operations does not require login.
The user also can see the current twenty most popular games from Board Game ATLAS. This operations does not require login.
In all game operations it's possible to see the game details by pressing the "Details" button.
To create and manage groups, it's required to be logged in. The user can register or do login in the following page:
If the user is logged in, he can create, edit and delete personal groups of board games.
A group consists of a name, a description and a list of games.
Create Group
The user can create a group by passing a name and a description. Multiple groups can have the same name.
Edit Group
The user can edit a group by passing a new name and a new description.
Delete Group
The user can delete a group, but once it's deleted there's no going back.
Add Games to Group
The user can add multiple games to a group.
Remove Games from Group
The user can remove a game from a group. A group can be empty.
The Web API has the following paths/operations:
- GET
/games/popular
- Gets the list of the most popular games. - GET
/games/search
- Searches games by name. - GET
/games/{gameId}
- Gets the game details. - POST
/user
- Creates a new user. - POST
/user/{userId}/groups
- Creates a group providing its name and description. - GET
/user/{userId}/groups
- Lists all groups. - POST
/user/{userId}/groups/{groupId}
- Edits a group by changing its name and description. - DELETE
/user/{userId}/groups/{groupId}
- Deletes a group. - GET
/user/{userId}/groups/{groupId}
- Gets the details of a group. - POST
/user/{userId}/groups/{groupId}/games
- Adds a game to a group. - DELETE
/user/{userId}/groups/{groupId}/games/{gameId}
- Removes a game from a group.
Professor: Eng. João Trindade
ISEL
Bachelor in Computer Science and Computer Engineering
Introduction to Web Programming - LEIC32D - Group 03
Winter Semester of 2021/2022