+
+---
+### Start Meeting Flow
+
+
+---
+### Start Voting Flow
+
+
+---
+### End Meeting Flow
+
+
+---
+### Accept Invitation Flow
+
+
+---
+## Build and Run Instructions
+Option 1:
+- `docker compose -f docker-compose.prod.yml up`
+
+---
+## Team Contributions
+- **Architecture & Planning:** Mohemmed, Wisdan, Mustafa
+ - Discussed system design, microservices architecture, communication patterns, and feature planning
+
+- **Backend development:**
+ - Mohemmed: Gateway, Meeting Service, Notification Service and Report Service
+ - Wisdan: Voting Service, Report Service, Notification Service
+ - Mustafa: Housing Association Service
+
+- **Frontend development:** Mohemmed, Wisdan,
+ - Voting UI, Login UI, Meeting UI
+
+- **Authentication:** Mohemmed
+
+- **Docker setup & deployment:** Mohemmed, Wisdan
+
+---
+## Decisions and Simplifications
+- MVP focuses on core voting and meeting results; proxy not included
+- Added Report and Notification services beyond initial plan
+- Security is implemented via Spring Boot Security
+- Integrated RabbitMQ for asynchronous communication between services, exceeding initial scope
diff --git a/docs/createmeeting.png b/docs/createmeeting.png
deleted file mode 100644
index 2756dcf3..00000000
Binary files a/docs/createmeeting.png and /dev/null differ
diff --git a/docs/images/database/housing_association.png b/docs/images/database/housing_association.png
new file mode 100644
index 00000000..8ffbc687
Binary files /dev/null and b/docs/images/database/housing_association.png differ
diff --git a/docs/images/database/invitation.png b/docs/images/database/invitation.png
new file mode 100644
index 00000000..c758d06f
Binary files /dev/null and b/docs/images/database/invitation.png differ
diff --git a/docs/images/database/meeting.png b/docs/images/database/meeting.png
new file mode 100644
index 00000000..08a8d686
Binary files /dev/null and b/docs/images/database/meeting.png differ
diff --git a/docs/images/database/voting.png b/docs/images/database/voting.png
new file mode 100644
index 00000000..52350c6a
Binary files /dev/null and b/docs/images/database/voting.png differ
diff --git a/docs/images/flow/acceptinvitation.png b/docs/images/flow/acceptinvitation.png
new file mode 100644
index 00000000..180a19ca
Binary files /dev/null and b/docs/images/flow/acceptinvitation.png differ
diff --git a/docs/images/flow/createmeeting.png b/docs/images/flow/createmeeting.png
new file mode 100644
index 00000000..dd72a9ee
Binary files /dev/null and b/docs/images/flow/createmeeting.png differ
diff --git a/docs/images/flow/endmeeting.png b/docs/images/flow/endmeeting.png
new file mode 100644
index 00000000..d45e9461
Binary files /dev/null and b/docs/images/flow/endmeeting.png differ
diff --git a/docs/images/flow/startmeeting.png b/docs/images/flow/startmeeting.png
new file mode 100644
index 00000000..7f1c686c
Binary files /dev/null and b/docs/images/flow/startmeeting.png differ
diff --git a/docs/images/flow/startvoting.png b/docs/images/flow/startvoting.png
new file mode 100644
index 00000000..eb8d8676
Binary files /dev/null and b/docs/images/flow/startvoting.png differ
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 0e8450e1..b61f64e9 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -1,10 +1,10 @@
import { BrowserRouter, Route, Routes } from "react-router-dom";
-import { Login } from "./pages/Login.tsx";
+import { Login } from "./login/Login.tsx";
import { Main } from "./pages/Main.tsx";
-import {Phone} from "./pages/Phone.tsx";
-import { Voting } from "./pages/Voting.tsx";
+import {Phone} from "./phone/Phone.tsx";
+import { Voting } from "./voting/Voting.tsx";
import {Error} from "./http/Error.tsx";
-import {Invitation} from "./pages/Invitation.tsx";
+import {Invitation} from "./invitation/Invitation.tsx";
import {useState} from "react";
import {PrivateRouter} from "./PrivateRouter.tsx";
import {Report} from "./pages/Report.tsx";
diff --git a/frontend/src/pages/Invitation.module.css b/frontend/src/invitation/Invitation.module.css
similarity index 100%
rename from frontend/src/pages/Invitation.module.css
rename to frontend/src/invitation/Invitation.module.css
diff --git a/frontend/src/pages/Invitation.tsx b/frontend/src/invitation/Invitation.tsx
similarity index 100%
rename from frontend/src/pages/Invitation.tsx
rename to frontend/src/invitation/Invitation.tsx
diff --git a/frontend/src/pages/Login.module.css b/frontend/src/login/Login.module.css
similarity index 100%
rename from frontend/src/pages/Login.module.css
rename to frontend/src/login/Login.module.css
diff --git a/frontend/src/pages/Login.tsx b/frontend/src/login/Login.tsx
similarity index 100%
rename from frontend/src/pages/Login.tsx
rename to frontend/src/login/Login.tsx
diff --git a/frontend/src/pages/Main.tsx b/frontend/src/pages/Main.tsx
index 5c3f5d24..cd15ff8d 100644
--- a/frontend/src/pages/Main.tsx
+++ b/frontend/src/pages/Main.tsx
@@ -1,7 +1,7 @@
import { Button } from "@mui/material";
import css from "./Main.module.css";
import { useState } from "react";
-import { Resident } from "./Resident.tsx";
+import { Resident } from "../resident/Resident.tsx";
import * as React from "react";
import {Meeting} from "../meeting/Meeting.tsx";
import type {HousingAssociationDTO} from "../App.tsx";
diff --git a/frontend/src/pages/Profile.tsx b/frontend/src/pages/Profile.tsx
index 8f1b8f75..8121abd6 100644
--- a/frontend/src/pages/Profile.tsx
+++ b/frontend/src/pages/Profile.tsx
@@ -2,7 +2,7 @@ import { useEffect, useState } from "react";
import { Button } from "@mui/material";
import * as http from "../http/HttpRequest.ts";
import { ClearTokenInSession, GetTokenInSession } from "../http/TokenStorage.ts";
-import css from "./Resident.module.css";
+import css from "../resident/Resident.module.css";
export interface HousingAssociationDTO {
id: number;
diff --git a/frontend/src/pages/Report.tsx b/frontend/src/pages/Report.tsx
index 5b124410..e5a05d20 100644
--- a/frontend/src/pages/Report.tsx
+++ b/frontend/src/pages/Report.tsx
@@ -1,4 +1,4 @@
-import css from "./Resident.module.css";
+import css from "../resident/Resident.module.css";
import { useEffect, useState } from "react";
import { useSearchParams } from "react-router-dom";
import * as http from "../http/HttpRequest.ts";
diff --git a/frontend/src/pages/Phone.module.css b/frontend/src/phone/Phone.module.css
similarity index 100%
rename from frontend/src/pages/Phone.module.css
rename to frontend/src/phone/Phone.module.css
diff --git a/frontend/src/pages/Phone.tsx b/frontend/src/phone/Phone.tsx
similarity index 100%
rename from frontend/src/pages/Phone.tsx
rename to frontend/src/phone/Phone.tsx
diff --git a/frontend/src/pages/Resident.module.css b/frontend/src/resident/Resident.module.css
similarity index 100%
rename from frontend/src/pages/Resident.module.css
rename to frontend/src/resident/Resident.module.css
diff --git a/frontend/src/pages/Resident.tsx b/frontend/src/resident/Resident.tsx
similarity index 100%
rename from frontend/src/pages/Resident.tsx
rename to frontend/src/resident/Resident.tsx
diff --git a/frontend/src/pages/Voting.module.css b/frontend/src/voting/Voting.module.css
similarity index 100%
rename from frontend/src/pages/Voting.module.css
rename to frontend/src/voting/Voting.module.css
diff --git a/frontend/src/pages/Voting.tsx b/frontend/src/voting/Voting.tsx
similarity index 90%
rename from frontend/src/pages/Voting.tsx
rename to frontend/src/voting/Voting.tsx
index 86f02111..f9371075 100644
--- a/frontend/src/pages/Voting.tsx
+++ b/frontend/src/voting/Voting.tsx
@@ -1,9 +1,9 @@
import {useEffect, useRef, useState} from "react";
import css from "./Voting.module.css";
import * as http from "../http/HttpRequest.ts";
-import {VotingWaiting} from "../voting/VotingWaiting.tsx";
-import {VotingAnswerQuestion} from "../voting/VotingAnswerQuestion.tsx";
-import {VotingResult} from "../voting/VotingResult.tsx";
+import {VotingWaiting} from "./VotingWaiting.tsx";
+import {VotingAnswerQuestion} from "./VotingAnswerQuestion.tsx";
+import {VotingResult} from "./VotingResult.tsx";
export type SelectedVote = "FOR" | "AGAINST"| "NOT_VOTED";
export type VotingState = "MEETING_NOT_STARTED" | "NOT_ONGOING" | "ONGOING_BUT_YOU_HAVE_VOTED" | "ONGOING_BUT_YOU_HAVE_NOT_VOTED" | "MEETING_ENDED";
@@ -53,11 +53,11 @@ export function Voting() {