event-management-frontend/README.md

140 lines
4.9 KiB
Markdown
Raw Normal View History

2024-12-30 14:14:43 +00:00
# Event Management Frontend
The Event Management Frontend is a native Android application developed in
Kotlin. This app provides a comprehensive calendar-based event management
system designed for seamless user interaction.
This project was created as the final assignment for **AP7PD** and **AP7MP** subjects.
It integrates with a custom backend REST API to manage users, events,
attendees, and categories effectively.
## Overview / Key Features
- **Monthly Calendar View**: View events in a grid layout by weeks and days.
- **Daily View**: Easily browse and manage daily events.
- **Event Management**: Create, edit, and delete events with support for categories and attendees.
- **User Authentication**: Register and log in with robust access and refresh
token support, ensuring secure and seamless user sessions.
- **Error Handling**: Gracefully handles API errors, including scenarios where
the backend is unreachable.
## Backend requirements
The application requires a running backend API for full functionality. The
backend is implemented using FastAPI in Python.
You can find the source code and detailed deployment instructions for the
backend API at: [Event Management Backend
Repository](https://git.itsdrike.com/ap7pd/event-management-backend).
> [!TIP]
> The app supports dynamic configuration of the API base URL, allowing you to
> deploy the backend on any server or cloud provider of your choice. If you
> wish to test the app from android studio, you can deploy the backend locally
> (<http://localhost:8000>) and set the base URL to `http://10.0.2.2:8000`.
> This will allow the Android emulator to access the local backend server. Note
> that this is also the default value.
2025-01-05 16:09:28 +00:00
## Showcase
Below is a showcase of key features and screens in the application:
<div style="padding: 20px; max-width: 1200px; margin: auto;">
<table style="width: 100%; border-collapse: collapse;">
<thead>
<tr>
<th colspan="3" style="text-align: center; font-size: 24px; padding: 10px;">Showcase</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div style="text-align: center;">
<img src="showcase/01_api_unreachable.png" style="max-width: 100%; height: auto;" alt="API Unreachable" />
<p>Error screen, shown whenever the API becomes unreachable.</p>
</div>
</td>
<td>
<div style="text-align: center;">
<img src="showcase/02_login.png" style="max-width: 100%; height: auto;" alt="Login Screen" />
<p>Login screen for user authentication.</p>
</div>
</td>
<td>
<div style="text-align: center;">
<img src="showcase/02_login_base_url_change.png" style="max-width: 100%; height: auto;" alt="Base URL Change" />
<p>Screen to update the API base URL, available from the login, register & API unreachable pages.</p>
</div>
</td>
</tr>
<tr>
<td>
<div style="text-align: center;">
<img src="showcase/03_register.png" style="max-width: 100%; height: auto;" alt="Register Screen" />
<p>User registration screen.</p>
</div>
</td>
<td>
<div style="text-align: center;">
<img src="showcase/04_month_view.png" style="max-width: 100%; height: auto;" alt="Month View" />
<p>Monthly calendar view to browse events.</p>
</div>
</td>
<td>
<div style="text-align: center;">
<img src="showcase/05_day_view.png" style="max-width: 100%; height: auto;" alt="Day View" />
<p>Daily event view with event details for that day.</p>
</div>
</td>
</tr>
<tr>
<td>
<div style="text-align: center;">
<img src="showcase/06_duration_event_edit.png" style="max-width: 100%; height: auto;" alt="Edit Duration Event" />
<p>Edit screen for duration-based events.</p>
</div>
</td>
<td>
<div style="text-align: center;">
<img src="showcase/07_instant_event_edit.png" style="max-width: 100%; height: auto;" alt="Edit Instant Event" />
<p>Edit screen for instant events.</p>
</div>
</td>
<td>
<div style="text-align: center;">
<img src="showcase/08_invite_user_to_event.png" style="max-width: 100%; height: auto;" alt="Invite User to Event" />
<p>Interface for inviting users to an event.</p>
</div>
</td>
</tr>
<!-- Add more rows similarly -->
</tbody>
</table>
</div>
<style>
table {
width: 100%;
border-collapse: collapse;
}
td {
padding: 10px;
vertical-align: top;
text-align: center;
}
img {
width: 100%;
height: auto;
max-width: 300px;
display: block;
margin: auto;
}
@media screen and (max-width: 900px) {
td {
display: block;
width: 100%;
}
}
</style>