Skip to content

codeurjc-students/2024-Bookmarks-Forums

Repository files navigation

Application render

Bookmarks Forums

Table of contents

  1. About this Web Application
  2. Medium blog link
  3. GitHub Project link
  4. What this does
  5. Other details
    1. Entities and ER diagram
    2. Backend diagram
    3. Frontend (SPA) diagram
    4. Permissions per kind of user
    5. Images' info
    6. Graphs and charts
    7. Advanced complementary technology
    8. Other algorithms
    9. Extras
  6. Wireframe
  7. Screenshots
  8. Current navigation map
  9. REST API Documentation
  10. Docker instructions for building the application's image
  11. Docker instructions for running the application's container
  12. Demonstrative video

1. About this Web Application

  • Web Application's name: Bookmarks Forums.
  • Author: Izan Ruiz Ballesteros
  • Tutors: Óscar Soto Sánchez, Micael Gallego Carrillo

2. Medium blog link

This project has a blog posted in Medium. Click here to visit it!

3. GitHub Project link

Click here if you want to visit the GitHub Project.

4. What this does

Basic functionality

Bookmarks is an already existing web application where users could search for books and mark them as currently reading, already read and want to read.

Bookmarks Forums is the update that brings the social to that application!

With Bookmarks Forums any user will be able to sign up or login to the forums, create content about their favorite authors or books, follow other users, join and create communities and meet new people!

Advanced functionality

Apart from what has been mentioned above, Bookmarks Forums will allow set search sorting filters for searching the most popular or recent posts.

Users will be able to create chat rooms to chat between each other.

The main landing page will serve posts and content using an algorithm based on the popularity of posts.

The application will offer charts that will allow users and administrators to easily check the most popular users and more.

Users will receive emails regarding messages or replies to their posts.

The application will serve a REST API.

Administrators will be able to see the worst behaving users and ban them from the site.

The chats and advanced administrator functionalities will be implemented in the v1.0 release of the application.

5. Other details

Here are the technical aspects of the web application described:

i. Entities and ER diagram

For the current version of the application, it has the following entities in its database:

  • User: the users of the application.
  • Post: publications made by the users.
  • Reply: short text as a response to an existing post.
  • Community: groups of users, posts and post replies.
  • Ban: a user can be banned from a community. This entity is used to store the ban information.

The users database is separated from Bookmarks to let the users decide whether they want to participate in the forums or not, regardless of having a Bookmarks account.

Database Entity Relationship Diagram

ii. Backend diagram

The backend of the application is structured as follows:

Backend Class Diagram

  • #808080 Grey: entities.
  • #99c8ff Blue: repositories.
  • #fe7070 Red: services.
  • #fddf71 Yellow: REST controllers.
  • #7ed886 Green: other controllers.

iii. Frontend (SPA) diagram

The frontend of the application is structured as follows:

Frontend Class Diagram

  • #eab6ff Purple: components.
  • #99c8ff Blue: services.
  • #fe7070 Red: templates.
  • #7ed886 Green: directives.

iv. Permissions per kind of user

This table defines the permissions each kind of user has over which entity:

Kind of user Permissions Owner of
Visitor (unregistered user) Visit the landing page, search for forum posts, visit profiles, visit posts, visit communities. N/A
Registered user All the above plus join communities, create communities, modify communities, ban users from communities, create forum posts, modify posts, delete posts (only the ones they are owners of), reply to other users' posts, like posts, dislike posts. Post, Community, User.
Administrator All the above plus modify and delete all communities, modify and delete all posts. All

⚠️ NOTE: Registered users can only modify communities and ban users from communities they are owners of.

v. Images' info

These entities have images linked to them:

  • Community: communities have an icon.
  • User: users have profile pictures.
  • Post: a post may have multiple images.

vi. Graphs and charts

  • Users with the most liked content: shown in the landing page as a bar chart.
  • Rate of users registered per day: shown as a line chart in the administrator zone. (This will be implemented in the future as part of the administrator page, with its advanced functionalities).

vii. Advanced complementary technology

