Skip to content

JuLiusGI/Elementary-School-based-Library-Management-System

Repository files navigation

Elementary School Library Management System

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.

Features

  • 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

Tech Stack

  • 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)

Requirements

  • PHP 8.2+
  • Composer
  • Node.js 18+
  • MySQL 8.0+ (included with XAMPP)

Installation

  1. Clone the repository

    git clone https://github.com/JuLiusGI/Elementary-School-based-Library-Management-System.git
    cd Elementary-School-based-Library-Management-System
  2. Run project setup (installs dependencies, generates key, runs migrations, builds assets)

    composer setup
  3. 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=
    
  4. Run migrations and seeders

    php artisan migrate:fresh --seed
  5. Start the development server

    composer dev

    This runs Laravel server, queue worker, log viewer, and Vite concurrently.

Default Accounts

After seeding, these accounts are available:

Role Email Password
Admin admin@school.edu.ph password123
Librarian librarian@school.edu.ph password123
Teacher grade1@school.edu.ph password123

Roles

  • Admin -- Full access including user management, settings, and school years
  • Librarian -- Book/borrowing management, reports, donations, reservations
  • Teacher -- View own borrowings on the dashboard

Commands

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 build

Customizing for Your School

School Info

After 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.

School Logo

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.

Business Rules

  • 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-NNNN format

Project Structure

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

License

This project is for educational purposes.

About

A web-based Library Management System for Philippine elementary schools. Built with Laravel 12, Tailwind CSS 4, and Alpine.js. Features book inventory, borrowing/returns, overdue tracking, fines, reservations, donations, reports, and role-based access control.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages