Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions website/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css"
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="
crossorigin=""/>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Rocket App: Chat and collaboration platform.">
<meta name="theme-color" content="#1976d2">
Expand Down
109 changes: 109 additions & 0 deletions website/src/components/footer/Footer.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
<template>
<footer class="footer">
<div class="footer-content">
<div class="footer-section footer-address">
<span class="footer-title">Address</span>
<span>Hochschule für Technik Stuttgart</span>
<span>Schellingstraße 24</span>
<span>70174 Stuttgart</span>
<span>Germany</span>
</div>
<div class="footer-section footer-legal">
<span class="footer-title">Legal</span>
<router-link to="/legal-notice">Legal Notice</router-link>
<router-link to="/privacy-policy">Privacy Policy</router-link>
<router-link to="/accessibility">Accessibility</router-link>
</div>
<div class="footer-section footer-contact">
<span class="footer-title">Contact</span>
<a href="mailto:[email protected]" id="footer-email">[email protected]</a>
<a href="https://www.instagram.com/hft_stuttgart/" target="_blank" rel="noopener" aria-label="Instagram" class="footer-instagram">
<i class="fab fa-instagram" style="font-size: 1.3em;"></i>
</a>
<a href="https://www.youtube.com/c/Hochschulef%C3%BCrTechnikStuttgart" target="_blank" rel="noopener" aria-label="YouTube" class="footer-youtube">
<i class="fab fa-youtube" style="font-size: 1.3em;"></i>
</a>
</div>
</div>
</footer>
</template>

<style scoped>
.footer {
width: 100%;
background: linear-gradient(90deg, #1e3c72 0%, #2a5298 100%);
color: #fff;
border-top: 2px solid #1e3c72;
padding: 1.2rem 0;
font-size: 1rem;
position: relative;
left: 0;
bottom: 0;
}

.footer-content {
max-width: 1100px;
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 2rem;
}

.footer-section {
display: flex;
flex-direction: column;
gap: 0.3rem;
min-width: 180px;
}

.footer-title {
font-weight: bold;
font-size: x-large;
margin-bottom: 0.2rem;
letter-spacing: 0.02em;
color: #ffd580;
}

.footer-legal a,
.footer-contact a {
color: #e0e0e0;
text-decoration: none;
transition: color 0.2s;
font-size: 1em;
}

.footer-legal a:hover, #footer-email:hover {
color: #ffd580;
text-decoration: underline;
}

.footer-instagram,
.footer-youtube {
display: inline-flex;
align-items: center;
margin-top: 0.1rem;
margin-right: 0.6rem;
}

.footer-instagram:hover i {
color: #f8a8f4;
}

.footer-youtube:hover i {
color: #ff4c4c;
}

@media (max-width: 900px) {
.footer-content {
flex-direction: column;
align-items: flex-start;
gap: 1.2rem;
padding: 0 1rem;
}
.footer-section {
width: 100%;
min-width: unset;
}
}
</style>
115 changes: 115 additions & 0 deletions website/src/pages/AccessibilityView.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
<template>
<div class="page-wrapper">
<Navbar />
<main class="legal-content">
<div class="legal-page">
<h1>Accessibility</h1>

<section>
<h2>Commitment to Accessibility</h2>
<p>
We are committed to making our website and application accessible to everyone, including people with disabilities.
Our goal is to ensure a user-friendly experience for all users, regardless of their physical or technical limitations.
</p>
</section>

<section>
<h2>Measures to Support Accessibility</h2>
<ul>
<li>Responsive design for different devices and screen readers</li>
<li>Keyboard navigation and focus visibility</li>
<li>Text alternatives for non-text content</li>
<li>Consistent structure and headings</li>
</ul>
</section>

<section>
<h2>Feedback and Contact</h2>
<p>
If you encounter accessibility issues or have suggestions for improvement, please contact us:
<br />
<strong>Email:</strong> [email protected]
</p>
</section>

<section>
<h2>Enforcement Procedure</h2>
<p>
In the event of unsatisfactory responses to your accessibility inquiry, you may contact the responsible regulatory authority in your region to enforce your rights under applicable accessibility legislation.
</p>
</section>

<section>
<h2>Last Updated</h2>
<p>
This statement was last updated on 17 June 2025.
</p>
</section>
</div>
</main>
<Footer />
</div>
</template>

<script setup lang="ts">
import Navbar from '@/components/Navbar.vue'
import Footer from '@/components/footer/Footer.vue'
</script>

<style scoped>
.page-wrapper {
min-height: 100vh;
display: flex;
flex-direction: column;
}

.legal-content {
flex: 1;
display: flex;
justify-content: center;
align-items: flex-start;
padding: 2rem 1rem;
background: white; /* wichtig: Seitenhintergrund bleibt weiß */
}