The aim is to include the following additional technologies to the project:

  • Mail notifications will be sent to users that have been directly messaged or replied.
  • Websockets will be used in order to offer real-time notifications for chat messages. (This will be implemented in the future as part of the chat functionality).

viii. Other algorithms

The landing page will show users the most popular posts based on how many likes they have and the most recent ones.

Users will have the ability to search for communities, posts or users.

Users will be able to sort posts by date (from most recent to least recent) or likes inside communities and users' profiles.

ix. Extras

Apart from the main functionality and technologies mentioned above, the web application will contain:

  • Automatic tests: for unit integration testing.
  • Packaging: as GraalVM native images.
  • Deployment: on a cloud VM.

6. Wireframe

Below is the list of screens the web application will have:

  • Login Page
  • Sign-up Page
  • Landing page.
  • Community page.
  • Community creation and modification page
  • Post page.
  • Post creation and modification page.
  • User profile page.
  • Chat page.
  • Search results page.
  • Administrator zone.
  • Error page.

And here is the wireframe:

Bookmarks Forums Navigation Map

⚠️ NOTE: The Search Results Page is accessible through the search bar located in the application's navigation bar at the top of the screen, which is visible in all pages except the Login and Sign-up pages.

7. Screenshots

Here are some screenshots of the web application, showcasing the different pages the current version of the application has:

Login page:

Login Screen Login screen for user authentication.

Sign-up page:

Sign-up Screen Sign-up screen for new users.

Landing page:

Landing Screen Main landing page after login.

Community page:

Community Screen Community page showing posts and members.

New/Edit Community page:

New/Edit Community Screen Page for creating or editing a community.

Post page:

Post Screen Detailed view of a single post.

New/Edit Post page:

New/Edit Post Screen Page for creating or editing a post.

User profile page:

User Profile Screen User profile page displaying user information.

Modify User page:

Modify User Screen Page for modifying user profile details.

Search results page:

Search Results Screen Search results page showing search outcomes.

Error page:

Error Screen Error page displayed for invalid actions or pages.

8. Current navigation map

Here is the navigation map of the web application. The map shows the different screens and the possible transitions between them per user permissions.

In this map, the chat and administrator zone are not shown as they will be implemented in the future as advanced functionalities.

Navigation Map

9. REST API Documentation

The documentation for the REST API has been generated using Swagger and the OpenAPI specification. The YAML file can be found in the following link: api-docs-yaml However, a more visual and interactive version can be found in the following link: Swagger UI

10. Docker instructions for building the application's image

⚠️ In order to build the application's Docker image, you need to have Docker, Node.js and Angular CLI installed on your machine.

To build the application's Docker image, follow these steps:

  1. Clone the repository to your local machine:
git clone https://github.com/codeurjc-students/2024-Bookmarks-Forums.git
  1. Login to your Docker account:
docker login
  1. Go to the project's docker directory:
cd 2024-Bookmarks-Forums/docker
  1. Run the following automated script to build the Docker image:

On Linux:

./create_image.sh

create_image.sh

On Windows:

create_image.bat

create_image.bat

This script will do the following:

  • Build the Angular project.
  • Copy the Angular project's build files to the backend's resources directory.
  • Build the backend project with Maven.
  • Build the Docker image with the backend's JAR file and the Dockerfile.
  • Push the Docker image to DockerHub.
  • Set up the Docker container with the application's image.

11. Docker instructions for running the application's container

⚠️ In order to run the application's Docker container, you need to have Docker installed on your machine.

To run the application's Docker container, follow these steps:

  1. Clone the repository to your local machine:
git clone https://github.com/codeurjc-students/2024-Bookmarks-Forums.git
  1. Go to the project's docker directory:
cd 2024-Bookmarks-Forums/docker
  1. Run one of these docker-compose commands to start the application's container:

On Linux:

sudo docker compose -p bookmarks-forums up --build
sudo docker compose up

On Windows:

docker-compose -p bookmarks-forums up --build
docker-compose up
  1. Access the application in your browser at the following URL:
https://localhost:443

12. Demonstrative video

Here is a video showcasing the application's main functionalities (spanish):

Demonstrative Video

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published