Skip to content

Commit 8514918

Browse files
authored
Merge branch 'dev' into SCRUM-314-frontend-do-emergency-aria-fixes
2 parents 88fc1bd + 5b77c50 commit 8514918

10 files changed

Lines changed: 358 additions & 61 deletions

File tree

Frontend/.env.example

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
NUXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
2-
NUXT_CLERK_SECRET_KEY=
1+
NUXT_PUBLIC_CLERK_PUBLISHABLE_KEY= #Reach out to admin for the Secret Key
2+
NUXT_CLERK_SECRET_KEY= #Reach out to admin for the Secret Key
33
NEST_API_URL=http://localhost:8080/
4-
ALLOWED_EMAIL_DOMAINS=example.com,another-domain.edu
4+
ALLOWED_EMAIL_DOMAINS=fhstp.ac.at

Frontend/README.md

Lines changed: 44 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,64 @@
1+
# Superwise Frontend
2+
3+
This is the frontend application for the Superwise project, built with Nuxt 3, Vue 3, Pinia, and TailwindCSS. It provides a modern, responsive interface for students and supervisors to manage supervision requests, profiles, and onboarding.
4+
5+
16
## Tech stack
2-
- **Nuxt** framwork for Vue
7+
- **Nuxt** framework for Vue
38
- **Vitest** for testing
4-
- **I8ln** for localisation
5-
- **Pinia** for state managment
9+
- **I18n** for localisation
10+
- **Pinia** for state management
611
- **DaisyUI** for css designs
712

13+
## Features
14+
15+
- **Authentication:** Secure sign-in and sign-out using Clerk.
16+
- **Role-based Dashboards:** Separate dashboards for students and supervisors.
17+
- **Supervision Requests:** Students can send, withdraw, and track supervision requests; supervisors can accept, reject, and manage them.
18+
- **Profile Management:** Users can edit their profiles and manage tags/interests.
19+
- **Onboarding:** Guided onboarding flows for both students and supervisors.
20+
- **Responsive Design:** Optimized for both desktop and mobile devices.
21+
- **Localization:** Multi-language support using Vue I18n.
22+
- **State Management:** Uses Pinia for global state and store management.
23+
- **API Integration:** Communicates with the backend via RESTful API endpoints.
24+
25+
## Project Structure
26+
27+
- `pages/` — Main application pages (student, supervisor, onboarding, etc.)
28+
- `components/` — Reusable Vue components (cards, modals, navigation, etc.)
29+
- `stores/` — Pinia stores for state management
30+
- `plugins/` — Nuxt plugins (e.g., Clerk, FontAwesome)
31+
- `middleware/` — Route guards and global middleware
32+
- `server/` — Nuxt backend API routes and server logic
33+
- `assets/` — Static assets (images, styles)
34+
- `locales/` — Localization files
35+
36+
## Getting Started
37+
838
## Installation and running
939

10-
1. Clone the repository
11-
2. Change into the frontend directory
40+
1. **Clone the repository to local directory**
41+
2. **ensure you are in the Frontend directory**
1242

1343
```bash
14-
cd FeMatchMaker
44+
cd Frontend
1545
```
1646

17-
3. Install dependencies:
47+
3. **Install dependencies**:
48+
1849
```bash
1950
npm install
2051
```
21-
4. Run the application
22-
```bash
23-
npm run dev
24-
```
2552

26-
## Testing with PWA
27-
The PWA module is not fully compataibile with hot module replacement due to caching and other "middle man" functionalities. As a result whenever testing with PWA run the following command to boot the applicaiton
53+
4. **Environment Variables:**
54+
55+
Copy the `.env.example` to an `.env` file in the root directory and ensure all the environment variables are set correctly. You can reach out to the admin for the secret keys.
56+
57+
5. **Run the application**
2858
```bash
29-
npm run generate-preview
59+
npm run dev
3060
```
3161

