A modern, feature-rich community platform built with React, Firebase, and Redux Toolkit. This platform enables users to discover, join, and actively participate in niche communities based on their interests.
LIVE - https://classy-sunburst-d87f00.netlify.app/
PROJECT WALKTHROUGH VIDEO - https://www.youtube.com/watch?v=3kZRfj2Tn_Q
- User Authentication: Secure sign-up/sign-in with Firebase Auth
- Community Discovery: Browse and join interest-based communities
- Interactive Posts: Create rich text posts with image upload support
- Real-time Updates: Live feed updates using Firebase Realtime Database
- Voting System: Upvote/downvote posts with real-time count updates
- Reaction System: Express reactions with emojis
- Responsive Design: Mobile-first approach with breakpoints for all devices
- Rich Text Editor: Full-featured editor using Quill.js
- Threaded Comments: Nested comment system (structure ready)
- Feed Algorithms: Multiple sorting options (Latest, Hot, Best, Controversial)
- Progressive Web App (PWA) Ready: Optimized for mobile and desktop
- Real-time Animations: Smooth transitions using Framer Motion
- State Management: Redux Toolkit for predictable state updates
- Firebase Integration: Authentication, Firestore, Storage, and Realtime DB
- Modern React: Hooks, functional components, and latest patterns
- TypeScript Support: Ready for TypeScript migration
- Dark Mode: System preference detection
- Frontend: React 18 (via Vite)
- State Management: Redux Toolkit
- Backend/Database: Firebase
- Firebase Authentication
- Cloud Firestore (Database)
- Firebase Storage (Media)
- Firebase Realtime Database
- Styling: CSS with CSS Grid and Flexbox
- Animations: Framer Motion
- Rich Text Editor: React Quill
- Routing: React Router DOM
src/
โโโ components/
โ โโโ common/
โ โ โโโ Layout/
โ โ โโโ Navigation/
โ โ โโโ LoadingStates/
โ โโโ auth/
โ โ โโโ LoginForm/
โ โ โโโ SignupForm/
โ โ โโโ ProtectedRoute/
โ โโโ community/
โ โ โโโ CommunityCard/
โ โ โโโ CommunityList/
โ โ โโโ CommunityHeader/
โ โโโ posts/
โ โ โโโ PostCard/
โ โ โโโ PostEditor/
โ โ โโโ PostDetail/
โ โโโ feed/
โ โโโ FeedContainer/
โ โโโ FeedFilters/
โ โโโ FeedItem/
โโโ hooks/
โ โโโ useAuth.js
โ โโโ useCommunity.js
โ โโโ useRealtime.js
โโโ services/
โ โโโ firebase.js
โ โโโ api.js
โ โโโ recommendations.js
โโโ store/
โ โโโ authSlice.js
โ โโโ communitySlice.js
โ โโโ feedSlice.js
โโโ utils/
โโโ constants.js
โโโ helpers.js
โโโ validators.js
-
Clone the repository
git clone <repository-url> cd niche-community-platform
-
Install dependencies
npm install
-
Configure Firebase
- Create a new Firebase project at https://console.firebase.google.com
- Enable Authentication (Email/Password)
- Create a Firestore database
- Enable Firebase Storage
- Enable Realtime Database
-
Set up Environment Variables
- Copy
.env.exampleto.env
cp .env.example .env
- Fill in your Firebase configuration details in the
.envfile:
VITE_FIREBASE_API_KEY=your-api-key-here VITE_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com VITE_FIREBASE_PROJECT_ID=your-project-id VITE_FIREBASE_STORAGE_BUCKET=your-project.appspot.com VITE_FIREBASE_MESSAGING_SENDER_ID=123456789 VITE_FIREBASE_APP_ID=your-app-id VITE_FIREBASE_DATABASE_URL=https://your-project-default-rtdb.firebaseio.com/
- Copy
-
Start the development server
npm run dev
- Authentication: Sign up or sign in with email/password
- Explore Communities: Browse available communities on the dashboard
- Join Discussions: Click on a community to view and interact with posts
- Create Posts: Use the rich text editor to create engaging content
- Engage: Vote on posts, add reactions, and participate in discussions
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
The project uses environment variables to securely store Firebase configuration. All variables are prefixed with VITE_ to make them available in the Vite build process.
VITE_FIREBASE_API_KEY- Your Firebase API keyVITE_FIREBASE_AUTH_DOMAIN- Your Firebase auth domainVITE_FIREBASE_PROJECT_ID- Your Firebase project IDVITE_FIREBASE_STORAGE_BUCKET- Your Firebase storage bucketVITE_FIREBASE_MESSAGING_SENDER_ID- Your Firebase messaging sender IDVITE_FIREBASE_APP_ID- Your Firebase app IDVITE_FIREBASE_DATABASE_URL- Your Firebase Realtime Database URL
VITE_FIREBASE_MEASUREMENT_ID- Google Analytics measurement ID
- Never commit the
.envfile to version control - Use different Firebase projects for development and production
- Consider using Firebase security rules to protect your data
- The
.envfile is included in.gitignorefor security
{
uid: string,
displayName: string,
email: string,
avatar: string,
bio: string,
interests: array,
joinedCommunities: array,
achievements: array,
createdAt: timestamp
}{
name: string,
description: string,
category: string,
tags: array,
memberCount: number,
rules: array,
admins: array,
createdAt: timestamp
}{
communityId: string,
userId: string,
title: string,
content: string,
votes: number,
reactions: object,
commentCount: number,
createdAt: timestamp
}- Live updates using Firebase Realtime Database
- Multiple sorting algorithms (Latest, Hot, Best, Controversial)
- Infinite scroll with virtual scrolling (ready for implementation)
- Activity indicators showing trending posts and active discussions
- Full-featured Quill.js integration
- Image upload to Firebase Storage
- Auto-save draft functionality (ready for implementation)
- Support for formatting, lists, code blocks, and media embeds
- Real-time upvote/downvote system
- Emoji reactions with customizable options
- Vote history tracking
- Optimistic UI updates for better UX
- Mobile-first approach
- Breakpoints: Mobile (< 768px), Tablet (768-1024px), Desktop (> 1024px)
- Dark mode support based on system preferences
- Touch-friendly interfaces
The app is built with Vite and can be deployed to various platforms:
npm run build
firebase deploynpm run build
vercel --prodnpm run build
# Upload dist/ folder to Netlify- Push notifications for post replies and mentions
- Advanced search and filtering
- User profiles and customization
- Community management tools
- Achievement system and leaderboards
- Live polls and Q&A sessions
- Mobile app using React Native
- AI-powered content recommendations
- Video/audio post support
- Community analytics dashboard
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- React and the React ecosystem
- Firebase for backend services
- Framer Motion for animations
- Quill.js for rich text editing
- The open-source community
Built with โค๏ธ for niche communities worldwide.