Community-driven event ticketing for organizers and attendees in Bangladesh.
- Organizer registration and JWT login
- Email verification with Base360 identity
- Community feed with image posts, likes and comments
- Event attachments that link posts directly to booking
- Community profiles and follow relationships
- Dashboard metrics and event list
- Create, edit and delete event flows
- Dynamic ticket types
- Organizer event details and attendee status
- Public event discovery and event details
- Guest booking with QR ticket confirmation
- Camera QR scanning and manual ticket check-in
- Typed Axios services, loading states, errors and toast notifications
-
Create the environment file:
cp .env.example .env.local
On PowerShell:
Copy-Item .env.example .env.local -
Set the API origin in
.env.local:NEXT_PUBLIC_API_URL=https://api.cafze.com NEXT_PUBLIC_TENANT_ID=free4mood
-
Install and start:
npm install npm run dev
-
Open
http://localhost:3011.
Camera scanning works on localhost or a deployed HTTPS origin.
NEXT_PUBLIC_* values are embedded into the browser bundle while the image is
built. Set them before building; changing them only on docker run will not
change the frontend API target.
Build and start with Docker Compose:
docker compose up --build -dOpen http://localhost:3011. View logs or stop the app with:
docker compose logs -f cafze
docker compose downTo build and run without Compose:
docker build \
--build-arg NEXT_PUBLIC_API_URL=https://api.cafze.com \
--build-arg NEXT_PUBLIC_TENANT_ID=free4mood \
-t cafze-web .
docker run --rm -p 3011:3011 cafze-webFor production, replace the API build argument with the public Base360 origin,
for example https://base360.onrender.com. Do not append /api or /api/v1.
The Axios client uses the hybrid Base360 endpoints:
/api/v1/users/create-user/api/v1/auth/login,/api/v1/auth/verify-email/api/v1/users/me/api/events,/api/events/:id/api/public/events,/api/public/events/:slug/api/tickets,/api/tickets/:eventId/api/attendees,/api/attendees/:eventId/api/checkin/api/v1/social/posts/api/v1/social/profiles/:userId/api/v1/social/follows/*
JWT tokens are stored as cafze_access_token in local storage and attached as
Authorization: Bearer <token>. Every request also includes the configured
x-tenant-id. Cafze also mirrors the token to Free4Mood's accessToken
cookie, allowing both frontends to share a login session on the same host.
Booking first creates an attendee, then creates a ticket using the returned
attendeeId. API responses may be returned directly or inside a { data }
envelope. The client also supports collection envelopes such as
data.result, data.items, data.events, data.tickets, and
data.attendees.
Both booking requests include the same Idempotency-Key header. The backend
should persist and honor this key to prevent duplicate attendee or ticket
records when a customer retries after a network timeout.
Check-in should return a 2xx response for a valid ticket, 400/404 for an invalid
ticket, and 409 or a message containing already used for a previous check-in.
Authentication and 5xx failures are treated as operational errors, not invalid
tickets.
The event banner field is a local UI preview as requested. Connect it to the backend media provider when file storage is available.