Campuzen LMS Documentation

A full-featured Learning Management System built with Laravel 12. Manage courses, assignments, grades, communication, plugins, and multi-role access from a modern dark-themed interface.

Laravel 12 PHP 8.2+ MySQL / SQLite RBAC Permissions

System Requirements

Server

  • PHP 8.2 or higher
  • Composer 2.x
  • MySQL 8+ or SQLite 3
  • Node.js (optional, for asset builds)

PHP Extensions

  • BCMath, Ctype, Fileinfo, JSON
  • Mbstring, OpenSSL, PDO
  • Tokenizer, XML

Installation & Setup

1. Clone / extract โ†’ 2. composer install โ†’ 3. Configure .env โ†’ 4. migrate --seed โ†’ 5. php artisan serve

Step-by-step

cd campuzen-lms
composer install
cp .env.example .env
php artisan key:generate

MySQL configuration (.env)

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=campuzen_lms
DB_USERNAME=root
DB_PASSWORD=your_password

APP_URL=http://127.0.0.1:8000

Initialize database

php artisan migrate:fresh --seed
php artisan storage:link
php artisan serve

Open http://127.0.0.1:8000 in your browser and sign in with a demo account below.

Fresh install tip: migrate:fresh --seed resets all data and loads sample courses, users, assignments, forums, plugins, and language packs.

Demo Login Accounts

All demo accounts use password: password

RoleNameEmailPassword
AdminSystem Administratoradmin@campuzen.edupassword
FacultyDr. Ananya Sharmaananya.sharma@university.edupassword
StudentRahul Vermarahul@student.edupassword
Only users with active status can log in. Deactivated accounts are blocked at login.

User Roles

๐Ÿ›ก๏ธ

Administrator

Full system access: users, roles, branding, plugins, languages, all courses, and institution-wide statistics.

๐Ÿ‘ฉโ€๐Ÿซ

Faculty

Manages own courses, assignments, gradebook, students, announcements, forums, and messages with enrolled students.

๐ŸŽ“

Student

Views enrolled courses, submits assignments, checks grades, reads announcements, participates in forums and messaging.

โš™๏ธ

Custom Roles

Admins can create new roles under Roles and assign any combination of permissions.

Permission System (RBAC)

Every menu item and route is protected by permissions. Admins assign permissions per role under Admin โ†’ Roles.

Permission groups

GroupPermissionsDefault: AdminFacultyStudent
Generaldashboard.viewโœ“โœ“โœ“
Coursesview, manage, view_allโœ“view, manageview
Assignmentsview, manage, submit, view_allโœ“view, manageview, submit
Gradesview, manageโœ“manageview
Studentsstudents.viewโœ“โœ“โ€”
Communicationannouncements, forums, messages, blogsโœ“โœ“โœ“
Administrationusers, roles, branding, active_statsโœ“โ€”โ€”
Customizationplugins, languages, customization hubโœ“โ€”โ€”
Active Users by Role on the dashboard requires the users.active_stats permission. Only Admin has this by default. Grant it to Faculty or custom roles via Role Management if needed.

Authentication & Security

  • Email + password login (no role picker on login screen)
  • Rate limiting on failed login attempts
  • Session regeneration after successful login
  • Active user check โ€” inactive accounts cannot sign in
  • CSRF protection on all forms
  • Permission middleware on every protected route
  • Logout via GET or POST at /logout

Dashboard

Role-specific dashboard shown after login at /dashboard.

ComponentAdminFacultyStudent
Push notifications panelโœ“โœ“โœ“
Active plugin widgetsโœ“โœ“โœ“
Active users by roleโœ“*if permittedif permitted
Course / assignment statsโœ“โœ“โœ“
Recent users listโœ“โ€”โ€”

* Requires users.active_stats permission (admin by default).

Courses

Route: /courses

  • Admin โ€” views all courses across the institution
  • Faculty โ€” creates and manages own courses; views enrolled student count
  • Student โ€” views only enrolled courses with schedule and credits

Faculty can create courses with code, title, credits, semester, schedule, room, icon, and color.

Assignments

Route: /assignments

  • Faculty โ€” create assignments (Lab, Project, Quiz, Report, Assignment types), set due date and max marks
  • Student โ€” view Pending, Submitted, and Overdue tabs; submit work
  • Admin โ€” system-wide assignment overview

Creating an assignment sends a push notification to all enrolled students in that course.

Grades & Gradebook

Faculty gradebook: /gradebook โ€” select course, enter marks and feedback per student per assignment.

Student grades: /my-grades โ€” view graded assignments and performance.

Posting a grade triggers a notification to the student.

Communication Tools

๐Ÿ“ข

