A community platform for Auroville residents to connect, share information, and engage in discussions.
The Auroville Connect dashboard showing community events, announcements, and forum posts
-
Forum System
- Create and view posts
- Comment on posts
- Vote on posts and comments
- Sort posts by hot, top, and new
- View individual post details
- Track post views
-
User Authentication
- Email-based registration
- JWT authentication
- Role-based access control
- Password reset functionality
- Email verification
-
Community Features
- Weekly events calendar
- City services directory
- Notifications system
- User profiles
-
Frontend
- React with TypeScript
- Vite for build tooling
- TailwindCSS for styling
- React Router for navigation
- Zustand for state management
-
Backend
- Node.js with Express
- PostgreSQL database
- Prisma ORM
- JWT for authentication
- Nodemailer for emails
- Node.js (version 16 or later)
- npm
- Supabase Account
- Create a new Supabase project at Supabase
- Go to Project Settings > API
- Copy your Project URL and Anon Key
- Rename
.env.exampleto.env - Fill in your Supabase credentials in the
.envfileVITE_SUPABASE_URL=your_supabase_project_url VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
This project uses Supabase for authentication. Key methods are implemented in src/lib/auth.tsx:
signUp: Register a new usersignIn: Authenticate an existing usersignOut: Log out the current user
Supabase is integrated to provide:
- Authentication
- Database operations
- Realtime subscriptions
To use Supabase in your components:
import { supabase } from './lib/supabase';
// Example: Fetching data
const fetchData = async () => {
const { data, error } = await supabase
.from('your_table')
.select('*');
}
// Example: Realtime subscription
const subscribeToChanges = () => {
supabase
.from('your_table')
.on('*', payload => {
console.log('Change received!', payload);
})
.subscribe();
}-
Install dependencies
npm install -
Start the development server
npm run dev
Ensure all environment variables are set in your deployment platform.