Campus Helper is a full-stack web platform for university students to:
- Find and post part-time jobs and micro-tasks
- Buy and sell study materials (books, notes, devices)
- Join campus discussion forums
- Chat with other students in (near) real time
- Get smart help from an integrated AI assistant
It started as a university project, but the goal is to build it with production-style architecture using Next.js (App Router), TypeScript, Supabase, Tailwind CSS + shadcn/ui, and Vercel, following a Scrum workflow in Jira.
-
Authentication & Profiles
- Email / magic link (or password) login via Supabase Auth
- Student profile: name, faculty, study year, bio, avatar
- Role support:
student(default) andadmin(for moderation)
-
Dashboard
- Authenticated home view after login
- Quick access to Jobs, Materials, Forum, Chat, Profile, AI Assistant
- Snapshot of recent activity (latest jobs/posts/messages/notifications)
-
Jobs & Tasks Marketplace
- Create job/task:
- title, description, category, estimated pay, optional location
- Browse jobs in a responsive card layout
- Individual job details:
- full description, posted by, creation time
- Sorting & basic filtering (e.g. by category, newest first)
- Users can show interest/apply to jobs
- Create job/task:
-
Materials Marketplace
- Create listings for books, notes, accessories, devices
- Upload images via Supabase Storage
- Materials list view + detail view
- Contact seller via messaging
-
Forum
- Categories (e.g. General, Jobs, Materials, Campus News)
- Create posts (title + content)
- Comment on posts
- Sort by newest / recent activity
-
Messaging
- 1:1 conversations between students
- Started from job/material pages or profile
- Realtime-ish updates via Supabase Realtime
-
Reporting & Moderation
- Report jobs, materials, posts, comments, or users
- Admin reports panel:
- see item, reporter, reason, timestamp
- Admin actions:
- mark as reviewed, delete content, optionally restrict users
-
Ratings & Reviews
- Rate users after a job or transaction (e.g. when a job is completed or a material is sold)
- 1–5 star ratings with optional written review
- Display average rating and reviews on user profiles
- Ratings influence profile credibility across the app
-
In-App Notifications
- Notification system for:
- new messages
- interest/applications on your jobs
- comments on your forum posts
- other relevant events
- Notification dropdown in the UI
- “Mark as read” functionality so users can clear notifications
- Notification system for:
-
Global Search
- Single search bar that can find:
- jobs
- materials
- forum posts
- Unified search results view, grouped by content type
- Basic highlighting/structure so users understand where the match came from
- Single search bar that can find:
-
AI Assistant – “Campus Helper AI”
- Integrated AI assistant inside the app
- Capabilities:
- Suggesting jobs or materials based on user interests / queries
- Summarizing forum threads or long discussions
- Summarizing notes / text the user pastes
- Answering common campus-style questions (study tips, task ideas, etc.)
- Implemented using Next.js AI (Vercel AI SDK) with pluggable LLM providers
- Next.js 16 (App Router)
- React 18 + TypeScript 5.2
- Routes live under
app/...(e.g.app/admin/reports/page.tsx)
- Tailwind CSS
- Config in
tailwind.config.ts - Global styles in
app/globals.css
- Config in
- shadcn/ui
- Config via
components.json - Uses Radix UI primitives,
class-variance-authority, andtailwind-merge
- Config via
- Theming & UI extras
next-themesfor light/dark mode switchinglucide-reactfor iconsembla-carousel-reactfor carousels/slidersrechartsfor charts/analyticscmdkfor command palette / global actionssonnerfor toasts/notifications
react-hook-formfor controlled formszodfor schema validation@hookform/resolversto connect zod + react-hook-form
- Supabase for:
- Auth (students + admins)
- PostgreSQL database
- Storage (images & files)
- Realtime (messaging, notifications, live updates)
- Supabase client:
- Located at
lib/supabase.ts - Uses
NEXT_PUBLIC_SUPABASE_URLand anon key from.env
- Located at
- Schema & migrations:
- Managed via SQL migrations under
supabase/migrations/* - Covers:
- jobs
- materials/marketplace
- forum (posts/comments)
- messaging (conversations/messages)
- ratings & reviews
- notifications
- reports/moderation
- RLS policies and indexes
- Managed via SQL migrations under
- Next.js AI (Vercel AI SDK) for:
- Streaming chat UI
- Prompt management and response handling
- LLM provider(s):
- Configurable via environment variables (e.g. OpenAI / Groq / Gemini / etc.)
- TypeScript 5.2
- ESLint (Next.js config)
- PostCSS + autoprefixer
- npm with
package-lock.json- Scripts:
dev– start dev serverbuild– production buildstart– start production serverlint– run ESLinttypecheck– run TypeScript type-checker
- Scripts:
-
App Router entry under
src/app:(public)– landing, marketing pages(auth)– login, register(dashboard)– authenticated area:jobs/materials/forum/chat/profile/admin/(reports, moderation)ai/or AI assistant entry point
-
Layouts:
app/layout.tsx– root shell (theme, fonts, base layout)app/(dashboard)/layout.tsx– dashboard layout (navbar, sidebar, notifications, etc.)
features/jobsfeatures/materialsfeatures/forumfeatures/messagingfeatures/notificationsfeatures/ratingsfeatures/admin/features/reportsfeatures/ai
Each feature typically contains:
components/hooks/api/types/utils/
- All DB access goes through the Supabase client in
lib/supabase.ts - (Optionally) feature-level API abstractions in:
features/*/api/*.ts
app/globals.cssfor base resets and Tailwind layerscomponents/ui/*for shared UI primitives (shadcn-generated + custom)components/layout/*for app-level layout pieces (navbar, page header, notification dropdown)