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.
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
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.
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
| Role | Name | Password | |
|---|---|---|---|
| Admin | System Administrator | admin@campuzen.edu | password |
| Faculty | Dr. Ananya Sharma | ananya.sharma@university.edu | password |
| Student | Rahul Verma | rahul@student.edu | password |
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
| Group | Permissions | Default: Admin | Faculty | Student |
|---|---|---|---|---|
| General | dashboard.view | โ | โ | โ |
| Courses | view, manage, view_all | โ | view, manage | view |
| Assignments | view, manage, submit, view_all | โ | view, manage | view, submit |
| Grades | view, manage | โ | manage | view |
| Students | students.view | โ | โ | โ |
| Communication | announcements, forums, messages, blogs | โ | โ | โ |
| Administration | users, roles, branding, active_stats | โ | โ | โ |
| Customization | plugins, languages, customization hub | โ | โ | โ |
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.
| Component | Admin | Faculty | Student |
|---|---|---|---|
| Push notifications panel | โ | โ | โ |
| Active plugin widgets | โ | โ | โ |
| Active users by role | โ* | if permitted | if 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.
| Event | Recipient |
|---|---|
| New direct message | Message recipient |
| New assignment created | Enrolled students in course |
| Assignment submitted | Course faculty |
| Grade posted | Student |
| New announcement | Students (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):
| Plugin | Dashboard widget |
|---|---|
| Advanced Analytics | Success score, GPA, at-risk students, cohort analysis |
| Calendar Sync | Upcoming assignment deadlines (14 days), sync providers |
| Attendance Tracker | Today's attendance rate |
| Gamification Engine | XP, level, badges |
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
| Table | Purpose |
|---|---|
| users | Accounts with role, status, GPA, department |
| roles, permissions | RBAC system |
| courses, course_user | Courses and enrollments |
| assignments, grades | Assignments and submissions/grades |
| announcements | News and critical alerts |
| forums, forum_topics, forum_replies | Discussion forums |
| direct_messages | 1:1 chat with optional attachments |
| blog_posts | Group blogs |
| plugins, language_packs | Customization catalog |
| app_notifications | In-app push notifications |
| settings | Site branding key-value store |
Useful Artisan Commands
| Command | Description |
|---|---|
php artisan migrate:fresh --seed | Reset DB and load all sample data |
php artisan db:seed --class=RolePermissionSeeder | Refresh permissions only |
php artisan db:seed --class=CustomizationSeeder | Sync plugins & languages |
php artisan storage:link | Enable file uploads (messages) |
php artisan cache:clear | Clear application cache |
php artisan view:clear | Clear compiled Blade views |
php artisan serve | Start 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.