People first. Conversation at the center.
Agoré is a social platform built around people, content, and communication. Designed for a global audience, Agoré brings meaningful connections, public conversations, and private communication into one connected space.
Development status: Agoré V1 is under active development. The V1 authentication scope is email and password plus Google OAuth. Sign in with Apple is deferred and is not part of V1. Features, integrations, and configuration may remain incomplete until verified.
Agoré is being built around the following capabilities:
- Profiles and identity — personal profiles and tools for self-expression.
- Social graph — follow people, manage connections, and control unwanted interactions.
- Posts and engagement — share content and participate through replies, reactions, and reposts.
- Messaging — private conversations and member-based group chats.
- Discovery — explore people and public content.
- Notifications — in-app activity and web-push notification capabilities.
- Trust, safety, and control — reporting workflows, privacy settings, and account-level controls.
These describe the product scope and direction. They do not guarantee that every capability is complete or production-ready.
- People first: Keep relationships and conversation central to the experience.
- Global by design: Build for a worldwide audience, not a single school, city, or region.
- User agency: Give people meaningful control over their social experience.
- Safer participation: Treat privacy, moderation, and abuse prevention as core product requirements.
- Room to grow: Maintain a modular foundation without introducing unnecessary architectural complexity.
The application currently uses:
- Next.js App Router
- React and TypeScript
- Tailwind CSS
- Supabase for authentication, database access, and related backend services
web-pushfor web-push notification integration
- Node.js 20.9 or later
- npm
- A Supabase project configured for Agoré
Clone the repository and install its dependencies:
git clone https://github.com/JJTGG/Agore.git
cd Agore
npm installCreate a local environment file:
cp .env.example .env.localPopulate .env.local with the values for your development environment.
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_SUPABASE_URL |
Supabase project URL. |
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY |
Supabase publishable key. |
SUPABASE_SERVICE_ROLE_KEY |
Privileged server-side key for trusted operations. Never expose it to browser code. |
VAPID_SUBJECT |
Contact URI or application URL identifying the web-push sender. |
VAPID_PUBLIC_KEY |
Public VAPID key for web push. |
VAPID_PRIVATE_KEY |
Private VAPID key for web push. Keep it secret. |
To generate a VAPID key pair, run:
npx web-push generate-vapid-keysConfigure the VAPID values when working with web-push functionality.
The canonical location for new SQL migrations is supabase/migrations/.
One historical support-workflow migration remains under app/supabase/migrations/. The repository and database migration histories must be reconciled before that file is moved, duplicated, or applied. Do not assume the files in Git prove that the live database has the corresponding changes.
Follow the database and migration guide before making schema or policy changes.
Use a separate development Supabase project. Do not blindly apply migrations to production, reset a remote production database, or alter migration history just to clear a discrepancy.
npm run devOpen http://localhost:3000.
npm run typecheck
npm run buildRun these after configuring the required environment variables. A successful type check or build does not, by itself, verify authentication, database permissions, uploads, messaging, or push notifications end to end.
- Never commit
.env.local, service-role keys, VAPID private keys, or other secrets. - Keep privileged Supabase operations on the server.
- Never expose
SUPABASE_SERVICE_ROLE_KEYthrough aNEXT_PUBLIC_*variable. - Keep authentication, authorisation, account-status checks, and database access controls in place as registration becomes public.
- Test database and configuration changes in development before applying them to production.
- Treat this as pre-release software; do not assume that all features or safeguards are complete.
Agoré is proprietary software. No permission to copy, modify, redistribute, host, or commercially deploy its source code is granted by this repository without prior written permission, except where applicable law provides otherwise.
The Agoré name, logo, wordmark, icons, and other brand assets are not licensed for reuse through this repository. Third-party dependencies remain subject to their respective licenses.
See LICENSE.