Skip to content

A full-stack event booking system that allows users to browse and book events, manage their bookings, and provides an integrated web-based admin panel for event management.

Notifications You must be signed in to change notification settings

mohamedaalsayed/EventBond

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 

Repository files navigation

EventBond

EventBond is a full-stack event booking system that allows users to browse and book events, manage their bookings, and provides an integrated web-based admin panel for event, user, and booking management.


Features

  • User Features:

    • Browse and search for upcoming events
    • Book events and manage your bookings
    • View event details, images, and categories
    • Multi-language support (English & Arabic)
  • Admin Features:

    • Manage events (create, edit, delete, upload images)
    • Manage users (view, edit roles, delete)
    • Manage all bookings (view, delete)
    • Admin dashboard and sidebar navigation

Tech Stack

  • Frontend: React (with TypeScript, Vite), Tailwind CSS, i18next (for translations)
  • Backend: NestJS (TypeScript), TypeORM, JWT Auth, REST API
  • Database: PostgreSQL

Project Structure

eventbond-api/         # Backend (NestJS)
eventbond-client/      # Frontend (React + Vite)

Prerequisites

  • Node.js (v16+ recommended)
  • npm (v8+ recommended)
  • PostgreSQL (v12+ recommended)

Getting Started

1. Clone the Repository

git clone https://github.com/your-username/EventBond.git
cd EventBond

2. Database Setup

  • Create a PostgreSQL database (e.g., eventbond_db).
  • Note your DB username, password, host, and port.

3. Backend Setup (eventbond-api)

cd eventbond-api

Make a .env file in the root directory of eventbond-api

Edit your .env file to match your PostgreSQL credentials:

DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_USERNAME=your_db_user
DATABASE_PASSWORD=your_db_password
DATABASE_NAME=eventbond
DATABASE_SSL=true # enable SSL connection or not
JWT_SECRET=your_jwt_secret
ADMIN_EMAIL=admin@example.com
ADMIN_USERNAME=admin
ADMIN_PASSWORD=Very12Str@ng75Pa$$word

Install dependencies:

npm install

Start the backend server:

# For development (with hot reload)
npm run start:dev

# For production
npm run build
npm run start:prod

The backend will typically run on http://localhost:3000.


4. Frontend Setup (eventbond-client)

cd ../eventbond-client

Install dependencies:

npm install

Configure API URL:

Edit .env or vite.config.ts (or similar) to set the backend API URL, e.g.:

VITE_API_URL=http://localhost:3000/api

Start the frontend:

# For development
npm run dev

# For production build
npm run build
npm run preview

The frontend will typically run on http://localhost:5173 (or as specified by Vite).


5. Access the App


Default Admin User

  • You may need to create an admin user directly in the database or via a registration endpoint, then manually set their role to admin in the users table.

Environment Variables

Both frontend and backend use environment variables for configuration. See .env.example files in each folder for details.


Scripts

Backend (eventbond-api)

  • npm run start:dev — Start NestJS in development mode
  • npm run build — Build the backend
  • npm run start:prod — Start the backend in production
  • npm run test — Run backend tests

Frontend (eventbond-client)

  • npm run dev — Start React app in development mode
  • npm run build — Build the frontend
  • npm run preview — Preview the production build

About

A full-stack event booking system that allows users to browse and book events, manage their bookings, and provides an integrated web-based admin panel for event management.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages