You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
EventHub is a complete event management platform designed specifically for the Cameroonian market. It allows verified organizers to create events, sell tickets via Mobile Money (MTN Momo and Orange Money), and manage check-ins using QR codes. Attendees can purchase tickets without creating an account β they simply enter their name, pay via mobile money, and download a QR code ticket.
Why EventHub?
Problem
EventHub Solution
Organizers don't know who bought tickets
Required attendee name before payment
Manual ticket sales via WhatsApp
Integrated Mobile Money + automatic QR
Fake tickets and ticket reuse
HMAC-signed QR codes that expire after first scan
Slow check-in at events
QR scanner β 2 seconds per person
No attendee list for follow-up
Organizer dashboard with complete attendee list
International platforms don't support local payments
MTN Momo and Orange Money built-in
β¨ Features
For Organizers
Feature
Description
Email Verification
Secure registration with 6-digit OTP
Event Creation
Create events with title, description, date, venue, and cover image
Ticket Types
Multiple ticket types (Early Bird, VIP, Regular) with custom pricing
WhatsApp Sharing
Unique shareable links per event β copy and paste to WhatsApp
Attendee List
View all attendees with names, phone numbers, ticket types, and check-in status
1. Attendee clicks WhatsApp link β /e/{event_id}
2. Frontend loads event details from Go backend
3. Attendee enters NAME (required) β stored in frontend state
4. Attendee selects ticket type + quantity
5. Attendee enters phone number β clicks "Pay"
6. Frontend sends {name, ticket_type, quantity, phone} to Go backend
7. Go backend creates order (status: pending) with attendee_name
8. Go backend calls Mobile Money API (MTN/Orange)
9. Attendee approves payment on phone
10. Mobile Money webhook confirms β Go backend updates order (paid)
11. Go backend generates QR code (includes name in HMAC)
12. Go backend returns QR code PNG to frontend
13. Attendee downloads QR code
14. At event: Organizer scans QR code
15. Backend validates signature + checks is_used flag
16. Returns attendee name, marks ticket as USED (expires)
π Tech Stack
Frontend
Technology
Version
Purpose
Next.js
15.x
React framework with App Router
TypeScript
5.x
Type safety
Tailwind CSS
4.x
Styling
shadcn/ui
Nova preset
UI components
Radix UI
Latest
Accessible primitives
React Hook Form
7.x
Form handling
Zod
3.x
Validation
Zustand
4.5+
State management
Axios
1.6+
HTTP client
qrcode.react
3.1+
QR code generation
react-qr-scanner
1.0+
Webcam QR scanning
Recharts
2.10+
Charts
Framer Motion
10.16+
Animations
Backend
Technology
Version
Purpose
Go
1.23+
High-performance API
Gin
1.9+
HTTP router
PostgreSQL
16.x
Relational database
pgx
5.x
Database driver
sqlc
1.27+
Type-safe SQL generation
golang-jwt
v5
JWT authentication
bcrypt
-
Password hashing
go-qrcode
v2
QR code generation
π Prerequisites
Before installing EventHub, ensure you have:
Requirement
Version
Check Command
Node.js
20+
node --version
npm
9+
npm --version
Go
1.23+
go version
PostgreSQL
16+
psql --version
Git
2.x
git --version
Docker (optional)
24+
docker --version
π» Installation
Clone the Repository
# Clone both frontend and backend
git clone https://github.com/eventhub/eventhub.git
cd eventhub
Frontend Setup
# Navigate to frontend directorycd frontend
# Install dependencies
npm install
# Create environment file
cp .env.example .env.local
# Edit .env.local with your configuration
nano .env.local
# Start development server
npm run dev
Backend Setup
# Navigate to backend directorycd ../backend
# Download Go dependencies
go mod download
# Create database
psql -U postgres -c "CREATE DATABASE eventhub"
psql -U postgres -c "CREATE USER eventhub WITH PASSWORD 'your_password'"
psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE eventhub TO eventhub"# Run migrations
go run cmd/migrate/main.go up
# Create environment file
cp .env.example .env
# Edit .env with your configuration
nano .env
# Run the backend server
go run cmd/api/main.go
Docker Setup (Alternative)
# Run both frontend and backend with Docker Compose
docker-compose up -d
# View logs
docker-compose logs -f
βοΈ Configuration
Frontend Environment Variables (.env.local)
# Backend API URLNEXT_PUBLIC_API_URL=http://localhost:8080/api/v1# Frontend App URLNEXT_PUBLIC_APP_URL=http://localhost:3000# Payment Redirect URLsNEXT_PUBLIC_MTN_MOMO_REDIRECT_URL=http://localhost:3000/payment/callbackNEXT_PUBLIC_ORANGE_MONEY_REDIRECT_URL=http://localhost:3000/payment/callback# QR Code Base URLNEXT_PUBLIC_QR_BASE_URL=http://localhost:3000/ticket# Feature FlagsNEXT_PUBLIC_ENABLE_ORANGE_MONEY=trueNEXT_PUBLIC_ENABLE_ANALYTICS=true
# Terminal 1: Backendcd backend
go run cmd/api/main.go
# Backend running at http://localhost:8080# Terminal 2: Frontendcd frontend
npm run dev
# Frontend running at http://localhost:3000
Production Build
# Build frontendcd frontend
npm run build
npm start
# Build backendcd backend
go build -o eventhub-api ./cmd/api
./eventhub-api
# Build binary for Linuxcd backend
GOOS=linux GOARCH=amd64 go build -o eventhub-api ./cmd/api
# Copy to server
scp eventhub-api root@your-server:/app/
scp .env root@your-server:/app/
# Run as systemd service# Create /etc/systemd/system/eventhub.service
# Create RDS instance (PostgreSQL 16)# Use db.t4g.micro for development, db.t4g.small for production# Set up backups (daily snapshots)# Enable Multi-AZ for production
π Troubleshooting
Common Issues and Solutions
Issue
Solution
Frontend can't connect to backend
Check NEXT_PUBLIC_API_URL in .env.local
Database connection failed
Verify DATABASE_URL and PostgreSQL is running
JWT token expired
Refresh token should renew automatically; if not, logout and login
QR code not scanning
Ensure good lighting, hold phone steady, use 200x200px minimum
Mobile Money payment fails
Check phone number format (237XXXXXXXXX), ensure sufficient balance
Email OTP not received
Check spam folder; wait 30 seconds and resend
Attendee name validation error
Names must be 3+ characters, letters and spaces only (no numbers/symbols)
QR code says "already used"
Ticket was already scanned β cannot be used again
Logs
# Frontend logscd frontend
npm run dev -- --verbose
# Backend logscd backend
go run cmd/api/main.go 2>&1| tee logs.txt
# Database logs
sudo tail -f /var/log/postgresql/postgresql-16-main.log
π€ Contributing
We welcome contributions! Please follow these steps:
Fork the repository
Create a feature branch
git checkout -b feature/amazing-feature
Commit your changes
git commit -m 'Add amazing feature'
Push to the branch
git push origin feature/amazing-feature
Open a Pull Request
Code Style
Frontend: Follow ESLint and Prettier configs
Backend: Run go fmt and go vet before committing
Commits: Use conventional commits format
Running Tests
# Frontend testscd frontend
npm run test# Backend testscd backend
go test ./...
π₯ Contributors
We are grateful to the following contributors who made EventHub possible:
# Clone repository
git clone https://github.com/eventhub/eventhub.git
cd eventhub
# Frontend (Leonie Basil - Lead)cd frontend
npm install
cp .env.example .env.local
npm run dev
# Backend (Fonyuy Verena - Lead) - new terminalcd backend
go mod download
createdb eventhub
go run cmd/migrate/main.go up
cp .env.example .env
go run cmd/api/main.go
# QA Testing (Rosine Achah - Lead) - new terminalcd frontend
npm run testcd ../backend
go test ./...
# Open browser
open http://localhost:3000
π Project Recognition
EventHub was developed as a professional internship project at Iknite Space under the supervision of Iknite space team. The project addresses real-world event management challenges in Cameroon and provides a complete solution for organizers and attendees.
Project Duration: 1 month (May 2026 - June 2026) Team Size: 3 developers Lines of Code: ~15,000 Git Commits: 200+
EventHub is a full-stack event management platform that allows organizers to create, promote, ticket, and manage events. Attendees can discover events, purchase tickets via mobile money, and check in using QR codes.