A modern, full-stack peer-to-peer learning platform built with Next.js 15, Firebase, and Tailwind CSS. Connect students for personalized skill exchange experiences.
- User Authentication: Secure login/register with Firebase Auth
- Subject Management: Add subjects you can teach or want to learn
- Smart Matching: AI-powered algorithm to match students with complementary skills
- Real-time Chat: Instant messaging between matched users
- Admin Dashboard: Complete user and content management
- Profile Management: Comprehensive user profiles with skill preferences
- Dark Theme: Beautiful dark mode with green accents
- Responsive Design: Works perfectly on all devices
- Real-time Updates: Live data synchronization
- Intuitive Navigation: Clean, modern interface
- Frontend: Next.js 15, React 18, TypeScript
- Styling: Tailwind CSS, Radix UI components
- Database: Firebase Firestore
- Authentication: Firebase Auth
- Real-time: Firebase Realtime Database
- Deployment: Firebase Hosting
βββ app/ # Next.js 15 app directory
β βββ (app-layout)/ # Protected routes
β β βββ admin/ # Admin dashboard
β β βββ matches/ # User matching page
β β βββ messages/ # Real-time chat
β β βββ profile/ # User profile management
β β βββ subjects/ # Subject browsing and management
β β βββ dashboard/ # User dashboard
β βββ login/ # Authentication pages
β βββ signup/
β βββ ...
βββ components/ # Reusable UI components
β βββ ui/ # Radix UI components
β βββ ...
βββ contexts/ # React contexts (Auth)
βββ hooks/ # Custom React hooks
βββ lib/ # Utilities and configurations
βββ ...
- Personalized user dashboard with real-time stats
- Learning progress tracking
- Recent activity feed
- Quick action buttons
- Browse available subjects and students
- Add new subjects to teach
- Search and filter by category/level
- Connect with students directly
- View compatible students
- Smart matching algorithm with scoring
- Filter by match type and subject
- Start conversations with matches
- Real-time chat interface
- Chat history and notifications
- Online status indicators
- Split-screen conversation view
- Personal information management
- Subject preferences (teach/learn)
- Availability and preferences
- Account settings
- User management and verification
- Subject moderation
- Platform analytics
- System administration
{
id: string,
name: string,
email: string,
bio: string,
location: string,
rating: number,
reviewCount: number,
verified: boolean,
subjectsCanTeach: string[],
subjectsNeedHelp: string[],
profileVisibility: boolean,
responseTimeHours: number,
availability: string,
fcmToken: string,
createdAt: Date,
updatedAt: Date
}{
id: string,
name: string,
description: string,
category: string,
difficulty: string,
createdAt: Date,
updatedAt: Date
}{
id: string,
studentId: string,
tutorId: string,
subjectId: string,
subjectName: string,
status: 'pending' | 'active' | 'completed' | 'cancelled',
createdAt: Date,
updatedAt: Date
}{
id: string,
participants: string[],
lastMessage?: string,
lastMessageTime: Date,
createdAt: Date,
updatedAt: Date
}-
Clone the repository
git clone https://github.com/yourusername/educonnect.git cd educonnect -
Install dependencies
npm install
-
Set up Firebase
- Create a Firebase project at Firebase Console
- Enable Authentication (Email/Password)
- Enable Firestore Database
- Copy your config to
.env.local
-
Environment Variables Create a
.env.localfile:NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_auth_domain NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=your_measurement_id
-
Run the development server
npm run dev
-
Open your browser Navigate to
http://localhost:3000
- Create a new Firebase project
- Enable Authentication (Email/Password)
- Enable Firestore Database
- Set up Firestore security rules
- Configure Firebase Hosting (optional)
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Users: read if signed in, create/update only own doc
match /users/{userId} {
allow read: if request.auth != null;
allow create, update: if request.auth != null && request.auth.uid == userId;
allow delete: if false;
}
// Chats: read/write if authenticated
match /chats/{chatId} {
allow read, write: if request.auth != null;
match /messages/{messageId} {
allow read, write: if request.auth != null;
}
}
// Matches: read/write if authenticated
match /matches/{matchId} {
allow read, write: if request.auth != null;
}
// Subjects: public read, authenticated write
match /subjects/{subjectId} {
allow read: if true;
allow write: if request.auth != null;
}
}
}- Browse available subjects and students
- Get matched with compatible learning partners
- Chat with matches in real-time
- Rate and review learning sessions
- Manage learning preferences and progress
- Create subject listings
- Set availability and preferences
- Get matched with interested students
- Manage teaching sessions
- Build reputation through reviews
- Monitor platform activity
- Verify user accounts
- Moderate content and users
- View platform analytics
- Manage user accounts and restrictions
- Colors: Dark theme with green (#10B981) accents
- Typography: Inter font family
- Components: Radix UI for accessibility
- Layout: Responsive grid system
- Icons: Lucide React icons
- Firebase Authentication
- Role-based access control
- Input validation and sanitization
- Secure real-time data synchronization
- Admin-only dashboard access
- Firestore security rules
The platform uses an AI-powered matching system that considers:
- Mutual Teaching: Subjects users can teach each other
- Location Compatibility: Geographic proximity
- Response Time: User availability and responsiveness
- User Rating: Community feedback and reputation
- Verification Status: Account verification level
- Availability Overlap: Schedule compatibility
# Install Firebase CLI
npm install -g firebase-tools
# Login to Firebase
firebase login
# Initialize Firebase
firebase init
# Build and deploy
npm run build
firebase deploy- Video calling integration
- Payment processing
- Advanced analytics dashboard
- Mobile app (React Native)
- AI-powered matching improvements
- Multi-language support
- Calendar integration
- File sharing in chats
- 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.
- Sahil - Initial work - YourGitHub
- Firebase for backend services
- Next.js team for the amazing framework
- Radix UI for accessible components
- Tailwind CSS for styling
- Lucide for beautiful icons
EduConnect - Connecting minds, building futures through peer-to-peer learning. πβ¨