EventStack

Production-Ready Event Management Platform

Full-stack event management • AI-powered budgeting • Real-time analytics

Status Tests Coverage


What is this?

EventStack is a comprehensive full-stack event management platform designed to connect event organizers with attendees. It provides a complete suite of tools for managing events, tracking expenses, discovering activities, and engaging with attendees through intelligent features.

Built with modern web technologies and best practices, EventStack offers a seamless experience for both event organizers and attendees, from event discovery to budget management.


Key Features

User Authentication

Event Management

Event Discovery

Expense Tracking

AI-Powered Budget Bot

Admin & Organizer Dashboards


How It Works

System Architecture

  1. Frontend (React + Vite)
    • Modern, responsive user interface
    • Real-time updates and interactions
    • Client-side routing and state management
  2. Backend (Fastify + Node.js)
    • RESTful API endpoints
    • Database operations and business logic
    • Authentication and authorization
    • File upload handling
  3. Database (PostgreSQL)
    • Relational data storage
    • User, event, and expense management
    • Optimized queries and relationships
  4. AI Integration (Google Gemini)
    • Budget planning assistance
    • Intelligent recommendations
    • Natural language processing

Technology Stack

Component Technology
Frontend Framework React 18.3
Build Tool Vite 5.4
Frontend Language TypeScript 5.9
Routing React Router 6.26
Backend Framework Fastify 4.27
Backend Language TypeScript 5.9
Runtime Node.js 20+
Database PostgreSQL
Validation Zod 3.23
Authentication JWT (jsonwebtoken)
Testing Vitest 4.0, React Testing Library
File Upload @fastify/multipart

Quick Start

One Command Deployment

# Run with default settings
.\deploy-eventstack.ps1

# Or customize with parameters
.\deploy-eventstack.ps1 -DbPassword "YourPassword" -JwtSecret "YourSecret" -BackendPort 4000

# Load sample data
.\deploy-eventstack.ps1 -LoadSampleData

# When done, press ENTER to automatically cleanup everything

Access Your System

Automatic Cleanup: Press ENTER when finished to stop all services, close windows, and optionally drop the database (unless CTRL+C is pressed to keep the database).

Deployment Script Parameters

Database Configuration:

Server Configuration:

Security Configuration:

Deployment Options (switches):

Example Customizations

# Override default password and JWT secret (RECOMMENDED)
.\deploy-eventstack.ps1 -DbPassword "YourSecurePassword123" -JwtSecret "your-super-secret-jwt-key-min-6-chars"

# Custom database settings
.\deploy-eventstack.ps1 -DbName "myeventstack" -DbUser "myuser" -DbPassword "mypassword"

# Custom ports
.\deploy-eventstack.ps1 -BackendPort 5000 -FrontendPort 3000

# Multiple customizations
.\deploy-eventstack.ps1 -DbPassword "SecurePass" -JwtSecret "MySecretKey" -BackendPort 8080 -LoadSampleData

Need more details? Check the deployment guide for all available parameters and options.


System Highlights

Production Ready - Fully tested and deployment-ready

Comprehensive Testing - 60+ test files covering unit and integration tests

High Code Coverage - 89%+ coverage across frontend and backend

Secure - JWT authentication, password hashing, input validation

Modern UI - Responsive design for mobile and desktop

Fast & Efficient - Fastify backend, Vite frontend build

Easy Setup - Single-script automated deployment

Type Safe - Full TypeScript implementation


Running Tests

Both packages are equipped with comprehensive test suites using Vitest.

Test Scripts

Navigate to the package directory (apps/backend or apps/frontend) and use:

Examples

Backend Tests:

cd apps/backend
npm test                    # Run all tests
npm run testu              # Unit tests with coverage
npm run testi              # Integration tests with coverage
npm run test:report        # Generate PDF coverage reports

Frontend Tests:

cd apps/frontend
npm test                    # Run all tests
npm run testu              # Unit tests with coverage
npm run testi              # Integration tests with coverage

Coverage reports are generated in the coverage/ directory, and PDF reports are available in tests/reports/ for each package.


Project Structure

eventstack/
├── apps/
│   ├── backend/          # Fastify server, database logic, and API endpoints
│   │   ├── src/          # Source code
│   │   ├── database/     # SQL schema and sample data
│   │   └── tests/        # Unit and integration tests
│   └── frontend/         # React client application
│       ├── src/          # Source code
│       └── tests/        # Unit and integration tests
├── deploy-eventstack.ps1 # Automated deployment script
├── tsconfig.base.json    # Shared TypeScript configuration
└── README.md

Manual Setup

If you prefer to set up the project manually or are on a non-Windows system:

Prerequisites

Steps

  1. Clone the Repository:
    git clone <YOUR_REPOSITORY_URL>
    cd eventstack
    
  2. Database Setup:
    createdb eventstack
    psql -d eventstack -f apps/backend/database/schema.sql
    # Optional: Load sample data
    psql -d eventstack -f apps/backend/database/sample_data.sql
    
  3. Environment Configuration:

    Create apps/backend/.env:

    NODE_ENV=development
    PORT=4000
    DATABASE_URL="postgresql://USERNAME:PASSWORD@HOST:PORT/DATABASE_NAME"
    JWT_SECRET="your-super-secret-jwt-key-minimum-6-characters"
    CORS_ORIGINS="http://localhost:5173"
    GEMINI_API_KEY=""  # Optional: Required for AI Budget Bot features
    
  4. Install Dependencies:
    cd apps/backend && npm install
    cd ../frontend && npm install
    
  5. Run the Application:
    # Backend (in one terminal)
    cd apps/backend
    npm run dev
       
    # Frontend (in another terminal)
    cd apps/frontend
    npm run dev
    

⚠️ Security Notes


Academic Context

Course: Computer Engineering Project
Institution: University of Peradeniya
Year: 2024-2025

This project demonstrates the integration of modern web technologies, database management, AI integration, and best practices in software development to create a production-ready event management platform.


Transforming event experiences through intelligent technology