32-
3362
## Testing
3463
To Run all the test in the application, run the command
3564
```bash

Frontend/components/ConfirmationModal/ConfirmationModal.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ const handleConfirm = () => {
8686
{{ props.headline }}
8787
</h3>
8888
<div class="mx-4 mt-1">
89-
<FontAwesomeIcon :icon="props.icon"/>
89+
<FontAwesomeIcon :icon="props.icon" @click="props.icon=='xmark'? closeModal() : null"/>
9090
</div>
9191
</div>
9292

Frontend/i18n/locales/de-DE.json

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,8 @@
232232
"loading": "Lädt",
233233
"logoAlt": "Logo",
234234
"mail": "E-Mail",
235+
"manageRequest": "Anfrage verwalten",
236+
"addStudent": "Als Betreute*r hinzufügen",
235237
"noVideoSupport": "Dein Browser unterstützt kein HTML-Video... ich denke, es ist Zeit für ein Upgrade deines Geräts!",
236238
"nothing": "Nichts",
237239
"pendingRequestTo": "Ausstehende Anfrage an",
@@ -296,7 +298,18 @@
296298
"supervisionInfo": "Wenn du eine Anfrage zur Betreuung einer Abschlussarbeit sendest, wird diese an die ausgewählten Betreuenden weitergeleitet. Sie können dann entscheiden, ob sie die Anfrage annehmen oder ablehnen möchten. Wenn sie die Anfrage annehmen, wird eine Bestätigung erstellt, die du herunterladen kannst.",
297299
"withdrawSupervisionConfirm": "Anfrage zurückziehen",
298300
"withdrawSupervisionDescription": "Möchten Sie die Betreuungsanfrage von {name} zurückziehen? Nach dem Zurückziehen kann der Betreuer diese Anfrage nicht mehr sehen.",
299-
"withdrawSupervisionHeadline": "Betreuungsanfrage zurückziehen"
301+
"withdrawSupervisionHeadline": "Betreuungsanfrage zurückziehen",
302+
"handleRequest": {
303+
"accept": "Anfrage annehmen",
304+
"dismiss": "Anfrage ablehnen",
305+
"description": "{firstName} {lastName} hat eine ausstehende Anfrage zur Betreuung. Möchten Sie diese Anfrage annehmen oder ablehnen?",
306+
"headline": "Ausstehende Betreuungsanfrage"
307+
},
308+
"supervisee": {
309+
"accept": "Als Betreuer hinzufügen",
310+
"headline": "Student als Betreuer hinzufügen",
311+
"description": "Das Hinzufügen eines Studenten als Betreuer überspringt den Bestätigungsprozess und fügt ihn direkt zu deinen betreuten Studenten hinzu. Möchtest du fortfahren?"
312+
}
300313
},
301314
"multiStepForm": {
302315
"description": {
@@ -499,6 +512,10 @@
499512
},
500513
"toast": {
501514
"withdrawRequestFailed": "Fehler beim Zurückziehen der Betreuungsanfrage",
502-
"withdrawnRequest": "Sie haben die Betreuungsanfrage zurückgezogen"
515+
"withdrawnRequest": "Sie haben die Betreuungsanfrage zurückgezogen",
516+
"withdrawnStudentRequest": "Die Anfrage des Studierenden wurde abgelehnt",
517+
"acceptedStudentRequest": "Die Anfrage des Studierenden wurde angenommen",
518+
"somethingWentWrong": "Etwas ist schief gelaufen, bitte versuchen Sie es später noch einmal",
519+
"addedStudentAsSupervisee": "Student wurde als Betreuer hinzugefügt"
503520
}
504521
}

Frontend/i18n/locales/en-GB.json

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,8 @@
232232
"loading": "Loading",
233233
"logoAlt": "logo",
234234
"mail": "Mail",
235+
"manageRequest": "Manage Request",
236+
"addStudent": "Add as supervisee",
235237
"noVideoSupport": "Your browser does not support HTML video... i think its time to upgrade your device!",
236238
"nothing": "Nothing",
237239
"pendingRequestTo": "Pending request to",
@@ -296,7 +298,18 @@
296298
"supervisionInfo": "When you send a thesis supervision request, it will be forwarded to the selected supervisors. They can then decide whether to accept or decline the request. If they accept the request, a confirmation will be created that you can download.",
297299
"withdrawSupervisionConfirm": "Withdraw Request",
298300
"withdrawSupervisionDescription": "Would you like to withdraw the supervision request from {name}? Once withdrawn, the supervisor will no longer see this request.",
299-
"withdrawSupervisionHeadline": "Withdraw Supervision Request"
301+
"withdrawSupervisionHeadline": "Withdraw Supervision Request",
302+
"handleRequest": {
303+
"accept": "Accept Request",
304+
"dismiss": "Dismiss Request",
305+
"description": "{firstName} {lastName} has a pending request for supervision. Would you like to accept or dismiss this request?",
306+
"headline": "Pending Supervision Request"
307+
},
308+
"supervisee": {
309+
"accept": "Add as Supervisee",
310+
"headline": "Add Student as Supervisee",
311+
"description": "Adding a student as supervisee will skip the confirmation process and directly add them to your supervised students. Do you wish to proceed?"
312+
}
300313
},
301314
"multiStepForm": {
302315
"description": {
@@ -499,6 +512,10 @@
499512
},
500513
"toast": {
501514
"withdrawRequestFailed": "Failed to withdraw the supervision request",
502-
"withdrawnRequest": "You have withdrawn the supervision request"
515+
"withdrawnRequest": "You have withdrawn the supervision request",
516+
"withdrawnStudentRequest": "Student request has been dismissed",
517+
"acceptedStudentRequest": "Student request has been accepted",
518+
"somethingWentWrong": "Something went wrong, please try again later",
519+
"addedStudentAsSupervisee": "Student has been added as supervisee"
503520
}
504521
}

Frontend/pages/admin/dashboard.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
>{{ t("admin.availableSpots") }}
2121
</span>
2222
</div>
23-
<hr class="border-base-300">
23+
<hr class="border-base-300" >
2424
<div class="p-8 gap-4 admin-overview-grid">
2525
<FontAwesomeIcon class="opacity-75" icon="user-group"/>
2626
<span class="text-body text-primary"

0 commit comments

Comments
 (0)