.legal-page {
max-width: 900px;
width: 100%;
background: #f5f5f5; /* grau nur für die Box */
padding: 2rem;
border-radius: 8px;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
line-height: 1.7;
color: #333;
}

.legal-page h1 {
text-align: center;
margin-bottom: 2rem;
color: #1e3c72;
font-size: 2.5rem;
}

.legal-page section {
margin-bottom: 2rem;
}

.legal-page h2 {
color: #2a5298;
font-size: 1.5rem;
margin-bottom: 0.5rem;
}

.legal-page ul {
padding-left: 1.5rem;
margin-top: 0.5rem;
}

.legal-page li {
margin-bottom: 0.4rem;
}

.footer {
margin-top: auto;
}
</style>
29 changes: 23 additions & 6 deletions website/src/pages/ChallengesView.vue
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
<template>
<Navbar />
<div class="challenges-view">
<h1>Challenges</h1>
<ChallengeList :challenges="challenges"
@complete="handleCompleteChallenge"
<div class="page-wrapper">
<Navbar />
<div class="challenges-view">
<h1>Challenges</h1>
<ChallengeList :challenges="challenges"
@complete="handleCompleteChallenge"
@invite="handleInvite"/>
<FriendInvitePopup
v-if="showInvitePopup"
:challenge-id="inviteChallengeId!"
@close="showInvitePopup = false"/>
@close="showInvitePopup = false"/>
</div>
<Footer />
<DailyChallengeProgress :completed="completedCount" :total="totalCount" />
</div>
</template>

<script setup lang="ts">
Expand All @@ -20,6 +23,7 @@ import ChallengeList from '@/components/challenges/ChallengeList.vue';
import DailyChallengeProgress from '@/components/challenges/DailyChallengeProgress.vue';
import FriendInvitePopup from '@/components/challenges/FriendInvitePopup.vue';
import backendApi from '@/api/backend-api';
import Footer from '@/components/footer/Footer.vue'

const challenges = ref<{ id: string; text: string; points: number }[]>([]);
const completedCount = ref(0);
Expand Down Expand Up @@ -76,10 +80,23 @@ onMounted(async () => {
</script>

<style scoped>
.page-wrapper {
min-height: 100vh;
display: flex;
flex-direction: column;
/* Make space for the fixed progress bar */
padding-bottom: 3.5rem;
}
.challenges-view {
flex: 1;
padding: 2rem;
}
.challenges-view h1 {
text-align: center;
}
.footer {
margin-top: auto;
/* Add extra bottom padding so it's scrollable above the progress bar */
padding-bottom: 2.5rem;
}
</style>
2 changes: 2 additions & 0 deletions website/src/pages/ChatView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
<div class="chatview-wrapper d-flex flex-column align-items-center justify-content-center">
<ChatRoom :user="user"/>
</div>
<Footer />
</template>

<script setup lang="ts">
import Navbar from '@/components/Navbar.vue'
import ChatRoom from '@/components/chat/ChatRoom.vue'
import Footer from '@/components/footer/Footer.vue'
import { ref, onMounted } from 'vue'
import api from '@/api/backend-api'

Expand Down
36 changes: 24 additions & 12 deletions website/src/pages/DownloadView.vue
Original file line number Diff line number Diff line change
@@ -1,25 +1,34 @@
<template>
<Navbar />
<div class="download-view">
<h1>Download the Rocket App</h1>
<p>You can download the latest version of the Rocket App for Android below:</p>
<a
class="download-btn"
:href="apkUrl"
download
>
Download APK
</a>
<p class="note">If you have trouble installing, make sure to allow installation from unknown sources in your device settings.</p>
<div class="page-wrapper">
<Navbar />
<div class="download-view">
<h1>Download the Rocket App</h1>
<p>You can download the latest version of the Rocket App for Android below:</p>
<a
class="download-btn"
:href="apkUrl"
download
>
Download APK
</a>
<p class="note">If you have trouble installing, make sure to allow installation from unknown sources in your device settings.</p>
</div>
<Footer />
</div>
</template>

<script setup lang="ts">
import Navbar from '@/components/Navbar.vue'
import Footer from '@/components/footer/Footer.vue'
const apkUrl = '/apk/rocket-app-latest.apk'
</script>

<style scoped>
.page-wrapper {
min-height: 100vh;
display: flex;
flex-direction: column;
}
.download-view {
max-width: 500px;
margin: 2rem auto;
Expand Down Expand Up @@ -49,4 +58,7 @@ const apkUrl = '/apk/rocket-app-latest.apk'
font-size: 0.95rem;
margin-top: 1.2rem;
}
.footer {
margin-top: auto;
}
</style>
Loading