Find a file
2025-01-05 20:26:34 +01:00
.idea chore: Use proper fragment container views 2024-12-31 00:50:08 +01:00
app chore: Improve readme UI, use raw HTML for the table 2025-01-05 19:22:31 +01:00
gradle build: Downgrade coreKtx to 1.12.0 to fix building 2024-12-22 20:24:49 +01:00
showcase chore: Improve readme UI, use raw HTML for the table 2025-01-05 19:22:31 +01:00
.gitignore feat: Initial commit 2024-12-22 15:35:56 +01:00
build.gradle.kts feat: Initial commit 2024-12-22 15:35:56 +01:00
gradle.properties feat: Initial commit 2024-12-22 15:35:56 +01:00
gradlew feat: Initial commit 2024-12-22 15:35:56 +01:00
gradlew.bat feat: Initial commit 2024-12-22 15:35:56 +01:00
LICENSE.txt chore: Add GPL license 2024-12-22 20:28:51 +01:00
README.md fix: typo in subject name AP7MP -> AP7MT 2025-01-05 20:26:34 +01:00
settings.gradle.kts feat: Add color picking support for event creation 2025-01-01 18:56:52 +01: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 AP7MT subjects.

It integrates with a custom backend REST API to manage users, events, attendees, and categories effectively.

Overview / Key Features

  • Monthly Calendar View: The default landing page of the app provides a neatly organized monthly calendar view. Days are displayed in a grid layout with rows representing weeks. Days with events are highlighted. Users can navigate between months using arrow buttons.
  • Daily View: An interface for viewing and managing events for a specific day. Events are displayed as easy-to-read cards, ordered by their start times. From here, users can create new events, edit or delete their own events, leave invited events, or view detailed event information.
  • Event Management: Fully featured event management allows users to create, edit, and delete events. Events support color selection from a color picker, detailed descriptions, and attendee invitations. Invited events are integrated into the calendar, and invite notifications provide quick actions for managing responses.
  • Category Management: Users can create, edit, and delete event categories. These categories can be assigned to events to organize them effectively. Categories also support color selection for easy identification.
  • User Authentication: Secure and robust authentication with automatic login for valid session tokens. Tokens are securely stored & persist across app restarts, allowing users to access the app without needing to reauthenticate every time they open it. Registration and login are straightforward, and access tokens are refreshed automatically to maintain session continuity. Once a refresh token expires, the user is automatically logged out and redirected to the login screen.
  • Invitations and Notifications: Users can invite others to events, and invitations appear as notifications. Invite notifications contain support actions like marking as read, previewing the event details, accepting or declining the invitation, and deleting the notification. When an invitation is accepted or declined, the inviter receives a notification update, letting them know about the acceptance/rejection.
  • Error Handling and API Base URL Management: When the app cannot connect to the API server, a dedicated error screen is displayed. From this screen, users can modify the API base URL, allowing seamless switching to another server if needed. This Base URL setting is also accessible from the login and register screens.
  • Settings and Account Management: The settings screen is accessible to logged in users and offers comprehensive account management. Users can update their username, email, and password, delete their account, or log out. The API base URL can also be adjusted from here.
  • Event Details View: A detailed view displays complete event information, including its creation date, description, attendees, categories, and, if applicable, the event owner's details for invited events. This page offers a full view of the event, unlike the event cards shown in the day view, which only show a summary.
  • Color-Coded Visuals: Both events and categories support color customization via a built-in color picker, making it easy to differentiate and organize items visually.
  • Clean and Intuitive UI: The app's design prioritizes usability and clarity, with features like the event-based day highlights in the monthly view and a simple card format for daily events. All functionalities are accessible through logically organized pages and actions.
  • Notifications System: The notification page supports the previously described invite notifications, but also general message notifications, which the administrator can send (currently only possible by directly adding it to the database, as the API doesn't support privileged/admin accounts, though this would be possible to add in the future). Note that the app doesn't support push notifications, so notifications are only visible from the notifications screen when the app is open, however, this could be implemented in the future as well.

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.

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 Login Screen Base URL Change
📝 Register Screen 📆 Month View 📅 Day View
Register Screen Month View Day View
Edit Duration Event Edit Instant Event 📨 Invite User to Event
Edit Duration Event Edit Instant Event Invite User to Event
⏱️ Duration Event Details 🔍 Instant Event Details 📂 Categories Overview
Duration Event Details Instant Event Details Categories Overview
Create New Category 🆕 Updated Categories Overview ⚙️ Settings Screen
Create New Category Updated Categories Settings Screen
🔔 Notification: Invite 👀 Invite Preview Notification: Accepted
Notification: Invite Invite Preview Notification: Accepted
🗑️ Notifications Cleared
Notifications Cleared