77 lines
8.3 KiB
Markdown
77 lines
8.3 KiB
Markdown
# 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.
|
||
|
||
## Showcase
|
||
|
||
Below is a showcase of key features and screens in the application:
|
||
|
||
| 📶 API Unreachable | 🔒 Login Screen | 🔧 Base URL Change |
|
||
| ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
||
| ![API Unreachable](showcase/01_api_unreachable.png){width=200px} | ![Login Screen](showcase/02_login.png){width=200px} | ![Base URL Change](showcase/02_login_base_url_change.png){width=200px} |
|
||
| Error screen, shown whenever the API becomes unreachable. | Login screen for user authentication, first screen you will face when you start the app for the first time. | Screen to change the API base URL, available from login, register & API unreachable pages (doesn't require being signed in). |
|
||
|
||
| 📝 Register Screen | 📆 Month View | 📅 Day View |
|
||
| --------------------------------------------------------- | --------------------------------------------------------------------------------- | -------------------------------------------------- |
|
||
| ![Register Screen](showcase/03_register.png){width=200px} | ![Month View](showcase/04_month_view.png){width=200px} | ![Day View](showcase/05_day_view.png){width=200px} |
|
||
| User registration screen. | Monthly calendar view to browse events, the screen shown immediately after login. | Daily event view, listing the events for that day. |
|
||
|
||
| ⏳ Edit Duration Event | ⚡ Edit Instant Event | 📨 Invite User to Event |
|
||
| ------------------------------------------------------------------------ | ---------------------------------------------------------------------- | -------------------------------------------------------------------------- |
|
||
| ![Edit Duration Event](showcase/06_duration_event_edit.png){width=200px} | ![Edit Instant Event](showcase/07_instant_event_edit.png){width=200px} | ![Invite User to Event](showcase/08_invite_user_to_event.png){width=200px} |
|
||
| Edit screen for duration-based events. | Edit screen for instant events. | Interface for inviting users to an event. |
|
||
|
||
| ⏱️ Duration Event Details | 🔍 Instant Event Details | 📂 Categories Overview |
|
||
| ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- | --------------------------------------------------------------- |
|
||
| ![Duration Event Details](showcase/09_duration_event_details.png){width=200px} | ![Instant Event Details](showcase/10_instant_event_details.png){width=200px} | ![Categories Overview](showcase/11_categories.png){width=200px} |
|
||
| Detailed view of a duration-based event. | Detailed view of an instant event. | List of event categories of the user. |
|
||
|
||
| ➕ Create New Category | 🆕 Updated Categories Overview | ⚙️ Settings Screen |
|
||
| ----------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
|
||
| ![Create New Category](showcase/12_new_category.png){width=200px} | ![Updated Categories](showcase/13_categories_with_new.png){width=200px} | ![Settings Screen](showcase/14_settings.png){width=200px} |
|
||
| Form to create a new category or edit an existing one. | Updated list with a newly added category. | Settings menu for configuring user details & the base URL. This screen is only available to logged in users. |
|
||
|
||
| 🔔 Notification: Invite | 👀 Invite Preview | ✅ Notification: Accepted |
|
||
| ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| ![Notification: Invite](showcase/15_notification_invite_bob.png){width=200px} | ![Invite Preview](showcase/16_invite_event_details_preview.png){width=200px} | ![Notification: Accepted](showcase/17_notification_invite_accepted_bob.png){width=200px} |
|
||
| Notification about an incoming event invite. | Preview of the event from the invite (after clicking the eye button). | That same notification for the invite, after acceptance. This notification also doesn't have the orange bar on the left, meaning it's marked as read. |
|
||
|
||
| 🗑️ Notifications Cleared | | |
|
||
| ------------------------------------------------------------------------------------------------------------------ | --- | --- |
|
||
| ![Notifications Cleared](showcase/21_notifications_cleared.png){width=200px} | | |
|
||
| Screen showing cleared notifications, after the user has swiped all the notifications to the right, deleting them. | | |
|