All core school management features are self-contained with minimal optional dependencies.
Public-facing Website, React Admin Panel, and Laravel API — all included. Optional third-party integrations include Firebase (chat) and Payment Gateways (Razorpay, Flutterwave, Paystack).
Welcome to ClassKnot, a complete end-to-end school management platform built with modern technologies. Its purpose is to digitize and centralize all school operations — student records, fees, attendance, grades, staff management, admissions, and public website content — into a single web application. Designed for schools, colleges, and educational organizations looking to modernize their operations and improve efficiency.
This platform is distributed as a white-label solution, allowing complete customization of branding, configurations, and content to match your school's identity and scale your educational operations efficiently.
ClassKnot is a self-contained solution with minimal dependencies:
Basic understanding of React-based website development, Laravel backend setup, and API integration is recommended before installation and customization.
ClassKnot is a mostly standalone school management platform with optional third-party integrations for:
Everything else is built into the product.
Built-in role-based access control. No external permission services or third-party authorization packages needed.
Database-driven queue for background jobs. No external queue services or third-party job processors needed.
All data — student records, fees, attendance, grades, staff information, documents, and media — is stored in MySQL database. No external cloud storage or third-party databases required.
Zero external API dependencies. No map services, SMS services, or push notification services required for core functionality.
| Component | Type | Description |
|---|---|---|
| Authentication | Built-in | Custom Laravel authentication system. |
| Role Management | Built-in | Native role-based access control with 4 roles. |
| Queue System | Built-in | Database queue for background job processing. |
| Data Storage | Built-in | MySQL database for all data including documents and media. |
| Firebase (Optional) | Optional | Real-time chat between parents, teachers, and students. Only required if using chat feature. |
| Payment Gateways (Optional) | Optional | Razorpay, Flutterwave, Paystack for salary payments. Only required for online salary processing. |
FIREBASE_CREDENTIALS,
FIREBASE_DATABASE_URL
Minimal Dependencies: ClassKnot has only optional third-party integrations:
All core functionality works without any external services.
Database Configuration: MySQL database is included with the product, but requires configuration on your server. All data — including student records, fees, attendance, grades, staff information, documents, images, and media — is stored in the MySQL database.
Hosting: Web hosting, domain registration, and SSL certificates are the responsibility of the buyer and are not included with the purchase.
ClassKnot uses Firebase Realtime Database to power the real-time chat system between parents, teachers, and students. This allows instant messaging without page refreshes.
Real-time messaging between parents and teachers, paired by student enrollment.
View contacts, manage conversations, send messages, and mark messages as read.
Instant message delivery with read receipts and real-time updates.
Add the following to your .env file:
# Firebase Chat Configuration (Optional - only for chat feature)
FIREBASE_CREDENTIALS=/path/to/your-firebase-service-account.json
FIREBASE_DATABASE_URL=https://your-project-id.firebaseio.com
storage/app/firebase/)
FIREBASE_CREDENTIALS path in .env to point to this file
# Example path
FIREBASE_CREDENTIALS=storage/app/firebase/classknot-chat-firebase-adminsdk.json
php artisan tinker
In Tinker, test the connection:
$firebase = app('firebase.database');
$firebase->getReference('test')->set(['message' => 'Hello ClassKnot!']);
Set these rules in Firebase Console → Realtime Database → Rules:
{
"rules": {
"chats": {
"$conversationId": {
".read": "auth != null",
".write": "auth != null",
"messages": {
"$messageId": {
".validate": "newData.hasChildren(['senderId', 'senderType', 'message', 'timestamp'])",
"senderId": { ".validate": "newData.isString()" },
"senderType": { ".validate": "newData.isString() && newData.val().matches(/^(parent|teacher|student|admin)$/)" },
"message": { ".validate": "newData.isString() && newData.val().length < 1000" },
"timestamp": { ".validate": "newData.isNumber()" },
"read": { ".validate": "newData.isBoolean()" }
}
}
}
},
"users": {
"$userId": {
".read": "auth != null",
".write": "auth != null"
}
}
}
}
ClassKnot supports three payment gateways for online salary payments: Razorpay, Flutterwave, and Paystack. These are optional and only required if you want to process online salary payments.
Add these to your .env file:
# Razorpay Configuration
RAZORPAY_KEY_ID=your_razorpay_key_id
RAZORPAY_KEY_SECRET=your_razorpay_key_secret
RAZORPAY_WEBHOOK_SECRET=your_webhook_secret
https://yourdomain.com/api/webhook/razorpay.env4111 1111 1111 1111success@razorpayAdd these to your .env file:
# Flutterwave Configuration
FLUTTERWAVE_PUBLIC_KEY=your_public_key
FLUTTERWAVE_SECRET_KEY=your_secret_key
FLUTTERWAVE_ENCRYPTION_KEY=your_encryption_key
https://yourdomain.com/api/webhook/flutterwave4111 1111 1111 1111Add these to your .env file:
# Paystack Configuration
PAYSTACK_PUBLIC_KEY=your_public_key
PAYSTACK_SECRET_KEY=your_secret_key
https://yourdomain.com/api/webhook/paystack4111 1111 1111 1111
# ------------------------------------------------------------------
# Payment Gateway Configuration (Optional)
# ------------------------------------------------------------------
# Razorpay
RAZORPAY_KEY_ID=your_razorpay_key_id
RAZORPAY_KEY_SECRET=your_razorpay_key_secret
RAZORPAY_WEBHOOK_SECRET=your_webhook_secret
# Flutterwave
FLUTTERWAVE_PUBLIC_KEY=your_public_key
FLUTTERWAVE_SECRET_KEY=your_secret_key
FLUTTERWAVE_ENCRYPTION_KEY=your_encryption_key
# Paystack
PAYSTACK_PUBLIC_KEY=your_public_key
PAYSTACK_SECRET_KEY=your_secret_key
.env.envEnsure the following software versions are installed before proceeding:
storage/,
bootstrap/cache/
--legacy-peer-deps)| Technology | Version | Check Command |
|---|---|---|
| PHP | 8.3.32 | php -v |
| Laravel | 13.22.0 | php artisan --version
|
| React | 19.2.8 | npm list react |
| Inertia.js | 2.0 | npm list @inertiajs/react
|
| Tailwind CSS | 3.2.1 | npm list tailwindcss
|
| Vite | 8.0 | npm list vite |
| Node.js | 18+ / 20+ LTS | node -v |
| npm | 9+ | npm -v |
| MySQL | 9.7 (Homebrew) | mysql --version |
| Composer | 2.x | composer --version
|
| Spatie Permissions | 6.0 | composer show spatie/laravel-permission
|
| Laravel Breeze | 2.4 | composer show laravel/breeze
|
| Laravel Sanctum | 4.0 | composer show laravel/sanctum
|
| Headless UI | 2.0 | npm list @headlessui/react
|
| DomPDF | 3.1 | composer show dompdf/dompdf
|
| Ziggy | 2.0 | composer show tightenco/ziggy
|
BCMath
Ctype
Fileinfo
JSON
Mbstring
OpenSSL
PDO
Tokenizer
XML
php -m
If any required extension is missing, uncomment or install it in your
php.ini file.
http://localhost in your browserNote: It's necessary to have a basic knowledge in both server side and frontend development.
Run these commands in your terminal/command prompt to confirm all required tools are properly installed:
# Check PHP version
php --version # Should show PHP 8.3+
# Check Composer version
composer --version # Should show 2.x or higher
# Check Node.js version
node --version # Should show v18+ or v20+ LTS
# Check npm version
npm --version # Should show 9+ or higher
# Check MySQL version
mysql --version # Should show 5.7+ / 8.0+
# Check PHP extensions
php -m # Verify required extensions: BCMath, Ctype, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML
If all commands show the correct versions (or higher) and all PHP extensions are listed, your environment is ready for installation.
If any command returns "not found" or shows an older version, please install or update the corresponding software before proceeding.
ClassKnot is built using modern and scalable technologies to power the Unified Application (both Website and Admin Panel), and API backend. All core components are self-contained with optional third-party integrations.
Before installing and running the application, ensure the following technologies and tools are installed with the recommended versions.
| Tool/Software | Minimum Version | Recommended Version |
|---|---|---|
| PHP | 8.3 | 8.3+ |
| Laravel | 13.8 | 13.x |
| React | 19.2.8 | 19.x |
| Node.js | 18+ | 20+ LTS |
| MySQL | 5.7+ | 8.0+ |
| Composer | 2.x | 2.x |
| npm | 9+ | 10+ |
| Vite | 8.0 | 8.x |
| Tailwind CSS | 3.0 | 3.2.1 |
| Git | 2.x | Latest |
| Category | Technology | Version | Purpose |
|---|---|---|---|
| Frontend (Website) | |||
| Framework | React | 19.2.8 | UI Library for building interactive interfaces |
| Build Tool | Vite | 8.0 | Build tool & development server |
| CSS Framework | Tailwind CSS | 3.2.1 | Utility-first CSS framework |
| JavaScript | ES2020+ | — | Modern JavaScript features |
| Backend (API) | |||
| Language | PHP | 8.3.32 | Server-Side Programming Language |
| Framework | Laravel | 13.22.0 | PHP Framework for API & Backend |
| Authentication | Laravel Breeze | 2.4 | Authentication scaffolding |
| API Authentication | Laravel Sanctum | 4.0 | API token authentication |
| Role & Permission | Spatie Laravel Permission | 6.0 | User Roles & Permissions Management |
| Database | MySQL | 8.0+ | Relational Database for all data storage |
| Queue Driver | Database | — | Background job processing |
| Dependency Manager | Composer | 2.x | PHP Package Management |
| Admin Panel | |||
| Framework | React | 19.2.8 | UI Library for admin dashboard |
| Build Tool | Vite | 8.0 | Build tool & development server |
| CSS Framework | Tailwind CSS | 3.2.1 | Utility-first CSS framework |
| UI Components | Headless UI | 2.0 | Accessible UI components |
| Icons | Lucide React | 1.26.0 | Icon library |
| Carousel | Swiper | 14.0.6 | Touch slider/carousel |
| PDF Generation | DomPDF | 3.1 | PDF generation for reports & receipts |
| JavaScript Integration | Ziggy | 2.0 | Laravel route generation for JavaScript |
| Inertia.js | Inertia.js | 2.0 | Full-stack single-page application framework |
BCMath
Ctype
Fileinfo
JSON
Mbstring
OpenSSL
PDO
Tokenizer
XML
Check installed extensions: Run php -m in your terminal.
If any extension is missing, uncomment or install it in your php.ini file.
storage/ and
bootstrap/cache/
ClassKnot has minimal dependencies with optional third-party integrations. The core platform uses open-source packages included with Laravel / React ecosystem:
No map services, SMS services, or other external APIs are required for core functionality.
Install all required SDKs, development tools, and dependencies using the recommended versions before beginning the installation process. Version mismatches may result in build or runtime issues.
Pro Tip: Use Node Version Manager (NVM) for managing Node.js versions.
ClassKnot is a Unified Application where both the Public Website and Admin Panel share the same codebase:
Public Website + Admin Panel (same codebase)
Backend API for the Unified Application
Unified Application: Both the Public Website and Admin Panel use React 19.2.8 with Inertia.js 2.0, Tailwind CSS 3.2.1, Vite 8.0
Backend API: Laravel 13.x with PHP 8.3+
The Laravel backend uses the following PHP dependencies:
{
"$schema": "https://getcomposer.org/schema.json",
"name": "laravel/laravel",
"type": "project",
"description": "The skeleton application for the Laravel framework.",
"keywords": ["laravel", "framework"],
"license": "MIT",
"require": {
"php": "^8.3",
"barryvdh/laravel-dompdf": "^3.1",
"inertiajs/inertia-laravel": "^2.0",
"kreait/firebase-php": "^8.4",
"laravel/framework": "^13.8",
"laravel/sanctum": "^4.0",
"laravel/tinker": "^3.0",
"spatie/laravel-permission": "^6.0",
"tightenco/ziggy": "^2.0"
},
"require-dev": {
"fakerphp/faker": "^1.23",
"laravel/breeze": "^2.4",
"laravel/pail": "^1.2.5",
"laravel/pao": "^1.0.6",
"laravel/pint": "^1.27",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpunit/phpunit": "^12.5.12"
},
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"scripts": {
"setup": [
"composer install",
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\"",
"@php artisan key:generate",
"@php artisan migrate --force",
"npm install --ignore-scripts",
"npm run build"
],
"dev": [
"Composer\\Config::disableProcessTimeout",
"npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1 --timeout=0\" \"php artisan pail --timeout=0\" \"npm run dev\" --names=server,queue,logs,vite --kill-others"
],
"test": [
"@php artisan config:clear --ansi @no_additional_args",
"@php artisan test"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-update-cmd": [
"@php artisan vendor:publish --tag=laravel-assets --ansi --force"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi",
"@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"",
"@php artisan migrate --graceful --ansi"
],
"pre-package-uninstall": [
"Illuminate\\Foundation\\ComposerScripts::prePackageUninstall"
]
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true,
"allow-plugins": {
"pestphp/pest-plugin": true,
"php-http/discovery": true
}
},
"minimum-stability": "stable",
"prefer-stable": true
}
| Package | Version | Purpose |
|---|---|---|
| Production Dependencies | ||
| php | ^8.3 | Server-side scripting language |
| laravel/framework | ^13.8 | Laravel PHP Framework |
| inertiajs/inertia-laravel | ^2.0 | Inertia.js server-side adapter |
| laravel/sanctum | ^4.0 | API authentication |
| laravel/tinker | ^3.0 | Artisan REPL & interactive shell |
| spatie/laravel-permission | ^6.0 | User roles & permissions management |
| barryvdh/laravel-dompdf | ^3.1 | PDF generation for reports & receipts |
| tightenco/ziggy | ^2.0 | Laravel route generation for JavaScript |
| Development Dependencies | ||
| laravel/breeze | ^2.4 | Authentication scaffolding |
| fakerphp/faker | ^1.23 | Fake data generation for seeding |
| laravel/pail | ^1.2.5 | Log viewer |
| laravel/pao | ^1.0.6 | Package auto-discovery optimizer |
| laravel/pint | ^1.27 | PHP code style fixer |
| mockery/mockery | ^1.6 | Mocking framework for tests |
| nunomaduro/collision | ^8.6 | Error handling for console |
| phpunit/phpunit | ^12.5.12 | PHP testing framework |
Both Website and Admin Panel share the same frontend dependencies:
{
"$schema": "https://www.schemastore.org/package.json",
"private": true,
"type": "module",
"scripts": {
"build": "vite build",
"dev": "vite"
},
"devDependencies": {
"@headlessui/react": "^2.0.0",
"@inertiajs/react": "^2.0.0",
"@tailwindcss/forms": "^0.5.3",
"@vitejs/plugin-react": "^5.0.0",
"autoprefixer": "^10.4.12",
"concurrently": "^9.0.1",
"laravel-vite-plugin": "^3.1",
"postcss": "^8.4.31",
"react": "^19.2.8",
"react-dom": "^19.2.8",
"tailwindcss": "^3.2.1",
"vite": "^8.0.0"
},
"dependencies": {
"axios": "^1.18.1"
}
}
| Package | Version | Purpose |
|---|---|---|
| Core Dependencies | ||
| react | ^19.2.8 | UI Library for building interactive interfaces |
| react-dom | ^19.2.8 | React DOM rendering |
| @inertiajs/react | ^2.0.0 | Inertia.js React adapter for server-side routing |
| axios | ^1.18.1 | HTTP client for API requests |
| Development Dependencies | ||
| vite | ^8.0.0 | Build tool & development server |
| @vitejs/plugin-react | ^5.0.0 | Vite plugin for React |
| laravel-vite-plugin | ^3.1 | Laravel integration for Vite |
| tailwindcss | ^3.2.1 | Utility-first CSS framework |
| @tailwindcss/forms | ^0.5.3 | Tailwind CSS plugin for form styling |
| @headlessui/react | ^2.0.0 | Accessible UI components |
| autoprefixer | ^10.4.12 | CSS vendor prefixing |
| postcss | ^8.4.31 | CSS processing tool |
| concurrently | ^9.0.1 | Run multiple commands concurrently |
Note: All core dependencies are open-source packages included with Laravel and React ecosystems. Optional third-party integrations include Firebase (chat) and Payment Gateways (Razorpay, Flutterwave, Paystack).
This guide explains how each public website page works, what data it displays, and where that data comes from in the admin panel.
Purpose: Landing page that introduces the school and encourages visitors to apply.
banners table (Academics → Banners)
facilities table (Academics → Facilities)
faqs table (Support → FAQs)Purpose: Tell the school's story — mission, features, history.
about_sections table (type=feature) →
Support → About Pageabout_sections table (type=history) → Support
→ About Pageabout_sections table (type=content) → Support
→ About PagePurpose: Online application form for new students.
AdmissionController →
admissions table
AdmissionService → students + parents +
enrollments tablesacademic_years, schools,
classes, sections tables
Purpose: Display the school's teaching staff.
employees table (status=active, with
designations)employees.photo field (or random avatar
fallback)Purpose: Showcase school photos and videos.
gallery_items table (status=active)Purpose: Showcase campus infrastructure and amenities.
facilities table (status=active) →
Academics → FacilitiesPurpose: Answer common questions.
faqs table (status=active) → Support → FAQsfaq_categories table → Support → FAQscontact_settings table → Support → Contact
DetailsPurpose: Get in touch form and display contact info.
contact_settings table → Support →
Contact DetailsEnquiryController →
enquiries table (admin views in Support → Enquiries)
Purpose: Display the school's privacy policy.
privacy_policies table
(status=active) → Support → PrivacyPurpose: Admin authentication page.
| Page | Purpose | Data Source | Admin Menu Path |
|---|---|---|---|
| Home | Landing page | Banners, Facilities, FAQs, Stats | Academics → Banners/Facilities Support → FAQs |
| About | School story | About Sections (Features, History, Content) | Support → About Page |
| Admissions | Online application | Students, Classes, Sections, Academic Years | Admission Organisation → Classes/Sections/Acad. Years |
| Faculty | Teaching staff | Employees (active) | Employees → List |
| Gallery | Photos & videos | Gallery Items | Academics → Gallery |
| Facilities | Campus amenities | Facilities (active) | Academics → Facilities |
| FAQ | Common questions | FAQ Categories + FAQs, Contact Settings | Support → FAQs / Contact Details |
| Contact | Contact form & info | Contact Details, Enquiries | Support → Contact Details / Enquiries |
| Privacy | Privacy policy | Privacy Policies | Support → Privacy |
All public website content is managed from the admin panel. When you add, edit, or delete content in the admin, it automatically reflects on the frontend. No code changes required.
The Admin Panel provides complete control over the ClassKnot school management platform. Below is the detailed menu structure and functionality for managing the platform.
| Menu Section | Sub-Menu Items | Functionality |
|---|---|---|
| Dashboard | ||
| Dashboard | - | View school overview including total students, teachers, employees, fee collections, attendance summary, and key metrics |
| Organisation | ||
| Schools | - | Manage school profiles with name, code, branch, status, location, address, coordinates, contact details, logo, and established year |
| Classes | - | Create and manage classes with school association, name, capacity, and status |
| Sections | - | Manage sections under classes with school and class association, section name, and status |
| Designations | - | Create and manage employee designations with school association, designation name, and status |
| Academic Years | - | Manage academic years with name, code, start/end date, status, and ability to set current academic year |
| Admission | ||
| Student | List, Enrollment | Manage student list with profiles, enrollments, class/section assignment, and student status tracking |
| Fees | ||
| Fee Heads | - | Create fee heads with name, code, category, frequency, and status |
| Structures | - | Define fee structures for academic years with school and class association |
| Assignments | - | Assign fees to enrollments with fee head, amount, discount, and payment frequency |
| Payments | - | Track student payments with date, method, remarks, and payment status |
| Salary Payments | - | Auto-generate salary payments with payslip PDF. Supports Razorpay, Flutterwave, and Paystack (optional) |
| Teacher | ||
| Subjects | - | Create and manage subjects with school, category, code, and name |
| Allocations | - | Allocate subjects to teachers with academic year, employee, subject, class, section, and class teacher toggle |
| Timetables | - | Create timetables with academic year, day, period, subject, teacher, class, section, start/end time, and effective dates |
| Lesson Plans | - | Create lesson plans with academic year, teacher, class, section, subject, date, period, title, chapter, topic, teaching method, progress, teaching materials, status, and remarks |
| Employees | ||
| List | - | Manage employee list with profile photo, name, academic year, school, designation, from/to date, and status |
| Attendance | - | Track employee attendance with date, status, check-in, check-out, and remarks |
| Leave | - | Manage employee leave requests with leave type, from/to date, reason, status, and approval |
| Parents | ||
| Parents | - | Manage parent profiles with father/mother name, mobile, email, username, password, address, and status |
| Users | ||
| Users | - | Manage system users with user, email, role, and joined date. Currently supports Super Admin with role-based permissions coming in future updates |
| Roles | ||
| Roles & Permissions | - | Configure roles and permissions. Currently Super Admin configured with all permissions. Additional roles (Admin, Teacher, Accountant, Parent, Student) coming in future updates |
| Academics | ||
| Banners | - | Manage hero slider banners with quotes, background image, and sort order for homepage display |
| Gallery | - | Manage image gallery with image, title, category, and sort order for public display |
| Facilities | - | Create and manage school facilities with title, description, image, and sort order |
| Code Masters | ||
| Code Masters | - | Manage lookup values across 14 categories. Create slug categories with code values and enable/disable toggle. Currently 57 values configured |
| Support | ||
| Subscribers | - | View newsletter subscribers with email, status, subscribed date, and actions |
| FAQs | - | Manage frequently asked questions with category, featured toggle, question, and answer |
| Privacy | - | Manage privacy policy content with title, content, and sort order |
| Contact Details | - | Manage website contact information including email, phone, location, office address, social links (Facebook, Twitter, Instagram, LinkedIn), and Google Maps embed |
| Enquiries | - | View and manage contact form submissions with first name, last name, email, phone, subject, message, status, and actions |
| Chat | - | Real-time messaging between parents, teachers, and students. Powered by Firebase Realtime Database (optional) |
http://yourdomain.com/admin
Default Credentials:
admin@gmail.com / admin
This application requires PHP 8.3. Please ensure you have the correct version installed before proceeding.
php --version # Should show PHP 8.3.x
The complete project structure for the ClassKnot school management platform, including both backend (Laravel) and frontend (React + Inertia) components.
classknot/
├── AGENTS.md
├── README.md
├── artisan
├── composer.json
├── composer.lock
├── jsconfig.json
├── package.json
├── package-lock.json
├── phpunit.xml
├── postcss.config.js
├── tailwind.config.js
├── vite.config.js
├── .editorconfig
├── .env
├── .env.example
├── .gitattributes
├── .gitignore
├── .npmrc
│
├── app/
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── Admin/ ← 40+ Admin Controllers
│ │ │ │ ├── AcademicYearController.php
│ │ │ │ ├── AdmissionController.php
│ │ │ │ ├── BannerController.php
│ │ │ │ ├── CodeMasterController.php
│ │ │ │ ├── CodeSlugController.php
│ │ │ │ ├── ContactSettingController.php
│ │ │ │ ├── DesignationController.php
│ │ │ │ ├── EmployeeAttendanceController.php
│ │ │ │ ├── EmployeeController.php
│ │ │ │ ├── EmployeeLeaveRequestController.php
│ │ │ │ ├── EnquiryController.php
│ │ │ │ ├── EnrollmentController.php
│ │ │ │ ├── EventController.php
│ │ │ │ ├── FacilityController.php
│ │ │ │ ├── FaqCategoryController.php
│ │ │ │ ├── FaqController.php
│ │ │ │ ├── FeeHeadController.php
│ │ │ │ ├── FeePaymentController.php
│ │ │ │ ├── FeeStructureController.php
│ │ │ │ ├── GalleryController.php
│ │ │ │ ├── LessonPlanController.php
│ │ │ │ ├── ParentGuardianController.php
│ │ │ │ ├── PrivacyPolicyController.php
│ │ │ │ ├── RoleController.php
│ │ │ │ ├── SchoolController.php
│ │ │ │ ├── SectionController.php
│ │ │ │ ├── StudentController.php
│ │ │ │ ├── StudentFeeAssignmentController.php
│ │ │ │ ├── StudentHistoryController.php
│ │ │ │ ├── SubscriberController.php
│ │ │ │ ├── TeacherSubjectAllocationController.php
│ │ │ │ ├── TimetableController.php
│ │ │ │ └── UserController.php
│ │ ├── Auth/ ← 9 Auth Controllers
│ │ │ ├── AuthenticatedSessionController.php
│ │ │ ├── ConfirmablePasswordController.php
│ │ │ ├── EmailVerificationNotificationController.php
│ │ │ ├── EmailVerificationPromptController.php
│ │ │ ├── NewPasswordController.php
│ │ │ ├── PasswordController.php
│ │ │ ├── PasswordResetLinkController.php
│ │ │ ├── RegisteredUserController.php
│ │ │ └── VerifyEmailController.php
│ │ ├── Public/ ← 4 Public Controllers
│ │ │ ├── AdmissionController.php
│ │ │ ├── ApplicationDownloadController.php
│ │ │ ├── EnquiryController.php
│ │ │ └── SubscribeController.php
│ │ ├── School/ ← 7 School Controllers
│ │ │ ├── AttendanceController.php
│ │ │ ├── ClassController.php
│ │ │ ├── CommunicationController.php
│ │ │ ├── DashboardController.php
│ │ │ ├── GradeController.php
│ │ │ ├── ScheduleController.php
│ │ │ ├── SubjectController.php
│ │ │ └── TeacherController.php
│ │ ├── Controller.php
│ │ └── ProfileController.php
│ │ └── Middleware/
│ │ │ ├── Admin.php
│ │ │ ├── CheckPermission.php
│ │ │ └── HandleInertiaRequests.php
│ │ └── Requests/
│ │ ├── Auth/
│ │ │ └── LoginRequest.php
│ │ ├── Admin/
│ │ └── ProfileUpdateRequest.php
│ ├── Models/ ← 47 Eloquent Models
│ │ ├── AcademicYear.php
│ │ ├── Admission.php
│ │ ├── Attendance.php
│ │ ├── Banner.php
│ │ ├── Classe.php
│ │ ├── CodeMaster.php
│ │ ├── CodeSlug.php
│ │ ├── Communication.php
│ │ ├── ContactSetting.php
│ │ ├── Designation.php
│ │ ├── Employee.php
│ │ ├── EmployeeAttendance.php
│ │ ├── EmployeeLeaveRequest.php
│ │ ├── Enquiry.php
│ │ ├── Enrollment.php
│ │ ├── Event.php
│ │ ├── Facility.php
│ │ ├── Faq.php
│ │ ├── FaqCategory.php
│ │ ├── FeeHead.php
│ │ ├── FeePayment.php
│ │ ├── FeePaymentDetail.php
│ │ ├── FeeStructure.php
│ │ ├── FeeStructureItem.php
│ │ ├── Gallery.php
│ │ ├── Grade.php
│ │ ├── HomeFeature.php ← Added by recent commit
│ │ ├── LessonPlan.php
│ │ ├── LessonPlanAttachment.php
│ │ ├── LessonPlanProgress.php
│ │ ├── AcademicSection.php ← Added by recent commit
│ │ ├── Notification.php
│ │ ├── ParentGuardian.php
│ │ ├── PrivacyPolicy.php
│ │ ├── PrivacyPolicyVersion.php
│ │ ├── Schedule.php
│ │ ├── School.php
│ │ ├── Section.php
│ │ ├── Student.php
│ │ ├── StudentFeeAssignment.php
│ │ ├── StudentFeeInstallment.php
│ │ ├── StudentHistory.php
│ │ ├── Subject.php
│ │ ├── Subscriber.php
│ │ ├── Teacher.php
│ │ ├── TeacherSubjectAllocation.php
│ │ ├── Timetable.php
│ │ └── User.php
│ ├── Policies/ (empty)
│ └── Providers/
│ └── AppServiceProvider.php
│
├── bootstrap/
│ ├── app.php
│ └── providers.php
│
├── config/ ← 10 Configuration Files
│ ├── app.php
│ ├── auth.php
│ ├── cache.php
│ ├── database.php
│ ├── filesystems.php
│ ├── logging.php
│ ├── mail.php
│ ├── queue.php
│ ├── session.php
│ └── services.php
│
├── database/
│ ├── .gitignore
│ ├── database.sqlite
│ ├── factories/ ← 10 Factories
│ │ ├── AttendanceFactory.php
│ │ ├── ClasseFactory.php
│ │ ├── CommunicationFactory.php
│ │ ├── FeeFactory.php
│ │ ├── GradeFactory.php
│ │ ├── ScheduleFactory.php
│ │ ├── StudentFactory.php
│ │ ├── SubjectFactory.php
│ │ ├── TeacherFactory.php
│ │ └── UserFactory.php
│ ├── migrations/
│ │ └── 2026_08_14_110000_create_academic_sections_table.php ← Added recent
│ ├── seeders/
│ │ ├── AcademicSectionSeeder.php ← Added recent
│ │ ├── HomeFeatureSeeder.php ← Added recent
│ │ ├── PrivacyPolicySeeder.php
│ │ └── DatabaseSeeder.php
│
├── lang/
│
├── public/
│ ├── .htaccess
│ ├── index.php
│ ├── robots.txt
│ ├── build/ ← Vite Build Output
│ │ └── manifest.json
│ ├── css/
│ ├── images/
│ │ ├── logo.webp
│ │ └── logo_icon.webp
│ ├── js/
│ └── storage -> storage/app/public (symlink)
│
├── resources/
│ ├── css/
│ │ └── app.css
│ └── js/
│ ├── app.jsx ← Inertia Entry Point
│ ├── bootstrap.js
│ ├── Components/ ← 14 Reusable Components
│ │ ├── ApplicationLogo.jsx
│ │ ├── Checkbox.jsx
│ │ ├── DataTable.jsx
│ │ ├── Dropdown.jsx
│ │ ├── HeroSlider.jsx
│ │ ├── InputError.jsx
│ │ ├── InputLabel.jsx
│ │ ├── Modal.jsx
│ │ ├── NavLink.jsx
│ │ ├── PrimaryButton.jsx
│ │ ├── ResponsiveNavLink.jsx
│ │ ├── SecondaryButton.jsx
│ │ └── TextInput.jsx
│ ├── hooks/
│ │ └── useScrollReveal.jsx
│ ├── Layouts/ ← 4 Layout Components
│ │ ├── AdminLayout.jsx
│ │ ├── AuthenticatedLayout.jsx
│ │ ├── GuestLayout.jsx
│ │ └── UserLayout.jsx
│ └── Pages/
│ ├── Dashboard.jsx
│ ├── Welcome.jsx
│ ├── Admin/ ← 40+ Admin Pages
│ │ ├── Dashboard.jsx
│ │ ├── AcademicYears/Index.jsx
│ │ ├── AcademicSections/Index.jsx ← Added recent
│ │ ├── Admissions/Index.jsx
│ │ ├── AppSettings/Index.jsx
│ │ ├── Attendance/Index.jsx
│ │ ├── Banners/Index.jsx
│ │ ├── Classes/Index.jsx
│ │ ├── CodeMasters/Index.jsx
│ │ ├── CodeSlugs/{Index, Masters}.jsx
│ │ ├── Communications/Index.jsx
│ │ ├── ContactSettings/Index.jsx
│ │ ├── Designations/Index.jsx
│ │ ├── EmployeeAttendances/Index.jsx
│ │ ├── EmployeeLeaveRequests/Index.jsx
│ │ ├── Employees/Index.jsx
│ │ ├── Enquiries/Index.xlsx
│ │ ├── Enrollments/Index.jsx
│ │ ├── Events/Index.jsx
│ │ ├── Exams/Index.jsx
│ │ ├── Facilities/Index.jsx
│ │ ├── FacilityStats/Index.jsx
│ │ ├── Faqs/{Index, Categories}.jsx
│ │ ├── FeeHeads/Index.jsx
│ │ ├── FeePayments/{Index, Create, Edit}.jsx
│ │ ├── FeeStructures/Index.jsx
│ │ ├── Galleries/Index.jsx
│ │ ├── Grades/Index.jsx
│ │ ├── GradingRules/Index.jsx
│ │ ├── Holidays/Index.jsx
│ │ ├── HomeFeatures/Index.jsx ← Added recent
│ │ ├── Homeworks/{Index, Submissions}.jsx
│ │ ├── Languages/Index.jsx
│ │ ├── LessonPlans/Index.jsx
│ │ ├── Login.jsx
│ │ ├── MarksEntry/Index.jsx
│ │ ├── Parents/Index.jsx
│ │ ├── PaymentMethods/Index.jsx
│ │ ├── PaymentTypes/Index.jsx
│ │ ├── Privacy/Index.jsx
│ │ ├── QuestionBank/Index.jsx
│ │ ├── Results/{Index, StudentResult}.jsx
│ │ ├── Roles/{Index, Create, Edit}.jsx
│ │ ├── SalaryPayments/Index.jsx
│ │ ├── SalaryStructures/Index.jsx
│ │ ├── Schedule/Index.jsx
│ │ ├── Schools/{Index, Create, Edit}.jsx
│ │ ├── Sections/Index.jsx
│ │ ├── SeoSettings/Index.jsx
│ │ ├── StudentFeeAssignments/Index.jsx
│ │ ├── StudentHistory/Index.jsx
│ │ ├── Students/{Index, Profile, IdProof}.jsx
│ │ ├── Subjects/Index.jsx
│ │ ├── Subscribers/Index.jsx
│ │ ├── Teachers/Index.jsx
│ │ ├── TeacherSubjectAllocations/Index.jsx
│ │ ├── Timetables/Index.jsx
│ │ └── Users/{Index, Create, Edit}.jsx
│ ├── Auth/ ← 6 Auth Pages
│ │ ├── ConfirmPassword.jsx
│ │ ├── ForgotPassword.jsx
│ │ ├── Login.jsx
│ │ ├── Register.jsx
│ │ ├── ResetPassword.jsx
│ │ └── VerifyEmail.jsx
│ ├── Parent/ ← 7 Parent Portal Pages
│ │ ├── Attendance.jsx
│ │ ├── Chat.jsx
│ │ ├── Children.jsx
│ │ ├── Dashboard.jsx
│ │ ├── Fees.jsx
│ │ ├── Grades.jsx
│ │ └── Homeworks/Index.jsx
│ ├── Profile/
│ │ ├── Edit.jsx
│ │ └── Partials/
│ │ ├── DeleteUserForm.jsx
│ │ ├── UpdatePasswordForm.jsx
│ │ └── UpdateProfileInformationForm.jsx
│ ├── Public/ ← 11 Public Pages
│ │ ├── About.jsx
│ │ ├── Academics.jsx
│ │ ├── Admissions.jsx
│ │ ├── Contact.jsx
│ │ ├── Events.jsx
│ │ ├── Facilities.jsx
│ │ ├── Faculty.jsx
│ │ ├── FAQ.jsx
│ │ ├── Gallery.jsx
│ │ ├── Home.jsx
│ │ └── Privacy.jsx
│ ├── Student/
│ │ ├── AttendanceHistory.jsx
│ │ ├── Dashboard.jsx
│ │ ├── Exams.jsx
│ │ ├── Fees.jsx
│ │ ├── Grades.jsx
│ │ ├── Homeworks/Index.jsx
│ │ ├── IdCard.jsx
│ │ ├── Profile.jsx
│ │ ├── QuestionBank.jsx
│ │ └── Schedule.jsx
│ └── Teacher/
│ ├── AttendanceHistory.jsx
│ ├── Attendance.jsx
│ ├── Chat.jsx
│ ├── Dashboard.jsx
│ ├── Homeworks/{Index, Submissions}.jsx
│ ├── QuestionBank.jsx
│ └── Salary.jsx
│ └── views/
│ ├── app.blade.php
│ └── pdfs/
│ └── application-form.blade.php
│
├── routes/
│ ├── auth.php
│ ├── console.php
│ └── web.php
│
├── storage/
│ ├── app/
│ │ ├── .gitignore
│ │ ├── private/
│ │ └── public/
│ └── framework/
│ └── logs/
│
├── tests/
│ ├── TestCase.php
│ ├── Feature/
│ │ ├── ExampleTest.php
│ │ ├── ProfileTest.php
│ │ └── Auth/
│ │ ├── AuthenticationTest.php
│ │ ├── EmailVerificationTest.php
│ │ ├── PasswordConfirmationTest.php
│ │ ├── PasswordResetTest.php
│ │ ├── PasswordUpdateTest.php
│ │ └── RegistrationTest.php
│ └── Unit/
│ └── ExampleTest.php
│
├── vendor/
└── node_modules/
Note: This is a Unified Application where both the Admin Panel and Public Website share the same codebase. The project uses a dual guard authentication system for admin and users.
Set up the Laravel backend and React frontend for the Unified Application (both Admin Panel and Public Website)
Download the source files from CodeCanyon and extract them to your working directory.
Copy the extracted folder and paste it inside XAMPP → htdocs.
Navigate to your project folder:
cd C:\xampp\htdocs\schoolmanagement
Copy the example environment file and configure your database credentials:
cp .env.example .env
Update your .env file with
your database credentials:
APP_NAME=your_application_name
APP_ENV=local
APP_DEBUG=true
APP_URL=http://your-domain.com
DB_CONNECTION=mysql
DB_HOST=your_database_host
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_database_username
DB_PASSWORD=your_database_password
SESSION_DRIVER=database
QUEUE_CONNECTION=database
CACHE_STORE=database
Run the following command to install all PHP dependencies:
composer install
Run the following command to install all JavaScript dependencies:
npm install --legacy-peer-deps
--legacy-peer-deps flag
is required for compatibility with certain packages.
Run the following command to generate a unique application key:
php artisan key:generate
Open config/app.php
and update the timezone based on your region:
'timezone' => env('APP_TIMEZONE', 'Asia/Kolkata'),
You can also set the timezone in your .env file:
APP_TIMEZONE=Asia/Kolkata
Asia/Kolkata
— India Standard Time (IST)America/New_York
— Eastern Time (ET)America/Los_Angeles
— Pacific Time (PT)Europe/London
— Greenwich Mean Time (GMT)Europe/Paris
— Central European Time (CET)Australia/Sydney
— Australian Eastern Time (AET)Asia/Dubai
— Gulf Standard Time (GST)Asia/Singapore
— Singapore Time (SGT)Run the following command to create the database tables and seed default data:
php artisan migrate --seed
--seed flag will create
default roles, permissions, and an admin user.
Run the following command to generate all Shield permissions:
php artisan db:seed --class=RolePermissionSeeder --force
Run the following command to build the React frontend assets:
npm run build
Run the following command to start the Laravel development server:
php artisan serve
The application runs at http://localhost:8000
The complete .env file configuration
for the ClassKnot application:
# ------------------------------------------------------------------
# Application Settings
# ------------------------------------------------------------------
APP_NAME=ClassKnot
APP_ENV=local
APP_KEY=base64:pRUlRqqRB8qq9U823xlNbXnI8THLtfJ56GqjOggPJN8=
APP_DEBUG=true
APP_URL=http://localhost:8000
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
# APP_MAINTENANCE_STORE=database
# PHP_CLI_SERVER_WORKERS=4
# ------------------------------------------------------------------
# Security
# ------------------------------------------------------------------
BCRYPT_ROUNDS=12
# ------------------------------------------------------------------
# Logging
# ------------------------------------------------------------------
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
# ------------------------------------------------------------------
# Database Configuration
# ------------------------------------------------------------------
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=classknot
DB_USERNAME=root
DB_PASSWORD=
# ------------------------------------------------------------------
# Session Configuration
# ------------------------------------------------------------------
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
# ------------------------------------------------------------------
# Broadcasting / Storage / Queue
# ------------------------------------------------------------------
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=public
QUEUE_CONNECTION=database
# ------------------------------------------------------------------
# Cache
# ------------------------------------------------------------------
CACHE_STORE=database
# CACHE_PREFIX=
# ------------------------------------------------------------------
# Memcached
# ------------------------------------------------------------------
MEMCACHED_HOST=127.0.0.1
# ------------------------------------------------------------------
# Redis
# ------------------------------------------------------------------
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
# ------------------------------------------------------------------
# Mail Configuration
# ------------------------------------------------------------------
MAIL_MAILER=log
MAIL_SCHEME=null
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
# ------------------------------------------------------------------
# AWS S3 Storage (Optional)
# ------------------------------------------------------------------
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
# ------------------------------------------------------------------
# Frontend
# ------------------------------------------------------------------
VITE_APP_NAME="${APP_NAME}"
# ------------------------------------------------------------------
# Payment Gateways (Optional)
# ------------------------------------------------------------------
# Razorpay
RAZORPAY_KEY=your_razorpay_key
RAZORPAY_SECRET=your_razorpay_secret
# Flutterwave
FLUTTERWAVE_KEY=your_flutterwave_key
# ------------------------------------------------------------------
# Firebase (Optional - only for chat)
# ------------------------------------------------------------------
FIREBASE_FILE=/path/to/firebase-service-account.json
FIREBASE_DB=https://your-project-id.firebaseio.com
FCM_SENDER_ID=your_fcm_sender_id
DB_DATABASE,
DB_USERNAME,
and DB_PASSWORD
with your actual database credentials
SESSION_DRIVER,
QUEUE_CONNECTION,
and CACHE_STORE
are set to database for better performance
Run these commands in sequence to set up the application:
# 1. Copy environment file
cp .env.example .env
# 2. Configure database credentials in .env file
# DB_DATABASE=schoolmanagement
# DB_USERNAME=root
# DB_PASSWORD=
# 3. Install PHP dependencies
composer install
# 4. Install Node dependencies
npm install --legacy-peer-deps
# 5. Generate application key
php artisan key:generate
# 6. Run migrations and seeders
php artisan migrate --seed
# 7. Build frontend assets
npm run build
# 8. Start the application
php artisan serve
# Application runs at: http://localhost:8000
# Admin Panel: http://localhost:8000/admin
Use these default credentials to log in to the admin panel:
| Email: | admin@gmail.com |
| Password: | password |
| Access Level: | Super Administrator |
Security Alert: Change these credentials immediately after first login.
Access the admin dashboard:
http://localhost:8000/admin
Access the public-facing website:
http://localhost:8000
.env file
exists and is properly configuredphp artisan config:clear
after modifying .envAPP_URL
matches your application URL (http://localhost:8000)SESSION_DRIVER,
QUEUE_CONNECTION,
and CACHE_STORE
are set to database
.env
(DB_DATABASE, DB_USERNAME, DB_PASSWORD)php artisan migrate:fresh --seed
to reset databasephp artisan storage:link
to create the symbolic linkstorage
directory has write permissionsphp artisan optimize:clear
node -v)
npm install --legacy-peer-deps
for compatibilitynode_modules
and package-lock.json, then run npm install --legacy-peer-deps
againnpm run build
to rebuild assetsphp artisan optimize:clear
to clear all cachesphp artisan optimize
to optimize the applicationphp artisan serve
http://localhost:8000/admin
php artisan tinker
→ User::where('email', 'admin@school.com')->first()php artisan db:seed --class=AdminUserSeeder
php artisan shield:generate --all --option=permissions
All public website content is managed dynamically from the Admin Panel. Any changes made in the admin are instantly reflected on the frontend website without any code changes. This guide explains how each section of the public website is controlled through the admin panel.
Layout: Full-width hero → stats → facilities → FAQ → CTA → footer
Home Page — Dynamic content from banners, facilities, FAQs, and stats
banners table (admin uploads
images + text)
Student::count(), Teacher::count(),
Classe::count()
facilities table (active
status, limited to 3 items)
faqs table (active status,
limited to 6)
/admin/banners)/admin/facilities)
/admin/faqs)/admin/contact-settings)Layout: Banner → who we are → feature cards → history timeline → CTA
About Page — Dynamic content from about_sections (features, history, content)
about_sections table (type =
content)
about_sections table (type =
feature)
about_sections table (type =
history)
/admin/about-sections)about_sections table (type = feature)
about_sections table (type = history)
about_sections table (type = content)
Layout: Banner → steps info → application form
Admissions Page — Application form with dynamic dropdowns from classes, sections, and academic years
students,
classes, sections, academicYears
AdmissionController →
AdmissionService
/admin/admissions)/admin/classes)/admin/sections)
/admin/academic-years)/admin/schools)Layout: Banner → faculty grid → CTA
Faculty Page — Dynamic grid of active employees with photos and designations
employees table (active
status, eager-loaded with designations)
/admin/employees)/admin/designations)Layout: Banner → category tabs → image grid → load more
Gallery Page — Dynamic image grid with category filters and lightbox
galleryItems table (active
status)
/admin/galleries)Layout: Banner → stats bar → facility cards → CTA
Facilities Page — Dynamic facility cards with auto-detected icons
facilities table (active
status)
/admin/facilities)
Layout: Banner → search → category tabs → accordion
FAQ Page — Dynamic FAQs with category tabs and search filter
faq_categories table
faqs table (active, with
category)
contactSettings
/admin/faqs)/admin/contact-settings)Layout: Banner → contact info + form
Contact Page — Dynamic contact info from contactSettings and enquiry form
contactSettings table
EnquiryController →
creates enquiry
flash.success
/admin/contact-settings)/admin/enquiries)Layout: Banner → table of contents → content sections
Privacy Page — Dynamic privacy policy sections from privacy_policies table
privacy_policies table (sorted
by sort_order)
privacy_policies table
/admin/privacy)| Page | Dynamic Data Source | Admin Menu Path | Data Type |
|---|---|---|---|
| Home | Banners, Facilities (3), FAQs (6), Stats | Academics → Banners / Facilities Support → FAQs |
Dynamic |
| About | Features, History, Content Sections | Support → About Page (/admin/about-sections) |
Dynamic |
| Admissions | Students, Classes, Sections, Academic Years | Admission Organisation → Classes/Sections/Acad. Years |
Dynamic |
| Faculty | Employees (active status) | Employees → List | Dynamic |
| Gallery | Gallery Items | Academics → Gallery | Dynamic |
| Facilities | Facilities (active status) | Academics → Facilities | Dynamic |
| FAQ | FAQ Categories + FAQs, Contact Settings | Support → FAQs / Contact Details | Dynamic |
| Contact | Contact Details, Enquiries | Support → Contact Details / Enquiries | Dynamic |
| Privacy | Privacy Policies | Support → Privacy | Dynamic |
Everything shown on the public website is managed from the admin panel. When you add, edit, or delete content in the admin, it automatically reflects on the frontend. No code changes are required for content management.
Cause: Missing or outdated Node.js/PHP version, unstable internet connection, or running commands from the wrong directory.
Solution:
npm install --legacy-peer-deps
composer install
rm -rf node_modules package-lock.json
npm install --legacy-peer-deps
Cause: Missing dependencies, incorrect import paths, or incomplete project extraction.
Solution:
resources/js/ files.npm install --legacy-peer-deps
npm run build
Cause: Missing or incomplete environment
configuration in .env file.
Solution:
.env.example to .env.APP_URL=http://localhost:8000
DB_DATABASE=your_application_name
DB_USERNAME=root
DB_PASSWORD=
MAIL_HOST=smtp.gmail.com
MAIL_USERNAME=your_email@gmail.com
MAIL_PASSWORD=your_app_password
php artisan optimize:clear after updating .env.Cause: Missing configuration, incorrect .env values, or database connection issues.
Solution:
.env configuration is complete.php artisan optimize:clear.php artisan optimize.php artisan serve.storage/logs/laravel.log.Cause: Missing required fields, class/section not set up, or permission issues.
Solution:
Cause: Academic year, class, or section not properly configured.
Solution:
Cause: Fee heads, structures, or assignments not configured correctly.
Solution:
Cause: Subjects not allocated, teacher not assigned, or timetable not created.
Solution:
Cause: Employee not assigned to school or attendance module not configured.
Solution:
Cause: Parent not created or not linked during student admission.
Solution:
Cause: PHP version mismatch, missing dependencies, or permission issues.
Solution:
composer install to install all dependencies.php artisan key:generate.php artisan migrate --seed.storage and bootstrap/cache.
storage/logs/laravel.log.Cause: Incorrect credentials or admin user not created.
Solution:
admin@school.com / password.php artisan db:seed --class=AdminUserSeeder.php artisan tinker.APP_URL in .env matches your domain.Cause: Permissions not generated or assigned correctly.
Solution:
php artisan shield:generate --all --option=permissions.php artisan optimize:clear.Cause: MySQL service not running or incorrect credentials.
Solution:
.env database settings:DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=classknot
DB_USERNAME=root
DB_PASSWORD=
php artisan migrate --seed to create tables.Cause: Existing tables or migration conflicts.
Solution:
php artisan db:wipe.php artisan migrate --seed.storage/logs/laravel.log.
Cause: Symbolic link not created or storage permissions.
Solution:
php artisan storage:link to create symbolic link.storage directory has write permissions.APP_URL in .env is correct for asset paths.FILESYSTEM_DISK is set to public.If you encounter any issues that are not covered in this documentation, please contact our support team.
Monday – Friday
Response Time: Within 24–48 Business Hours
This will help us provide faster and more accurate assistance.
composer install — Install PHP dependenciesphp artisan key:generate — Generate app keyphp artisan migrate --seed — Run migrations with seedersphp artisan optimize:clear — Clear all cachephp artisan optimize — Optimize applicationphp artisan serve — Start Laravel serverphp artisan config:clear — Clear config cachephp artisan cache:clear — Clear application cachephp artisan route:clear — Clear route cachephp artisan view:clear — Clear view cachephp artisan storage:link — Create storage symbolic linknpm install --legacy-peer-deps — Install Node dependenciesnpm run build — Build for productionrm -rf node_modules — Remove dependencies (reinstall)php artisan migrate:fresh --seed — Fresh migration with seeders
php artisan db:wipe — Drop all tablesphp artisan tinker — Interactive REPLTrack all updates, improvements, and fixes for the Classknot classified School Management platform.
If you encounter an error that is not listed above, please feel free to contact our support team for further assistance. We’re here to help.
If you need any custom work, additional features, or modifications to this application, our team is ready to help you build and scale your project efficiently.
Custom feature development based on your business needs
UI/UX design improvements and branding customization
Third-party API integrations (payment, SMS, maps, etc.)
Performance optimization and scalability improvements
Full project setup and deployment assistance
Building large-scale applications from scratch
You can hire our development team for complete project development, from idea to deployment, including frontend, backend, and server setup.
+91 9150 441 443
sales@menpanitech.com
Custom development services may involve additional cost and timeline depending on the scope and complexity of the project.
We’re happy to collaborate and bring your ideas to life