Find people. Play sports. Stay active.
A social sports platform for discovering local players, joining activities,
and building real community through sport.
Features · How it works · Tech stack · Project structure · Getting started · Scripts
Landing — Seven-beat scroll-snapping editorial snap deck with sport imagery, animated intro stinger, live ticker, and community section.
Auth — Email authentication covering sign up, login, forgot password, reset password, and callback handling.
Feed — Activity feed with search and filters, likes, saves, comments, and live activity state indicators.
Activities — Create, edit, and delete activities with public or private visibility controls.
Join requests — Request flow for private activities with host approval and status tracking.
Social — Friends system with incoming requests, sent requests, and accepted connections.
Calendar — View upcoming sessions and joined events in a calendar layout.
Profiles — Player profiles with sport preferences, stats, achievements, reviews, and avatar uploads.
Notifications — Alerts for friend requests and join approvals.
Settings — Light and dark theme support with profile preferences.
- Create an account and set up your profile with your preferred sports and skill level
- Browse the feed to find activities near you
- Join a public session instantly or send a request to a private one
- Post your own activity and manage who joins
- Build your network through shared sessions, friend requests, and reviews
- Next.js 15 with App Router
- React 18 and TypeScript
- Supabase for auth, database, and storage
- Tailwind CSS 4 with a hand-rolled editorial design system
- Radix UI for accessible primitives
- Lucide React for icons
app/— routes, pages, auth flows, and global stylescomponents/— shared UI, navigation, and calendar componentslib/— Supabase clients and utility helperspublic/— static assets including sport images and the PeerFit logo
npm install
npm run devOpen http://localhost:3000 to view the app. A Supabase project with the matching schema is required for auth and data features.
npm run dev # start the development server
npm run build # create a production build
npm run start # run the production build locally
npm run lint # run ESLintDeployed on Vercel at peerfit.co.uk. Every push to main triggers an automatic production deployment.