Skip to content

Rox0z/FOMO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FOMO - Ticket Marketplace Platform

FOMO is an academic ticket marketplace platform developed for Laboratório de Engenharia de Software. It connects three main actors: administrators, event promoters/vendors, and buyers.

The current version focuses on the complete platform flow without real payment integration. Checkout is simulated so that the project can validate orders, ticket generation, capacity control, QR code creation, and user flows without depending on Stripe, PayPal, or another external provider.

Group

  • Diogo Estriga
  • Dinis Monteiro

Main Features

Public / Buyers

  • Browse approved events
  • View event details
  • Register and log in
  • Add tickets to cart on the frontend
  • Complete a simulated checkout
  • View personal tickets
  • Receive generated tickets with unique QR codes

Vendors

  • Register as a vendor
  • Wait for administrator approval
  • Log in only after approval
  • Create events
  • View own events
  • Request edits to existing events
  • View vendor statistics
  • Update vendor profile

Administrators

  • View platform overview metrics
  • Manage users
  • Approve or reject vendors
  • Approve or reject events
  • Approve or reject vendor edit requests
  • Review audit logs generated by administrative actions

Tech Stack

Layer Technology
Frontend Angular
Backend NestJS
Database PostgreSQL
ORM Drizzle ORM
Authentication JWT + Passport
Validation class-validator / DTOs
Security Helmet, rate limiting, guards and role-based access
Tests Jest, Supertest, Angular test runner
Images Optional ImgBB integration
Emails Optional Gmail/Nodemailer integration

Project Structure

FOMO/
├── backend/              # NestJS REST API
│   ├── src/              # Backend source code
│   ├── test/             # Backend e2e tests
│   └── README.md         # Backend-specific documentation
├── frontend/             # Angular application
│   ├── src/app/          # Components, services, guards and routes
│   └── README.md         # Frontend-specific documentation
├── docs/                 # Project documentation
│   └── overview.md
│   
├── GETTING_STARTED.md    # Setup and execution guide
├── start.sh              # Linux/macOS startup helper
├── start.bat             # Windows startup helper
└── README.md             # General project documentation

Backend API Highlights

  • GET /api/health
  • GET /api/db-health
  • POST /auth/register
  • POST /auth/login
  • GET /auth/profile
  • GET /events
  • GET /events/:id
  • POST /events
  • PUT /events/:id/request-edit
  • POST /orders/checkout
  • GET /tickets/me
  • GET /admin/overview
  • PATCH /admin/vendors/:id/approve
  • PATCH /admin/events/:id/approve

Quick Start

For a full setup guide, see GETTING_STARTED.md.

Backend

cd backend
npm install
cp .env.example .env
npx drizzle-kit push
npx tsx src/db/seed.ts
npm run start:dev

Backend runs on http://localhost:3000. Swagger documentation is available at http://localhost:3000/api.

Frontend

cd frontend
npm install
npm run start

Frontend runs on http://localhost:4200.

Test Commands

Backend unit tests

cd backend
npm run test

Backend e2e tests

cd backend
npm run test:e2e

The e2e suite covers health endpoints, authentication, users, vendors, events, orders, tickets and admin flows using mocked service dependencies. This keeps the tests deterministic and independent from a local PostgreSQL instance.

Backend build

cd backend
npm run build

Frontend build

cd frontend
npm run build

Frontend tests

cd frontend
npm run test

Demo Accounts

After running the seed, all demo accounts use the password:

fomo2026

Useful accounts:

Role Email Notes
Admin admin@fomo.pt Main administrator
Buyer john@fomo.pt Regular active buyer
Buyer blocked@fomo.pt Blocked account for login validation
Approved vendor lx@fomo.pt Approved vendor
Approved vendor algarve@fomo.pt Approved vendor
Pending vendor coimbra@fomo.pt Pending vendor for approval tests

Current Scope and Limitations

  • Real payment processing is not integrated.
  • Checkout is simulated by the backend.
  • Tickets are generated internally and include unique QR codes.
  • Email delivery depends on valid Gmail/Nodemailer credentials.
  • Image upload depends on a valid ImgBB API key.
  • JWT tokens are stored by the frontend for academic/development purposes; for production, HttpOnly cookies would be preferable.

Documentation

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors