Skip to content

Commit 0dce11b

Browse files
author
FabrizioLanzillo
committed
final commit
1 parent d4789ea commit 0dce11b

File tree

3 files changed

+71
-1
lines changed

3 files changed

+71
-1
lines changed

README.md

+71-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,71 @@
1-
# Distributed-Students-Chat
1+
# Distributed-University-Chatroom-Platform
2+
3+
![Java](https://img.shields.io/badge/Java-%23ED8B00.svg?style=flat-square&logo=openjdk&logoColor=white) ![Maven](https://img.shields.io/badge/-Maven-C71A36?logo=apachemaven&logoColor=white&style=flat-square) ![Glassfish](https://img.shields.io/badge/Glassfish-%23ED8B00.svg?style=flat-square&logoColor=white) ![MySQL](https://img.shields.io/badge/MySQL-4479A1?logo=mysql&style=flat-square&logoColor=white) ![NGINX](https://img.shields.io/badge/-NGINX-009639?logo=nginx&logoColor=white&style=flat-square) ![Erlang](https://img.shields.io/badge/-Erlang-A90533?logo=erlang&logoColor=white&style=flat-square) ![MesiaDB](https://img.shields.io/badge/-MnesiaDB-A90533?logo=erlang&logoColor=white&style=flat-square)
4+
5+
University project for **Distributed Systems and Middleware Technologies** course (MSc Computer Engineering at University of Pisa, A.Y. 2022-23)
6+
7+
**Student University Platform** is a **distributed web-app** aimed at providing various functionalities to students and professors, which are:
8+
- provide **chatroom functionality** among students where they can share opinions and suggestions
9+
- allow **booking** and managing of meetings
10+
11+
Both students and professors have a dedicated page where they can view scheduled meetings and cancel them.
12+
Within the course page, on the other hand, it is possible to access the dedicated chatroom or look at the list of available slots and choose the meeting
13+
to reserve.
14+
15+
# System Architecture
16+
17+
![System Architecture](./documentation/system_architecture.png)
18+
19+
The web application, as we can see in figure, consists of a **Client Application**, a **Jakarta Application Server**, and **multiple Erlang Servers**.
20+
- The **Jakarta EE** Application Server, which implements most of the functionality of the application, uses as its reference implementation, **Glassfish 6.2.5** and also communicates with a **MySql relational database** located on a different machine.
21+
- The **Erlang** Servers handle the Chatrooms of the application through an **HTTP websocket communication**. They are managed by a **Load Balancer** and configured by a **Master Node** and both are on another machine. We chose **Nginx** for the Load Balancer since it natively supports the WebSocket protocol both as **reverse proxy** and **load balancer**.
22+
- the client application was implemented using the combination of **html**, **css** and **javascript**
23+
24+
# Synchronization and communication
25+
26+
- Multiple clients **exchange messages** with each other in chat rooms **concurrently**. The chat of each client node must be synchronized.
27+
- When a **student enters or leave** the chatroom each client **node must be synchronized** in order to see a consistent list of students within the chat (i.e. ”online students”).
28+
- When a student **books a meeting** in an available time slot or remove a previously booked meeting, each client **node must be synchronized to view the same consistent state** (both for students and professors).
29+
- When a professor creates or delete a course, the server must show the course to all the connected client in the ”browse”, ”search” sections and, in case of deletion, inside the course page.
30+
31+
# Structure of the repository
32+
33+
```
34+
Distributed-University-Chatroom-Platform
35+
|
36+
├── erlang-server
37+
│ ├── chat_server
38+
│ ├── master_node
39+
│ └── nginx
40+
|
41+
├── glassfish-server
42+
│ ├── ejb
43+
│ │ └── src
44+
│ | ├── dao
45+
| | └── ejb
46+
│ ├── ejb-interfaces
47+
│ │ └── src
48+
│ | ├── dto
49+
│ | ├── enums
50+
| | └── interfaces
51+
│ └── web
52+
│ └── src
53+
│ ├── java/it/unipi/dsmt/student_platform
54+
│ | ├── servlets
55+
| | └── utility
56+
│ └── webapp
57+
│ ├── assets
58+
| | ├── css
59+
| | ├── javascript
60+
| | ├── img
61+
| | └── libs
62+
| └── WEB-INF
63+
| └── jsp
64+
└── mysql-server
65+
66+
```
67+
68+
## Authors
69+
- [Fabrizio Lanzillo](https://github.com/FabrizioLanzillo)
70+
- [Federico Montini](https://github.com/FedericoMontini98)
71+
- [Riccardo Sagramoni](https://github.com/RiccardoSagramoni)
File renamed without changes.

documentation/system_architecture.png

3.68 MB
Loading

0 commit comments

Comments
 (0)