Find your people for events & activities. A modern platform to discover local events, join activities, host gatherings, and manage everything from a clean, role-aware dashboard.
EventsHub connects people through shared experiences β concerts, hikes, game nights, workshops and more. This repository is the Next.js frontend; it talks to a separate Express + Prisma REST API over JWT (HTTP-only cookie) auth.
It ships three coordinated surfaces:
- Public site β landing page, event discovery, event details, authentication.
- Admin dashboard β a "Clean Light Pro" control center for managing users, hosts, events, participants, payments, reports, revenue analytics, and notifications.
- Host tools β a per-event "Manage" workspace for analytics, invitations, check-in/attendance, and co-hosts.
- π Browse & search events with filters (category, status, location)
- π Event detail pages with host info, capacity, pricing, and ratings
- π Authentication β register, login, forgot/reset password (JWT via HTTP-only cookies)
- β‘ Quick demo login β one-click sign-in as User / Host / Admin
- π Overview β KPIs + bespoke SVG charts (revenue, signups, events, status mix)
- π₯ Users β search/filter, block/unblock, delete
- π‘οΈ Admins β role promote/demote (SUPER_ADMIN-gated)
- β¨ Hosts β verify toggle + per-host stats
- ποΈ Events β browse, inspect, force-cancel (moderation)
- π§Ύ Participants β every join request, filterable & removable
- π³ Payments β transactions + refunds
- π© Reports β resolve / dismiss content reports
- π Revenue β monthly trend + top events/hosts
- π Notifications β topbar bell + full center
- π Light/Dark theme toggle (light-first)
- π Per-event analytics (views, capacity, revenue, attendance)
- βοΈ Invitations (send / list / revoke + invitee accept-decline)
- β Check-in & attendance (token-based)
- π€ Co-host management
| Area | Technology |
|---|---|
| Framework | Next.js 16 (App Router, Server Actions, React Server Components) |
| Language | TypeScript 5 |
| UI | React 19, Tailwind CSS v4, shadcn/ui (Radix primitives) |
| Charts | Bespoke lightweight SVG components (no charting dependency) |
| Forms & Validation | react-hook-form, zod |
| Motion | framer-motion |
| Notifications | sonner |
| Icons | lucide-react |
| Fonts | Sora Β· Onest Β· JetBrains Mono (dashboard) Β· Geist (public) via next/font |
src/
βββ app/
β βββ (authentication)/ # login, register, forgot/reset password
β βββ (commonLayout)/ # public site (home, events, profile, invite accept)
β βββ (dashboardLayout)/
β βββ admin/dashboard/ # admin management pages
β βββ (commonDashboard)/ # my-events + host "manage-event" tools
βββ components/
β βββ ui/ # shadcn/ui primitives
β βββ dashboard/ # reusable dashboard primitives (StatCard, PageHeader, β¦)
β βββ modules/ # feature components grouped by domain
β βββ shared/ # navbar, footer, table, cells, dialogs
βββ services/ # server actions per domain (auth, events, payment, β¦)
βββ types/ # shared TypeScript interfaces
βββ lib/ # utils, server-fetch, formatters, theme controller
βββ zod/ # validation schemas
docs/ # per-feature dashboard documentation
plan.md # dashboard reconstruction plan & changelog
- Node.js 20+
- A package manager (pnpm recommended; npm works too)
- A running instance of the Events & Activities backend API
git clone https://github.com/repon001/EventsActivities-frontend.git
cd EventsActivities-frontend
pnpm install # or: npm installCreate a .env file in the project root:
# Base URL of the backend REST API
NEXT_PUBLIC_BASE_API_URL=http://localhost:5000/api/v1pnpm dev # or: npm run devOpen http://localhost:3000.
βΉοΈ The frontend needs the backend running (default
http://localhost:5000) for auth and data.
The login screen includes Quick demo login buttons. Seed them in the backend with
node prisma/seed-demo.js, then sign in instantly:
| Role | Password | |
|---|---|---|
| User | user@eventshub.test |
Demo@1234 |
| Host | host@eventshub.test |
Demo@1234 |
| Admin | admin@eventshub.test |
Demo@1234 |
| Command | Description |
|---|---|
pnpm dev |
Start the development server |
pnpm build |
Create a production build |
pnpm start |
Run the production build |
pnpm lint |
Lint with ESLint |
- Auth β JWT access/refresh tokens stored as HTTP-only cookies;
lib/server-fetch.tsforwards them on server-side requests, andloginUsersets them via Server Actions. - Data fetching β pages are React Server Components that call typed Server Actions in
src/services/*; lists/filters/pagination are driven entirely by URL query params. - Dashboard theming β a token-scoped design system (
.aurora/.aurora-lightinglobals.css) re-skins every dashboard page from one place; light is the default with an optional dark toggle. The public site is unaffected. - Reusable primitives β
PageHeader,StatCard,StatusBadge,GlassCard,EmptyState,SelectFilter,ConfirmActionDialog, and an enhancedManagementTable(sortable + generic row actions) power all management pages. - Docs β each dashboard feature has a write-up in
docs/; the overall plan and changelog live inplan.md.
Optimized for Vercel. Set NEXT_PUBLIC_BASE_API_URL to your deployed backend URL in the project's environment variables, then deploy from the Git repository. Any Node-compatible host that supports Next.js 16 also works.
This project is for educational and portfolio purposes.
Built with Next.js Β· Made by Repon