Skip to content

johancosta999/EventPlanning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

EventPlanning System

A Java-based web application for managing end-to-end event planning workflows, built with Java Servlets, JSP, and MySQL.


Overview

This system connects customers, event planners, and service providers under a single platform managed by an admin. Customers submit event requests, planners build and track event plans, and service providers register available services — all under role-based access control.


Features

Customer

  • Register and log in to a personal account
  • Submit new event requests with details such as venue, date, budget, guest count, and required services
  • View, update, and delete their own event requests

Event Planner

  • Log in via the employee portal
  • View event requests assigned to them
  • Create, update, and delete event plans with fields for assigned providers, progress tracking, confirmed location, payment status, and planner notes
  • Access a dedicated planner dashboard

Service Provider

  • Log in and manage allocated services
  • Create, view, update, and delete service allocations (event ID, service type, region, budget range)

Admin

  • Manage all staff accounts (insert, update, delete)
  • View all events in the system
  • Assign roles: Admin, Event Planner, Service Provider

Tech Stack

Layer Technology
Backend Java (Servlets)
Frontend JSP
Database MySQL
Server Apache Tomcat
DB Driver MySQL Connector/J (com.mysql.jdbc.Driver)

Project Structure

EventPlanning/src/main/java/
│
├── Controller/          # Planner-side servlets, DAO, DB singleton
│   ├── DBConnection.java
│   ├── EventplanDAO.java
│   ├── EventplanDAOInterface.java
│   ├── Createeventplanservlet.java
│   ├── Deleteventplanservlet.java
│   ├── UpdateEventPlanServlet.java
│   ├── PlannerdashboardServlet.java
│   ├── employeeLoginServlet.java
│   └── EventPlannerLogoutServlet.java
│
├── Services/            # Business logic / service layer
│   └── Services.java
│
├── Models/              # Plain Java model classes
│   ├── Employeedetails.java
│   ├── Eventplan.java
│   └── Eventrequest.java
│
├── EventPackage/        # Customer-facing event request CRUD
│   ├── Event.java
│   ├── EventDBUtil.java
│   ├── InsertEventServlet.java
│   ├── UpdateEventServlet.java
│   ├── DeleteEventServlet.java
│   └── GetAllEventServlet.java
│
├── EventPlanningPackage/ # Admin/staff management + shared DB connection
│   ├── db_connection.java
│   ├── adminModel.java
│   ├── adminControl.java
│   ├── StaffLoginServlet.java
│   ├── LogoutServlet.java
│   ├── insertServelet.java
│   ├── updateServelet.java
│   ├── deleteServelet.java
│   └── GetAllServelet.java
│
├── ProviderPackage/     # Service provider allocation CRUD
│   ├── AllocateServiceModel.java
│   ├── AllocateServiceController.java
│   ├── INSERTSERVLET.java
│   ├── UPDATESERVLET.java
│   ├── DELETESERVLET.java
│   ├── DISPLAYSERVLET.java
│   └── PROLOGOUTservlet.java
│
└── UserPackage/         # Customer registration, login, profile
    ├── Customer.java
    ├── CustomerDBUtil.java
    ├── CustomerInsert.java
    └── LoginServlet.java

Database Setup

The application connects to a MySQL database named eventplanner on localhost:3306.

Default credentials (update before deploying):

username: root
password: 0000

Required Tables

CREATE DATABASE eventplanner;

-- Staff / Admin accounts
CREATE TABLE admin (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100),
    contact_number VARCHAR(20),
    role VARCHAR(50),
    password VARCHAR(100)
);

-- Customer accounts
CREATE TABLE customer (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100),
    phone VARCHAR(20),
    username VARCHAR(50),
    password VARCHAR(100)
);

-- Event requests submitted by customers
CREATE TABLE eventrequest (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    type VARCHAR(50),
    venue VARCHAR(100),
    date VARCHAR(20),
    contactNumber VARCHAR(20),
    guestCount VARCHAR(10),
    budget VARCHAR(20),
    requiredServices TEXT,
    description TEXT,
    userid INT
);

-- Event plans created by planners
CREATE TABLE eventplan (
    planid INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(100),
    assignedproviders TEXT,
    progress VARCHAR(50),
    confirmedlocation VARCHAR(100),
    paymentstatus VARCHAR(50),
    plannernotes TEXT,
    requestid INT,
    plannerid INT
);

-- Service allocations by providers
CREATE TABLE allocateservice (
    id INT AUTO_INCREMENT PRIMARY KEY,
    eventid VARCHAR(50),
    servicetype VARCHAR(50),
    region VARCHAR(50),
    budgetrange VARCHAR(50)
);

Getting Started

Prerequisites

  • Java 8+
  • Apache Tomcat 9+
  • MySQL 8+
  • Maven (if using pom.xml) or manual JAR setup

Steps

  1. Clone the repository

    git clone https://github.com/your-org/EventPlanning.git
  2. Set up the database

    • Create the eventplanner database and run the SQL above
    • Update DB credentials in DBConnection.java and db_connection.java if needed
  3. Build the project

    • Import into Eclipse/IntelliJ as a Dynamic Web Project or Maven project
    • Ensure mysql-connector-java JAR is on the classpath
  4. Deploy to Tomcat

    • Export as a .war file and drop into Tomcat's webapps/ directory, or run directly from your IDE
  5. Access the app

    • Customer portal: http://localhost:8080/EventPlanning/logn.jsp
    • Staff login: http://localhost:8080/EventPlanning/staffLogin.jsp

User Roles & Login Routing

Role Redirected To
Admin adminDashboard.jsp
Event Planner PlannerdashboardServlet
Service Provider spinsert.jsp
Customer GetAllEventServletuserprofile.jsp

Known Issues & Improvement Areas

  • SQL injection risk — several EventDBUtil and adminControl methods build queries via string concatenation. These should be migrated to PreparedStatement.
  • Plain-text passwords — passwords are stored and compared without hashing. BCrypt or similar should be applied before production use.
  • Singleton DB connection (DBConnection.java) — not thread-safe under concurrent load; consider a connection pool (e.g. HikariCP).
  • Inconsistent naming conventions — class and servlet names vary in casing and style across packages; standardising to PascalCase for classes is recommended.

License

This project is intended for academic/educational use.

About

A Java-based web application for managing end-to-end event planning workflows, built with Java Servlets, JSP, and MySQL

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors