A modern, full-featured school payment management system built with Laravel 12, Inertia.js, React 19, and TypeScript. Designed for efficient handling of student fee structures, payment processing, and financial reporting with role-based access control.
- Quick Payment Processing - Streamlined interface for recording student payments
- Payment History - Comprehensive transaction logs with search and filtering
- Receipt Generation - Professional PDF receipts with school branding
- Multiple Payment Methods - Cash, check, online payment support
- Student Database - Complete student information with grade level and section assignment
- Fee Assignment - Flexible fee structure assignment per grade level
- Balance Tracking - Real-time outstanding balance calculations
- Search & Filter - Advanced search by name, student ID, grade, or section
- Dynamic Fee Setup - Create and manage various fee types (tuition, misc., etc.)
- Grade-Based Pricing - Different fee structures per grade level
- Academic Year Management - Organize fees by school year
- Fee Templates - Reusable fee structures for efficiency
- Financial Reports - Daily, monthly, and custom date range reports
- Collection Summary - Track collection performance by cashier
- Outstanding Reports - Monitor unpaid balances by grade/section
- Export Capabilities - CSV/PDF export for accounting integration
- Admin - Full system access, user management, system settings
- Manager - View all reports, approve refunds, manage fee structures
- Accountant - Access financial reports, reconciliation tools
- Cashier - Process payments, generate receipts, view assigned students
- Responsive Design - Works seamlessly on desktop, tablet, and mobile
- Dark/Light Mode - System and user-preference theme support
- Accessibility - WCAG compliant with keyboard navigation
- Real-time Validation - Instant form feedback for better UX
- Laravel 12 - Latest PHP framework with modern features
- SQLite - Lightweight database (easily switchable to MySQL/PostgreSQL)
- Spatie Laravel Permission - Robust role and permission management
- Inertia.js Server - Server-side rendering capabilities
- React 19 - Latest React with modern features
- TypeScript 5.7 - Type-safe development
- Inertia.js - SPA without API complexity
- Vite 7 - Lightning-fast development and build tool
- Tailwind CSS 4 - Utility-first styling with custom design system
- Radix UI - Accessible component primitives
- shadcn/ui patterns - Beautiful, reusable component patterns
- TanStack Table - Powerful data table management
- Recharts - Beautiful, responsive charts
- Laravel Wayfinder - Type-safe routing with auto-generated helpers
- Pest PHP - Elegant testing framework
- ESLint & Prettier - Code quality and formatting
- Docusaurus - Comprehensive documentation site
- Concurrently - Multi-process development workflow
- PHP 8.2 or higher
- Composer 2.x
- Node.js 20.x or higher
- npm 10.x or higher
- Clone the repository
git clone https://github.com/mark-john-ignacio/school-cashier-system.git
cd school-cashier-system- Install PHP dependencies
composer install- Install Node dependencies
npm install- Set up environment
# Copy environment file
Copy-Item .env.example .env
# Generate application key
php artisan key:generate
# Create SQLite database
New-Item -Path database -Name database.sqlite -ItemType File -Force- Run migrations and seed demo data
php artisan migrate --seed- Start the development server
composer run devThe application will be available at: http://localhost:8000
After seeding, you can log in with these accounts:
| Role | Password | Description | |
|---|---|---|---|
| Admin | [email protected] | password | Full system access |
| Cashier | [email protected] | password | Payment processing |
| Manager | [email protected] | password | Reports and oversight |
| Accountant | [email protected] | password | Financial reports |
Note: All demo accounts use
passwordas the password. Change these in production!
This project emphasizes clean, maintainable code with comprehensive documentation:
- Typed Routes - Auto-generated TypeScript helpers via Laravel Wayfinder
- Strict TypeScript - Full type coverage with no
anytypes in business logic - Form Type Safety - Strongly typed Inertia form helpers for all endpoints
- PHPDoc Comments - Comprehensive documentation for all models and controllers
- JSDoc Comments - Detailed component and function documentation
- Inline Explanations - Complex logic explained with inline comments
- Usage Examples - Code examples in documentation for common patterns
- Centralized Constants - Shared values defined in typed constant files
- DRY Principles - Reusable components and utility functions
- SOLID Principles - Clean architecture with single responsibility
- Consistent Naming - Clear, self-documenting variable and function names
- Comprehensive README - Quick start, features, and deployment guides
- Contributing Guidelines - Clear standards for code contributions
- Security Policy - Vulnerability reporting and security best practices
- Development Guide - Architecture patterns and common workflows
Comprehensive documentation is available via Docusaurus:
# Start documentation site
npm run docs:devVisit: http://localhost:3000
- π Architecture - System design and patterns
- π» Developer Guide - Contributing and code standards
- π Workflows - Business process flows
- π§ Implementation - Project status and roadmap
- β¨ Features - Detailed feature documentation
# Run test suite
composer test
# Run with coverage
composer test -- --coveragecomposer run devRuns: PHP server + Queue worker + Vite dev server
composer run dev:ssrRuns: PHP server + Queue worker + Vite SSR + Laravel Pail logs
# Lint JavaScript/TypeScript
npm run lint
# Format code
npm run format
# Check formatting
npm run format:check
# Type check
npm run types
# PHP formatting (Laravel Pint)
./vendor/bin/pint# Build client-side assets
npm run build
# Build with SSR
npm run build:ssrschool-cashier-system/
βββ app/
β βββ Http/Controllers/ # Request handlers
β βββ Models/ # Eloquent models
β βββ Providers/ # Service providers
βββ database/
β βββ factories/ # Model factories
β βββ migrations/ # Database schema
β βββ seeders/ # Data seeders
βββ docs/ # Docusaurus documentation
βββ resources/
β βββ js/
β β βββ actions/ # Auto-generated controller actions
β β βββ components/ # React components
β β βββ hooks/ # Custom React hooks
β β βββ layouts/ # Page layouts
β β βββ pages/ # Inertia pages
β β βββ routes/ # Auto-generated route helpers
β βββ views/ # Blade templates
βββ routes/
β βββ auth.php # Authentication routes
β βββ settings.php # Settings routes
β βββ web.php # Main routes
βββ tests/ # Pest tests
Contributions are welcome! Please read CONTRIBUTING.md for details on the code of conduct and submission process.
- Follow Laravel and React best practices
- Write tests for new features
- Ensure TypeScript types are properly defined
- Run linters before committing
- Update documentation for significant changes
This project is licensed under the MIT License - see the LICENSE file for details.
If you discover any security-related issues, please email [email protected] instead of using the issue tracker. See SECURITY.md for more details.
Mark John Ignacio
- GitHub: @mark-john-ignacio
- LinkedIn: mark-john-ignacio
- Portfolio: https://markjohnignacio.tech/
- Built with Laravel
- Powered by Inertia.js
- UI components inspired by shadcn/ui
- Icons by Lucide
- Multi-currency support
- SMS notifications for payments
- Online payment gateway integration
- Mobile app (React Native)
- Barcode/QR code student ID scanning
- Automated report scheduling
- Advanced analytics dashboard