|
1 | | -# 🍲 Meet@Mensa |
2 | | - |
3 | 1 |  |
4 | 2 |
|
5 | | -[](https://github.com/AET-DevOps25/team-devoops/actions/workflows/ci.yml) |
6 | | - |
7 | | -Many students at TUM, particularly in the larger study programs, report feeling lonely and isolated despite having countless peers. One of the places where this is especially noticeable is the Mensa during lunchtime. It's common for students that don't have a strong network of friends at university to eat alone or avoid eating at the Mensa entirely to not feel socially awkward. |
8 | | - |
9 | | -Our tool - *Meet@Mensa* - focuses on transforming the potentially uncomfortable situation of eating alone at the Mensa into an opportunity to meet fellow students and make new friends. In order to enable this, our tool offers the following features: |
10 | | - |
11 | | -### 📝 - Signing Up |
12 | | -In order to match students, our tool needs to gather some basic information about them first. In order to do this, users can specify what times they plan to have lunch and at which Mensa, as well as some personal data, such as their name, age, language, gender, study program, current semester, courses they are taking, and hobbies they enjoy. All personal data fields are optional. |
| 3 | +[](https://github.com/AET-DevOps25/team-devoops/actions/workflows/ci.yml) |
13 | 4 |
|
14 | | -### ✨ - Matching |
15 | | -Our system randomly matches students into groups of 4 exactly 1 hour before their common lunchtime, and invites them to share a table. If the number of requests for a certain time slot is not divisible by 4, an additional group of 2-3 students is formed. If only 1 student is left out, they are added on top of a 4-student group. |
| 5 | +[](https://github.com/AET-DevOps25/team-devoops/actions/workflows/ci_cd.yml) |
16 | 6 |
|
17 | | -Users can also add preferences to their search by setting filters, e.g. if they are willing to meet up with people from the same degree. However, setting filters does not guarantee a 100% match - our system prioritises assigning everyone to a group one way or another over meeting everyone's preferences. |
| 7 | +Many students at TUM, particularly in the larger study programs, report feeling lonely and isolated despite having countless peers. One of the places where this is especially noticeable is the Mensa during lunchtime. It's common for students that don't have a strong network of friends at university to eat alone or avoid eating at the Mensa entirely to not feel socially awkward. |
18 | 8 |
|
19 | | -### 🤝 - RSVP-ing |
20 | | -Nothing is worse than waiting for someone who won't show up, thus our tool asks users to RSVP to any invites they receive (with ```yes``` / ```no``` options, no tentatives). Once an invite is accepted, all users receive a confirmation email with a corresponding ```ics.``` file in the attachment. It is also possible to cancel the meetup. |
| 9 | +Our tool - *Meet@Mensa* - focuses on transforming the potentially uncomfortable situation of eating alone at the Mensa into an opportunity to meet fellow students and make new friends. |
| 10 | + |
| 11 | +# 🥘 Features |
| 12 | + |
| 13 | +## Sign up |
| 14 | +Create an account and meet@mensa will store your basic information for next time! |
| 15 | + |
| 16 | +## Request Matches |
| 17 | +Let us know who you'd like to meet and when you're available by submitting a Match Request! |
| 18 | + |
| 19 | +## Get Matched |
| 20 | +Every night at 22:00 CET, our algorithm will run and try to find the best group for you! Group bailed on you or you're just feeling spontaneous? We'll try matching you again at 10:00am CET. |
| 21 | + |
| 22 | +## RSVP |
| 23 | +Got matched? Let us know if you can make it by clicking the RSVP button! |
| 24 | + |
| 25 | +## Meet People |
| 26 | +Show up, have lunch, make friends. Simple as that! |
| 27 | + |
| 28 | +## Break the Ice |
| 29 | +Talking to new people can be hard at the start, so meet@mensa takes advantage of modern GenAi to help break the ice! Check your match for custom conversation starters for you and the people you'll be meeting! |
| 30 | + |
| 31 | +# 🚀 Installation and Deployment |
| 32 | + |
| 33 | +## Live Demo |
| 34 | +Check it out for yourself at [app.meetatmensa.com](https://app.meetatmensa.com)! |
| 35 | + |
| 36 | +## Deploy it Yourself |
| 37 | +Instructions for deploying with Docker-Compose and Kubernetes are available [here](deployment/README.md) |
| 38 | + |
| 39 | +# 🔭 Repository Overview |
| 40 | + |
| 41 | +``` |
| 42 | +meet@mensa/ |
| 43 | +├── api/ |
| 44 | +│ ├── changelogs/ # All updates to the API spec # All changes to our API, documented |
| 45 | +│ ├── scripts/ # Scripts for generating API code # Scripts for generating code based on API spec |
| 46 | +│ └── openapi.yaml # The API definition itself |
| 47 | +│ |
| 48 | +├── client/ # Our React-based client |
| 49 | +│ |
| 50 | +├── deployment/ |
| 51 | +│ ├── docker/ # Deploy meet@mensa locally! |
| 52 | +│ ├── docker-debug/ # Deploy meet@mensa locally with exposed backend services |
| 53 | +│ ├── k8s/ # Deploy meet@mensa to TUM's Kubernetes Cluster |
| 54 | +│ └── compose.aws.yml # Deploy meet@mensa to AWS |
| 55 | +│ |
| 56 | +├── docs/ |
| 57 | +│ ├── api.html # API spec (https://aet-devops25.github.io/team-devoops/api.html) |
| 58 | +│ └── problem_statement.md # Meet@Mensa problem statement |
| 59 | +│ |
| 60 | +├── infrastructure/ # Terraform scripts for AWS deployment |
| 61 | +│ |
| 62 | +├── resources/ # Images and Diagrams used elsewhere |
| 63 | +│ |
| 64 | +├── server/ # Our back-end |
| 65 | +│ ├── database/ |
| 66 | +│ │ ├── matchdb/ # Databases for matching-data |
| 67 | +│ │ └── userdb/ # Databases for user-data |
| 68 | +│ │ |
| 69 | +│ ├── gateway/ # Routes traffic to our API |
| 70 | +│ │ |
| 71 | +│ ├── genai/ # Provides conversation starters |
| 72 | +│ │ |
| 73 | +│ ├── matching/ # Manages matching requests |
| 74 | +│ │ ├── src/ # Spring-Boot Application |
| 75 | +│ │ ├── generated/ # Server API interface generated with openapi-generate-cli |
| 76 | +│ │ └── generated-client/ # Client API interface generated with openapi-generate-cli |
| 77 | +│ │ |
| 78 | +│ └── user/ # Manages users |
| 79 | +│ ├── src/ # Spring-Boot Application |
| 80 | +│ ├── generated/ # Server API interface generated with openapi-generate-cli |
| 81 | +│ └── generated-client/ # Client API interface generated with openapi-generate-cli |
| 82 | +│ |
| 83 | +├── README.md # You're reading it ;) |
| 84 | +├── CONTRIBUTING.md # Join us |
| 85 | +└── LICENSE # MIT |
| 86 | +``` |
| 87 | + |
| 88 | + |
| 89 | + |
| 90 | +# ⚙ System Overview |
21 | 91 |
|
22 | | -### 🤸 - Meeting up |
23 | | -Students at the same table should also have something to talk about, so our system's GenAI component will suggest topics based on the students' common interests to help break the ice. |
| 92 | +### Component Diagram (top-level architecture) |
| 93 | +This model contains information about Meet@Mensa's architecture. Each component's color indicates the student responsible for it. |
24 | 94 |
|
25 | | -## ⚙ System Overview |
| 95 | + |
26 | 96 |
|
27 | 97 | ### Class Diagram (analysis object model) |
| 98 | +This model contains information about the objects handled by the Meet@Mensa API. Detailed class diagrams for User and Matching services are available in their respective README.md files ([User](server/user/README.md), [Matching](server/matching/README.md)). |
28 | 99 |
|
29 | | - |
| 100 | + |
30 | 101 |
|
31 | 102 | ### Use Case Diagram |
| 103 | +This model contains information about Meet@Mensa's use-cases. |
32 | 104 |
|
33 | 105 |  |
34 | 106 |
|
35 | | -### Component Diagram (top-level architecture) |
36 | | - |
37 | | - |
38 | | - |
39 | | -## 🎭 Use Case Scenarios |
40 | | - |
41 | | -### Scenario 1 |
42 | | -James is a first-semester M.Sc. Informatics student. Unfortunately, he wasn't able to be in Munich for the SET in the first few weeks and thus hasn't really made any friends. |
43 | | - |
44 | | -James is comfortable eating alone at the Mensa, but he'd like to meet some of his fellow students, so he logs onto Meet@Mensa and inputs the times he plans to have lunch at the Garching Mensa, what degree he is studying, what classes he's taking, and what his hobbies are outside of university. James doesn't have any preferences on whom to meet, so he sets no search criteria and leaves it to chance. |
45 | | - |
46 | | -On Monday, an hour before lunchtime, James receives a notification that he's been matched with a table of 3 other students for lunch at the Mensa. James accepts the invitation, letting the system know he plans on joining. He receives a confirmation email with an ```ics.``` file that he happily adds to his calendar, as he loves technology and keeping everything documented. |
47 | | - |
48 | | -At the agreed time, James arrives at the Mensa, gets his food and joins the other students at the table. Not knowing how where to begin, he checks the list of conversation starters and sees that several students are also taking the DevOps course this semester. With this in mind, James asks the other students about their projects and exchanges some jokes about Scrum masters. |
49 | | - |
50 | | -After an hour of pleasant conversation, James has now met several new people and goes about his day feeling less lonely. |
51 | | - |
52 | | ---- |
53 | | -### Scenario 2 |
54 | | -Anastasiia is also a first-semester M.Sc. Informatics student. She met a lot of wonderful people during the orientation week but noticed there were barely any female students in her degree. Being new to Munich and wanting to connect with other women in Computer Science, Anastasiia signs up for Meet@Mensa. |
55 | | - |
56 | | -She fills out the information about her studies and hobbies, and specifies she would like to have lunch with other female students in their 1st semester. For this, she activates 2 filters in the search criteria: gender and current semester. One hour before her lunchtime on Friday, she receives a notification that she has been matched with 1 student. Anastasiia reviews her profile and notices they both have a lot of different hobbies they could tell each other about. For example, Anastasiia's match is passionate about horse riding, which Anastasiia herself always wanted to learn more about. |
57 | | - |
58 | | -Anastasiia loves diversity and meeting people from different backgrounds, so she happily accepts the invitation. After the other student confirms, they both receive a calendar invite via email. The meeting goes really well, and both students instantly click, so they agree to meet up for lunch again next week. The system has brilliantly fulfilled its purpose. |
59 | | - |
60 | | ---- |
61 | | -### Scenario 3 |
62 | | -Enrico is a second-semester M.Sc. student in Informatics, and he's currently looking for group members for his Interdisciplinary Project. While most of his classmates are in Computer Science, he's interested in meeting students from other departments to bring diverse perspectives to the project. |
63 | | - |
64 | | -He signs into Meet@Mensa and indicates that he's particularly looking for people involved in the Interdisciplinary Project this semester. He selects lunchtime on Thursday and fills out his profile with relevant classes and hobbies, including his passion for design and urban mobility. |
65 | | - |
66 | | -Enrico is matched with 2 other students, all of them accept the invitation, so Enrico receives an email with a calendar event for the meetup. |
| 107 | +# 💜 More Documentation |
67 | 108 |
|
68 | | -During lunch, one of the AI-generated conversation starters suggests discussing project ideas around sustainability, a topic all three are passionate about. The group ends up brainstorming potential concepts, and by the end of the meal, Enrico has found two highly motivated partners for his project—and a reason to look forward to more team lunches. |
| 109 | +There's much more to see, check it out! |
| 110 | +- [API Spec](https://aet-devops25.github.io/team-devoops/api.html) |
| 111 | +- [Problem Statement](docs/problem_statement.md) |
| 112 | +- [Grading Table & Student Responsabilities](docs/grading_table.md) |
| 113 | +- [Grafana Dashboards](deployment/README.md) |
| 114 | +- [CI/CD Pipeline](docs/ci-cd.md) |
| 115 | +- [Matching Algorithm](server/matching/README.md) |
0 commit comments