A web-based library management system designed for Philippine elementary schools. The system digitizes book inventory, tracks borrowing/returns, manages overdue books, and generates reports.
- Book Management -- Full CRUD for books and individual copies with auto-generated accession numbers (YYYY-NNNN format)
- Student Management -- Student registry with LRN, grade level, guardian info
- Borrowing System -- Checkout/return with borrower type-based rules (students, teachers, classroom loans)
- Overdue Tracking -- Scheduled overdue detection, printable parent notice letters
- Fine Management -- Configurable per-day fines with payment tracking and waive option
- Reservations -- Reserve borrowed books, auto-hold on return, configurable expiry
- Donations -- Donor management, donation recording, printable acknowledgment letters
- Reports -- Inventory, circulation, popular books, overdue/fines, donations, and annual summary
- Dashboard -- Live stats, quick actions, popular books, and recent activity feed
- Settings -- Configurable loan periods, borrowing limits, fines, and reservations
- User Management -- Role-based access (Admin, Librarian, Teacher) with activation/password reset
- School Year Management -- Create, set current, and archive school years
- Backend: Laravel 12, PHP 8.2+
- Database: MySQL 8.0+ (via XAMPP)
- Frontend: Blade + Tailwind CSS 4 + Alpine.js
- Build: Vite 7
- Testing: PHPUnit 11 (SQLite in-memory for tests)
- PHP 8.2+
- Composer
- Node.js 18+
- MySQL 8.0+ (included with XAMPP)
-
Clone the repository
git clone https://github.com/JuLiusGI/Elementary-School-based-Library-Management-System.git cd Elementary-School-based-Library-Management-System -
Run project setup (installs dependencies, generates key, runs migrations, builds assets)
composer setup
-
Configure the database
Create a MySQL database named
elementary_library, then update.env:DB_CONNECTION=mysql DB_DATABASE=elementary_library DB_USERNAME=root DB_PASSWORD= -
Run migrations and seeders
php artisan migrate:fresh --seed
-
Start the development server
composer dev
This runs Laravel server, queue worker, log viewer, and Vite concurrently.
After seeding, these accounts are available:
| Role | Password | |
|---|---|---|
| Admin | admin@school.edu.ph | password123 |
| Librarian | librarian@school.edu.ph | password123 |
| Teacher | grade1@school.edu.ph | password123 |
- Admin -- Full access including user management, settings, and school years
- Librarian -- Book/borrowing management, reports, donations, reservations
- Teacher -- View own borrowings on the dashboard
composer dev # Start dev server (all services)
composer test # Run full test suite
php artisan test --filter=Name # Run a specific test
./vendor/bin/pint # Format PHP code (PSR-12)
php artisan migrate:fresh --seed # Reset database with seed data
npm run build # Production asset buildAfter installation, go to Settings (Admin menu) and update:
- School Name
- School ID
- School Address
These values appear on the login page, sidebar, printed notices, and reports.
Replace the default logo at public/schoollogo/logo.svg with your own school logo.
Supported formats: SVG (recommended), PNG, or JPG. If using PNG/JPG, update the logo references in:
resources/views/layouts/app.blade.php(favicon + sidebar logo)resources/views/layouts/guest.blade.php(favicon + login page logo)resources/views/print/overdue-notice.blade.php(printed notice header)resources/views/print/acknowledgment-letter.blade.php(printed letter header)
For SVG, simply replace public/schoollogo/logo.svg -- no code changes needed.
- Borrowing limits: Students 1 book / 3 days, Teachers 3 books / 7 days, Classroom 10 books / 30 days
- Overdue: Blocks new borrowing (configurable). Fines at configurable rate (default: PHP 5/day)
- Reservations: 1 per book, held 2 days after return, then auto-expired
- Accession numbers: Auto-generated in
YYYY-NNNNformat
app/
Http/Controllers/ # Route controllers
Http/Requests/ # Form request validation
Models/ # Eloquent models
Services/ # Business logic (BorrowingService, FineCalculatorService, etc.)
Console/Commands/ # Artisan commands (MarkOverdueBooks, ExpireReservations)
resources/views/ # Blade templates
tests/Feature/ # Feature tests
This project is for educational purposes.