Announcements

Institution-wide or course-specific posts. Critical flag for high-priority alerts. Notifies students on publish.

๐Ÿ’ฌ

Forums

Open or private discussion forums with topics and replies. Course-linked or standalone.

โœ‰๏ธ

Direct Messages

WhatsApp-style chat UI. Filter recipients by Student/Faculty. Attach documents (PDF, images, Office files, up to 10 MB).

๐Ÿ“”

Group Blogs

Public, course, or private visibility blog posts for journals and shared reflections.

Push Notifications

In-app and optional browser push notifications for important events.

EventRecipient
New direct messageMessage recipient
New assignment createdEnrolled students in course
Assignment submittedCourse faculty
Grade postedStudent
New announcementStudents (course or all)

Access via the bell icon in the top bar, dashboard panel, or /notifications. Click Push in the top bar to enable browser desktop alerts.

Customization & Branding

Route: /admin/customization (admin)

Branding & Theme

/admin/settings โ€” customize app name, tagline, logo emoji, primary/secondary colors, background color, layout (default/compact/wide), and font family (Sora, Inter, Roboto, Poppins). Changes apply live across the app.

Language Packs

/admin/languages โ€” 100+ language packs. Install packs and set default site language. UI translations available for English, Spanish, French, German, Hindi, Arabic, Chinese, Portuguese, and Japanese. Language switcher appears in the top bar when 2+ packs are installed.

Plugin Library

Route: /admin/plugins

1,000+ community plugins catalogued. Install, activate, deactivate, or uninstall from the library.

Active plugins on dashboard

When a plugin is installed and active, its widget appears on the dashboard (not only in the plugin library):

PluginDashboard widget
Advanced AnalyticsSuccess score, GPA, at-risk students, cohort analysis
Calendar SyncUpcoming assignment deadlines (14 days), sync providers
Attendance TrackerToday's attendance rate
Gamification EngineXP, level, badges
After activating a plugin, go to Dashboard (not the plugin page) to see it in action. Use View on Dashboard โ†’ from the plugin library.

Project Structure

campuzen-lms/
โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ Http/Controllers/     # Web controllers
โ”‚   โ”œโ”€โ”€ Http/Middleware/      # EnsurePermission, EnsureRole, SetLocale
โ”‚   โ”œโ”€โ”€ Models/               # User, Course, Assignment, Grade, Plugin, etc.
โ”‚   โ””โ”€โ”€ Support/              # SiteSettings, Navigation, PushNotification, PluginRuntime
โ”œโ”€โ”€ database/
โ”‚   โ”œโ”€โ”€ migrations/           # Schema definitions
โ”‚   โ””โ”€โ”€ seeders/              # RolePermission, Lms, Communication, Customization
โ”œโ”€โ”€ lang/                     # UI translations (en, es, fr, de, hi, ar, zh, pt, ja)
โ”œโ”€โ”€ public/
โ”‚   โ”œโ”€โ”€ css/lms.css           # Main stylesheet
โ”‚   โ”œโ”€โ”€ css/messages-wa.css   # WhatsApp-style messaging
โ”‚   โ””โ”€โ”€ docs/index.html       # This documentation
โ”œโ”€โ”€ resources/views/          # Blade templates
โ””โ”€โ”€ routes/web.php            # All application routes

Database Tables

TablePurpose
usersAccounts with role, status, GPA, department
roles, permissionsRBAC system
courses, course_userCourses and enrollments
assignments, gradesAssignments and submissions/grades
announcementsNews and critical alerts
forums, forum_topics, forum_repliesDiscussion forums
direct_messages1:1 chat with optional attachments
blog_postsGroup blogs
plugins, language_packsCustomization catalog
app_notificationsIn-app push notifications
settingsSite branding key-value store

Useful Artisan Commands

CommandDescription
php artisan migrate:fresh --seedReset DB and load all sample data
php artisan db:seed --class=RolePermissionSeederRefresh permissions only
php artisan db:seed --class=CustomizationSeederSync plugins & languages
php artisan storage:linkEnable file uploads (messages)
php artisan cache:clearClear application cache
php artisan view:clearClear compiled Blade views
php artisan serveStart development server

Troubleshooting

419 Page Expired on logout

Ensure APP_URL in .env matches your browser URL. Logout supports both GET and POST.

Branding changes not saving

Settings are stored in the database. Run php artisan cache:clear if needed.

Plugin active but not on dashboard

Visit Dashboard after activation. Widgets appear there, not on the plugin library page.

Message attachments not downloading

Run php artisan storage:link to link storage/app/public.

Active Users showing for students/faculty

That section requires users.active_stats permission. Only grant via Role Management when needed.