Skip to content

Sahilux2610/educonnect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

EduConnect - Professional Tutoring Platform

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.

πŸš€ Features

Core Functionality

  • 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

Modern UI/UX

  • 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

πŸ› οΈ Tech Stack

  • 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

πŸ“ Project Structure

β”œβ”€β”€ 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
└── ...

🎯 Key Pages

1. Dashboard (/dashboard)

  • Personalized user dashboard with real-time stats
  • Learning progress tracking
  • Recent activity feed
  • Quick action buttons

2. Subjects Page (/subjects)

  • Browse available subjects and students
  • Add new subjects to teach
  • Search and filter by category/level
  • Connect with students directly

3. Matches Page (/matches)

  • View compatible students
  • Smart matching algorithm with scoring
  • Filter by match type and subject
  • Start conversations with matches

4. Messages Page (/messages)

  • Real-time chat interface
  • Chat history and notifications
  • Online status indicators
  • Split-screen conversation view

5. Profile Page (/profile)

  • Personal information management
  • Subject preferences (teach/learn)
  • Availability and preferences
  • Account settings

6. Admin Dashboard (/admin)

  • User management and verification
  • Subject moderation
  • Platform analytics
  • System administration

πŸ”₯ Firebase Collections

Users Collection

{
  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
}

Subjects Collection

{
  id: string,
  name: string,
  description: string,
  category: string,
  difficulty: string,
  createdAt: Date,
  updatedAt: Date
}

Matches Collection

{
  id: string,
  studentId: string,
  tutorId: string,
  subjectId: string,
  subjectName: string,
  status: 'pending' | 'active' | 'completed' | 'cancelled',
  createdAt: Date,
  updatedAt: Date
}

Chats Collection

{
  id: string,
  participants: string[],
  lastMessage?: string,
  lastMessageTime: Date,
  createdAt: Date,
  updatedAt: Date
}

πŸš€ Getting Started

  1. Clone the repository

    git clone https://github.com/yourusername/educonnect.git
    cd educonnect
  2. Install dependencies

    npm install
  3. Set up Firebase

    • Create a Firebase project at Firebase Console
    • Enable Authentication (Email/Password)
    • Enable Firestore Database
    • Copy your config to .env.local
  4. Environment Variables Create a .env.local file:

    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
  5. Run the development server

    npm run dev
  6. Open your browser Navigate to http://localhost:3000

πŸ”§ Configuration

Firebase Setup

  1. Create a new Firebase project
  2. Enable Authentication (Email/Password)
  3. Enable Firestore Database
  4. Set up Firestore security rules
  5. Configure Firebase Hosting (optional)

Firestore Security Rules

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;
    }
  }
}

πŸ“± Features Overview

For Students

  • 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

For Teachers

  • Create subject listings
  • Set availability and preferences
  • Get matched with interested students
  • Manage teaching sessions
  • Build reputation through reviews

For Admins

  • Monitor platform activity
  • Verify user accounts
  • Moderate content and users
  • View platform analytics
  • Manage user accounts and restrictions

🎨 Design System

  • Colors: Dark theme with green (#10B981) accents
  • Typography: Inter font family
  • Components: Radix UI for accessibility
  • Layout: Responsive grid system
  • Icons: Lucide React icons

πŸ”’ Security Features

  • Firebase Authentication
  • Role-based access control
  • Input validation and sanitization
  • Secure real-time data synchronization
  • Admin-only dashboard access
  • Firestore security rules

πŸ“ˆ Smart Matching Algorithm

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

πŸš€ Deployment

Firebase Hosting

# 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

πŸ“ˆ Future Enhancements

  • 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

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘₯ Authors

πŸ™ Acknowledgments

  • 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. πŸŽ“βœ¨

About

Professional peer-to-peer learning platform built with Next.js 15 and Firebase. Connect students for personalized skill exchange experiences with smart matching, real-time chat, and comprehensive analytics.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors