Skip to content

Event management, publishing and staffing platform built with t3 stack

Notifications You must be signed in to change notification settings

bikrampun/evento

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Evento

Note: This project was developed as part of a college project and is intended solely for educational purposes, and is no longer maintained.

See Screenshots ⬇️

Features

  • Create Events, Edit and Publish
  • Search, Find new events with filters
  • Event creator can invite people to join the event as a team member
  • Event creator and team can discuss event related things through chat in realtime
  • Event creator can create and assign tasks to the team memebers in boards and cards
  • Event creator can create job/gigs posting for event
  • Job seeker can apply for the job/gigs listed in each event, event creator can view and select or reject them
  • Event creator can create a seat mapping with labels and prices
  • Buy tickets for a paid event with seat selection
  • Event recommendation system based on current viewing event
  • Publish separate website with new subdomain for each event
  • Email Compagins
  • Analytics of event, how many people visited, are interested, paid for tickets etc.

How to run

  • npm install -g pnpm
  • pnpm install
  • pnpm prepare
  • On linux only: chmod ug+x .husky/*
  • Copy .env.example to .env and fill the values
    • For the Email part, replace noreply@example.com with your email, and replace password with your app password which can be generated from your Manage Google Account > Security > 2 Factor Authentication > App Passwords
    • Database
  • pnpm dev:next to run the next.js server
  • pnpm dev:wss to run the websocket server
  • pnpm dev to run both at once
  • npx prisma db seed to seed the database

For event on click show recommendation which is written in python scripts. So, you must have python installed

  • pip install -r requirements.txt
  • then change PYTHON_EXECUTABLE_PATH="\path\to\python\executable" from env

or if want to run by creating virtual environment in python

Then, follow the step to run

  • python -m venv /path/to/new/virtual/environment

for windows

  • python -m venv venv
  • venv/Scripts/pip install -r requirements.txt

for linux

  • python3 -m venv venv
  • venv/bin/pip3 install -r requirements.txt

for mac

  • python -m venv venv
  • venv/bin/pip install -r requirements.txt

if path: venv/directory is mistake then check by yourself and correct it

Database - Postgresql

Ways to create prostgres database to work on

  1. Using docker
  • Install Docker Engine (Desktop/CLI only)
  • Fill the postgresql values in .env file
 POSTGRES_PASSWORD="some-password"
 POSTGRES_USER="admin"
 POSTGRES_DB="evento"
  • Run docker compose: sudo docker compose up -d or docker-compose up -d
  • Update DATABASE_URL: postgresql://username:password@host:port/db_name, so for above env file it will be postgresql://admin:some-password@localhost:5432/evento
  • Run pnpm db:push to sync prisma schema to database

How to collaborate

  • Clone this repo using ssh or https
  • Create a new branch from main: git checkout -b new-branch, this creates a new-branch and also switches the branch from main to new-branch
  • Make changes then Commit git commit -m prefix:Something and push the branch git push (pushing for first time?: git push -u origin new-branch)
  • Make a PR from your-branch to main
  • If there is no issue, merge it
  • If there is issue solve it by discussing with your peer or if you know the impact of changes, do it yourself

// Before starting again 3.

  • Save and Commit all the changes in your current branch
  • Pull main branch git pull origin main
  • Merge recent changes from main to your-branch: git merge main
  • Repeat 2

The Stack

  • next.js app directory
  • next-auth: for authentication
  • trpc: to make apis and consume them using react-query
  • prisma: to work with database
  • shadcn/ui and tailwindCSS: styling
  • zustand: manage global state
  • husky setup with lint-staged: Manage lint conventions

Commit Lint Conventions

  • build: When making changes related to build system or tools.
  • chore: General maintenance or tasks that aren’t user-facing.
  • ci: Changes to Continuous Integration (CI) configuration or scripts.
  • docs: Updates or additions to documentation.
  • feat: New feature additions or enhancements.
  • fix: For bug fixes or resolving issues.
  • perf: Changes aimed at improving performance.
  • refactor: Code changes that don’t affect external behavior but enhance code structure.
  • revert: Reverting previous commits.
  • style: Changes in code style or formatting (not affecting functionality).
  • test: Adding or modifying tests.

Examples

  • build: build: Update webpack configuration
  • chore: chore: Clean up unused files
  • ci: ci: Configure GitHub Actions for deployment
  • docs: docs: Update installation guide
  • feat: feat: Add user authentication feature
  • fix: fix: Resolve issue with user login
  • perf: perf: Improve caching mechanism
  • refactor: refactor: Simplify error handling
  • revert: revert: Revert changes in user profile component
  • style: style: Format code according to style guide
  • test: test: Add unit tests for API endpoints

Code snippets

# Delete all data and seed the database
# Only in development
npx prisma db push --force-reset && npx prisma db seed

Screenshots

Login Login screen for user authentication.

Home Home screen after successful login.

Dashboard Main dashboard view.

Analytics Analytics page showing user and event data.

Create Event Create a new event.

Tickets Analytics Analytics related to event tickets.

Ticket Checkout Checkout screen for purchasing event tickets.

Ticket Buy Tickets seat selection page.

My Orders List of user’s past orders.

Subdomain Custom subdomain setup for the event.

Tasks Task management section.

Team Team management screen.

Applied Jobs List of jobs the user has applied for.

Apply for Job Form for applying to a job.

Chat Chat interface to communicate with team.

Email Email marketing screen.

Releases

No releases published

Packages

No packages published