Skip to content

Latest commit

Β 

History

70 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Fahm - Educational Management Platform

Laravel Livewire Filament PHP TailwindCSS Flux UI

A modern, multi-tenant educational management platform that connects educators with students through interactive learning experiences. Built with Laravel, Livewire, and Filament for powerful admin capabilities.

✨ Features

πŸŽ“ Core Educational Features

  • Multi-tenant Architecture - Separate instances for different educational institutions
  • Subject & Lesson Management - Organize content by subjects with structured lessons
  • Assignment System - Create, distribute, and grade assignments
  • Video Lessons - Upload and stream educational videos with Cloudinary integration
  • Progress Tracking - Monitor student progress and lesson completion
  • Interactive Comments - Enable discussions on lessons and assignments

πŸ‘₯ User Management

  • Role-based Access Control - Students, Teachers, and Admins with appropriate permissions
  • Client-based Isolation - Each educational institution operates independently
  • Profile Management - Comprehensive user profiles with customization options
  • Authentication System - Secure login/registration with email verification

πŸ›  Administrative Features

  • Filament Admin Panel - Modern, intuitive admin interface
  • Grade & Classroom Management - Organize students into grades and classrooms
  • Resource Management - Full CRUD operations for all educational entities
  • Dual Admin System - Separate panels for super admins and client admins

🎨 User Experience

  • Responsive Design - Mobile-first approach with TailwindCSS
  • Dark Mode Support - Toggle between light and dark themes
  • Real-time Interactions - Powered by Livewire for seamless user experience
  • Video Player Integration - Custom video player for educational content
  • Modern UI Components - Flux UI design system for elegant interfaces

πŸ’³ Payment & Subscription Features

  • Subscription Management - Laravel Cashier integration with Stripe
  • Multi-tier Pricing - Flexible subscription plans for different institution sizes
  • Secure Checkout - Integrated payment processing with subscription handling
  • Billing Dashboard - Comprehensive subscription and billing management

πŸš€ Tech Stack

  • Backend: Laravel 12.20 with PHP 8.3+
  • Frontend: Livewire 3.6 + TailwindCSS 4.0.7 + Flux UI 2.2.3
  • Admin Panel: Filament 3.3.32
  • Database: MySQL/PostgreSQL/SQLite compatible
  • Payments: Laravel Cashier 15.7+ with Stripe integration
  • File Storage: Cloudinary for video and media management
  • Build Tools: Vite for asset compilation
  • Code Quality: Laravel Pint 1.24 for formatting
  • Testing: PHPUnit with comprehensive test suite

πŸ“¦ Installation

Prerequisites

  • PHP 8.3 or higher
  • Composer
  • Node.js & npm
  • MySQL, PostgreSQL, or SQLite database
  • Cloudinary account (for video uploads)
  • Stripe account (for payment processing)

Setup Instructions

  1. Clone the repository

    git clone https://github.com/your-username/fahm.git
    cd fahm
  2. Install PHP dependencies

    composer install
  3. Install Node.js dependencies

    npm install
  4. Environment configuration

    cp .env.example .env
    php artisan key:generate
  5. Configure your .env file

    APP_NAME=Fahm
    APP_URL=http://localhost:8000
    
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=fahm
    DB_USERNAME=your_username
    DB_PASSWORD=your_password
    
    # Cloudinary Configuration
    CLOUDINARY_URL=cloudinary://api_key:api_secret@cloud_name
    
    # Stripe Configuration (for payments)
    STRIPE_KEY=pk_test_your_stripe_key
    STRIPE_SECRET=sk_test_your_stripe_secret
    STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secret
  6. Database setup

    php artisan migrate
    php artisan db:seed
  7. Build assets

    npm run build
    # or for development
    npm run dev
  8. Start the development server

    php artisan serve

πŸ”§ Development

Running in Development Mode

# Start all development services concurrently
composer run dev

# This runs:
# - Laravel development server
# - Queue worker
# - Log monitoring (Pail)
# - Vite development server

Available Commands

# Code formatting
./vendor/bin/pint

# Run tests
php artisan test

# Clear application cache
php artisan optimize:clear

# Generate IDE helper files
php artisan ide-helper:generate

πŸ— Architecture

Models & Relationships

  • Client: Multi-tenant entity representing educational institutions
  • User: Students, Teachers, and Admins with role-based access (includes Stripe customer integration)
  • Subject: Academic subjects within each client
  • Lesson: Individual lessons with video content and materials
  • Assignment: Tasks assigned to students with due dates and submissions
  • Grade: Academic grade levels
  • Classroom: Physical or virtual classrooms
  • Comment: Interactive discussions on lessons and assignments
  • Profile: Extended user information and preferences

Key Design Patterns

  • Multi-tenancy: Client-based data isolation
  • Policy-based Authorization: Comprehensive permission system
  • Trait Composition: Reusable functionality across models
  • Livewire Components: Interactive frontend components
  • Filament Resources: Admin panel CRUD operations

πŸ“š API Documentation

The application provides a web-based interface with the following key routes:

Public Routes

  • / - Landing page
  • /pricing - Pricing information
  • /features - Feature overview
  • /about - About page
  • /contact - Contact information
  • /checkout/{product}/{plan} - Subscription checkout

Client Interface (Multi-tenant)

  • /{client}.domain.com/ - Client dashboard
  • /{client}.domain.com/assignments - Assignment management
  • /{client}.domain.com/lectures - Video lessons
  • /{client}.domain.com/subjects - Subject overview

Admin Panels

  • /admin - Super admin panel (Filament)
  • /{client}.domain.com/admin - Client admin panel

Payment & Subscription Routes

  • Subscription management integrated with user dashboard
  • Stripe webhook handling for payment updates
  • Billing dashboard for subscription overview

πŸ§ͺ Testing

# Run all tests
php artisan test

# Run specific test suites
php artisan test --testsuite=Feature
php artisan test --testsuite=Unit

# Run with coverage
php artisan test --coverage

πŸ“ Contributing

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

Code Style

  • Follow PSR-12 coding standards
  • Use Laravel Pint for code formatting
  • Write descriptive commit messages
  • Add tests for new features

πŸ”’ Security

  • All user inputs are validated and sanitized
  • CSRF protection enabled for all forms
  • Role-based access control implemented
  • SQL injection prevention through Eloquent ORM
  • XSS protection with proper output escaping

For security vulnerabilities, please email security@fahm.com.

πŸ“„ License

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

πŸ™ Acknowledgments

πŸ“ž Support


Built with ❀️ for educators worldwide

Back to top

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages