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
2025-01-03 16:46:36 +00:00
> 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:
| ![API Unreachable ](showcase/01_api_unreachable.png ) | ![Login Screen ](showcase/02_login.png ) | ![Base URL Change ](showcase/02_login_base_url_change.png ) |
| --------------------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------------- |
| Error screen, shown whenever the API becomes unreachable. | Login screen for user authentication. | Screen to update the API base URL, available from the login, register & API unreachable pages. |
| ![Register Screen ](showcase/03_register.png ) | ![Month View ](showcase/04_month_view.png ) | ![Day View ](showcase/05_day_view.png ) |
| -------------------------------------------- | ----------------------------------------- | ------------------------------------------------- |
| User registration screen. | Monthly calendar view to browse events. | Daily event view with event details for that day. |
| ![Edit Duration Event ](showcase/06_duration_event_edit.png ) | ![Edit Instant Event ](showcase/07_instant_event_edit.png ) | ![Invite User to Event ](showcase/08_invite_user_to_event.png ) |
| ----------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------- |
| Edit screen for duration-based events. | Edit screen for instant events. | Interface for inviting users to an event. |
| ![Duration Event Details ](showcase/09_duration_event_details.png ) | ![Instant Event Details ](showcase/10_instant_event_details.png ) | ![Categories Overview ](showcase/11_categories.png ) |
| ----------------------------------------------------------------- | --------------------------------------------------------------- | -------------------------------------------------- |
| Detailed view of a duration-based event. | Detailed view of an instant event. | List of event categories of the user. |
| ![Create New Category ](showcase/12_new_category.png ) | ![Updated Categories ](showcase/13_categories_with_new.png ) | ![Settings Screen ](showcase/14_settings.png ) |
| ---------------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------- |
| Form to create a new category. | Updated list with a newly added category. | Settings menu for app configuration. Only available when logged in. |
| ![Notification: Invite ](showcase/15_notification_invite_bob.png ) | ![Invite Preview ](showcase/16_invite_event_details_preview.png ) | ![Notification: Invite Accepted ](showcase/17_notification_invite_accepted_bob.png ) |
| ---------------------------------------------------------------- | --------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| Notification about an (incomming) event invite. | Preview of the event from the invite. | Notification for the (incomming) invite after accepting (already marked read). |
| ![Day View with Invite ](showcase/18_day_view_invited_event_bob.png ) | ![Invited Event Details ](showcase/19_invited_event_details_bob.png ) | ![Notification Accepted John ](showcase/20_notification_invite_accepted_john.png ) |
| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| Day view showing the invited event. | Details of an event the user was invited to. | Notification about user having accepted an outgoing invite (from the invitor's account). |
| ![Notifications Cleared ](showcase/21_notifications_cleared.png ) |
| --------------------------------------------------------------- |
| Screen showing cleared notifications. |