A comprehensive JavaFX-based Event Management System
Developed by Team Abstrax for CSE 2104 - Object Oriented Design and Programming Lab
Team Members: Kazi Maheru Tafannum โข Rubaiya Sultana โข Shadman Zaman Sajid โข Md. Irfan Iqbal
Traditional event management often suffers from scattered communication and overlapping venue registrations. PlanIt addresses these challenges by providing a centralized platform for event coordination, task management, and stakeholder communication.
| Objective | Description |
|---|---|
| ๐ Streamline Workflows | Simplify event planning with intuitive dashboards |
| ๐ฅ Role-Based Delegation | Enable efficient task assignment and tracking |
| ๐ข Venue Management | Prevent scheduling conflicts with centralized booking |
| ๐ฌ Real-Time Collaboration | Foster team communication through discussion forums |
|
|
|
|
This diagram provides a detailed look at the classes, relationships, and architectural patterns that make up the PlanIt application.
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#0f172a', 'primaryTextColor': '#e2e8f0', 'lineColor': '#64748b', 'secondaryColor': '#1e293b', 'tertiaryColor': '#0f172a', 'fontSize': '14px'}}}%%
classDiagram
%% ==================== DOMAIN MODELS ====================
class User {
-id: int
-username: string
-email: string
-passwordHash: string
+getters/setters
}
class Task {
-id: int
-text: string
-isCompleted: bool
-priority: Priority
-dueDate: LocalDate
-createdDate: LocalDate
+toggleComplete()
+setPriority()
}
class EventData {
-id: int
-name: string
-date: LocalDate
-description: string
-location: string
-capacity: int
+addOrganizer()
+removeOrganizer()
}
class Organizer {
-id: int
-name: string
-email: string
-registrationCode: int
+validateCode()
}
class Priority {
<<enumeration>>
LOW
MEDIUM
HIGH
URGENT
}
%% ==================== PERSISTENCE LAYER ====================
class DatabaseUtility {
<<Singleton/Facade>>
-CONNECTION_URL: string$
-instance: DatabaseUtility$
-getInstance(): DatabaseUtility$
+getConnection(): Connection
+registerUser(): boolean
+authenticateUser(): boolean
+createEvent(): boolean
+saveOrganizer(): boolean
}
class TaskStorage {
<<Utility>>
-FILE_PATH: string$
-saveTasks(): void$
-loadTasks(): List~Task~$
-deleteTasks(): void$
}
class FileUtil {
<<Utility>>
-ensureFileExists(): void$
-readFromFile(): String$
-writeToFile(): void$
}
%% ==================== BUSINESS LOGIC / SERVICES ====================
class SessionManager {
<<Singleton>>
-instance: SessionManager$
-currentUser: User
-getInstance(): SessionManager$
+login(): boolean
+logout(): void
+getCurrentUser(): User
+isAuthenticated(): boolean
}
class UserService {
-authenticationService: AuthenticationService
+registerNewUser(): boolean
+validateCredentials(): boolean
+updateUserProfile(): boolean
+resetPassword(): boolean
}
class AuthenticationService {
-hashPassword(): string
-verifyPassword(): boolean
+authenticate(): User
}
class EventService {
-databaseUtility: DatabaseUtility
+createEvent(): EventData
+fetchAllEvents(): List~EventData~
+updateEvent(): boolean
+deleteEvent(): boolean
+getEventById(): EventData
}
class TaskService {
-taskStorage: TaskStorage
-currentUser: User
+createTask(): Task
+getAllTasks(): List~Task~
+updateTask(): boolean
+deleteTask(): boolean
+filterByPriority(): List~Task~
+filterByDueDate(): List~Task~
}
%% ==================== UI / PRESENTATION LAYER ====================
class JavaFXApplication {
<<Abstract>>
+start()
+launch()
}
class Main {
+main(): void
+start(Stage): void
}
class LoginController {
-userService: UserService
-sessionManager: SessionManager
+handleLogin(): void
+handleRegistration(): void
+navigateToDashboard(): void
}
class DashboardController {
-eventService: EventService
-taskService: TaskService
-sessionManager: SessionManager
+displayUserEvents(): void
+openEventCreator(): void
+openTaskManager(): void
+logout(): void
}
class EventController {
-eventService: EventService
-currentEvent: EventData
+loadEventForm(): void
+saveEvent(): boolean
+addOrganizer(): void
+removeOrganizer(): void
+displayEventDetails(): void
}
class TaskManagerController {
-taskService: TaskService
-displayedTasks: List~Task~
+addTask(): void
+updateTask(): void
+deleteTask(): void
+filterTasks(): void
+markComplete(): void
}
%% ==================== NETWORKING LAYER ====================
class Server {
-port: int
-clientHandlers: List~ClientHandler~
+start(): void
+handleClient(): void
+broadcastMessage(): void
}
class ClientHandler {
-socket: Socket
-server: Server
+run(): void
-processRequest(): void
-sendResponse(): void
}
class Request {
<<Serializable>>
-command: string
-payload: object
-timestamp: long
+getCommand(): string
+getPayload(): object
}
class Response {
<<Serializable>>
-status: string
-data: object
-message: string
+isSuccess(): bool
}
%% ==================== RELATIONSHIPS ====================
%% Inheritance
Main --|> JavaFXApplication
%% Service Dependencies
LoginController --> UserService
LoginController --> SessionManager
LoginController --> AuthenticationService
DashboardController --> EventService
DashboardController --> TaskService
DashboardController --> SessionManager
EventController --> EventService
TaskManagerController --> TaskService
UserService --> AuthenticationService
UserService --> DatabaseUtility
EventService --> DatabaseUtility
TaskService --> TaskStorage
TaskStorage --> FileUtil
%% Model Relationships
EventData "1" o-- "*" Organizer : contains
Task --> Priority : uses
User "1" *-- "*" Task : owns
User "1" *-- "*" EventData : organizes
%% UI Navigation
LoginController ..> DashboardController : navigates to
DashboardController ..> EventController : opens
DashboardController ..> TaskManagerController : opens
%% Session Management
SessionManager --> User : maintains
%% Networking
Server "1" *-- "*" ClientHandler : manages
ClientHandler --> Request : receives
ClientHandler --> Response : sends
%% Persistence
DatabaseUtility ..> User : CRUD
DatabaseUtility ..> EventData : CRUD
TaskStorage ..> Task : persist
| Category | Technologies |
|---|---|
| Language | Java 8+ |
| Frontend | JavaFX, FXML, CSS, Scene Builder |
| Backend | Java Socket Programming, Multi-threading |
| Database | MySQL (Hosted on Clever-cloud), JDBC |
| Tools | IntelliJ IDEA, Git |
- ๐ Networking: Socket-based client-server architecture using TCP/IP and object serialization.
- ๐พ Persistence: Hybrid storage using a remote MySQL database and local serialized
.datfiles. - ๐จ UI/UX: Modern dark theme with responsive layouts and animated loading states.
- ๐ Security: Password hashing with BCrypt for secure credential storage.
- โ JDK 8 or higher
- ๐ Active internet connection (for remote database access)
- ๐ป IntelliJ IDEA or other Java-compatible IDE
# 1. Clone the repository
git clone https://github.com/Ir-Rafi/PlanIt.git
# 2. Navigate to the project directory
cd PlanIt
# 3. Open the project in your IDE and build it
# 4. Run the Main class to start the applicationThe application is pre-configured to use a remote MySQL database hosted on Clever-cloud, so no additional database setup is required for standard use.
- Import the project into your IDE (e.g., IntelliJ IDEA).
- Ensure a compatible JDK (8+) is configured for the project.
- Add the JavaFX libraries to your project's classpath if your IDE requires it.
- Locate and run the
Main.javaclass to launch the client application. - Start the Server module first if you intend to test network features locally.
PlanIt/
โโโ ๐ src/
โ โโโ ๐ Main.java # Application entry point
โ โโโ ๐ Dashboard.java # Main dashboard controller
โ โโโ ๐ AdvancedTodoListApp.java # Task management module
โ โโโ ๐ EventController.java # Event handling logic
โ โโโ ๐ DatabaseUtility.java # Database operations
โ โโโ ๐ Session.java # Session management
โ โโโ ๐ fxml/ # FXML view files
โ โโโ ๐ css/ # Stylesheets
โโโ ๐ Chat/ # Discussion forum module
โโโ ๐ img/ # Images and assets
โโโ ๐ lib/ # External libraries
โโโ ๐ reports/ # Generated reports
โโโ ๐ README.md
Kazi Maheru Tafannum โข Rubaiya Sultana โข Shadman Zaman Sajid โข Md. Irfan Iqbal
| Roll | Name | Role | Responsibilities |
|---|---|---|---|
| 03 | Kazi Maheru Tafannum | ๐ง Backend Dev | Backend Design, DBMS |
| 05 | Rubaiya Sultana | ๐จ UI Designer | UI Design, Conceptualist |
| 14 | Shadman Zaman Sajid | ๐งช Tester | Testing, System Programming |
| 35 | Md. Irfan Iqbal | ๐๏ธ Lead Dev | Backend Architecture, UI Design, Integration |
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#383a42', 'primaryTextColor': '#abb2bf', 'lineColor': '#6b83aA', 'secondaryColor': '#282c34', 'tertiaryColor': '#21252b'}}}%%
timeline
title PlanIt Development Roadmap
section Q1 2026
Email Notifications : Push notifications for task updates : Event reminders
section Q2 2026
Mobile Application : Android & iOS versions : Cross-platform sync
section Q3 2026
AI Integration : ML-based event recommendations : Smart scheduling
section Q4 2026
Video Conferencing : Remote meeting integration
Multi-language Support
- ๐ฑ Mobile Application - Android/iOS native apps
- ๐ง Email Notifications - Task updates and reminders
- ๐ค Machine Learning - Smart event recommendations
- ๐น Video Conferencing - Remote meeting integration
- ๐ Multi-language Support - Internationalization
This project was created for academic purposes as part of the CSE 2104 course at the University of Dhaka. It is licensed under the MIT License.
** Star this repository if you found it helpful!**
Team Abstrax