hrshadhin/school-management-system

Another School Management System

1
Hotness score
9
Reliability score
1,126
Stars
over 10 years
Age
0
Published reviews
0
Questions

Scores

Hotness and reliability

The two headline scores, measured daily, with 30, 90, and 180 day views.

Hotness score

Jul 19, 2026

Current1

Previous2

Weekly average

100500
Full metrics details

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Hotness formula

40% Hot today + 40% Hot this week + 20% Breakout.

  • 40% Hot today: 1
  • 40% Hot this week: 1
  • 20% Breakout: 1
  • Stars gained: 1d: 0
  • Stars gained: 7d: 0
  • Stars gained: 14d: 0
  • Stars gained: 30d: 4
  • Stars gained: 90d: 25

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score

Reliability score

Jul 19, 2026

Current9

Previous9

Weekly average

100500
Full metrics details

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Reliability formula

30% Continuity + 30% Closure + 20% Shipping + 10% Liveness + 10% Support burden.

  • 30% Continuity: 5
  • 30% Closure: 0
  • 20% Shipping: 0
  • 10% Liveness: 2
  • 10% Support burden: 75

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score

Reliability breakdown

What drives the reliability score

Component scores measured daily from GitHub activity (2026-07-15).

Continuity30% of headline5

Activity on 0 of 90 tracked days in the last 90 and 0 of 30 in the last 30.

Closure30% of headline0

Merged 0 of 0 PRs opened and closed 0 of 0 issues opened over the last 90 tracked days — PR flow carries 55% of this component, issue flow 45%.

Shipping20% of headline0

0 releases in the last 180 days, 0 in the last 90 and 0 in the last 30 — a steady cadence scores highest.

Liveness10% of headline2

Last push 458 days ago — freshness decays as pushes age (roughly halves every 83 days without a push).

Support burden10% of headline75

Open-issue load isn't tracked for this repo yet.

Adoption confidence5

Modeled — how confidently teams are adopting this repo. Stargazers

Maintenance quality13

Modeled from PR/issue responsiveness and upkeep signals. Activity pulse

Risk score70

Modeled — lower is better; adoption and continuity risk. Repository

Stays active (30d)0%

Modeled chance the repo stays active over 30 days. Activity pulse

Stays active (90d)5%

Modeled chance the repo stays active over 90 days. Activity pulse

Release rhythm (180d)0

Regularity of releases over the last 180 days. Releases

Maintainer bus risk (90d)89%

Modeled — lower is better; concentration of commits in few maintainers. Contributors graph

Topics

Explore related topics

Jump into the topic listings this repository belongs to.

Measured history

Project metrics

Weekly GitHub totals with 30, 90, and 180 day views.

Issues opened

Jul 12, 2026

Current0

Previous0

Weekly total

110
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

175 observed daily rows. Missing days are not fabricated.

DateValue

Issues closed

Jul 12, 2026

Current0

Previous0

Weekly total

110
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

175 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests opened

Jul 12, 2026

Current0

Previous0

Weekly total

110
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

175 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests closed

Jul 12, 2026

Current0

Previous0

Weekly total

110
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

175 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests merged

Jul 12, 2026

Current0

Previous0

Weekly total

110
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

175 observed daily rows. Missing days are not fabricated.

DateValue

Issue close ratio (daily)

Mar 3, 2026

Current0.00

Previous0.00

Daily ratio — a gap means nothing was opened that day

How this works: each day's value is issues closed that day ÷ issues opened that day. Days when nothing was opened render as gaps — never a rolling average or a made-up zero. Values above 1 mean the project closed more issues than arrived that day.

1.000.500.00
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

2 observed daily rows. Missing days are not fabricated.

Per-day formula: issues closed that day ÷ issues opened that day; blank when nothing was opened (a gap, not a zero).

DateIssues openedIssues closedStored score

Pull request close ratio (daily)

Apr 20, 2026

Current0.00

Previous0.00

Daily ratio — a gap means nothing was opened that day

How this works: each day's value is pull requests closed that day ÷ pull requests opened that day. Days when nothing was opened render as gaps — never a rolling average or a made-up zero. Values above 1 mean the project closed more pull requests than arrived that day.

1.000.500.00
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

2 observed daily rows. Missing days are not fabricated.

Per-day formula: pull requests closed that day ÷ pull requests opened that day; blank when nothing was opened (a gap, not a zero).

DatePRs openedPRs closedStored score

Project Overview

School Management System (hrshadhin/school-management-system) is a self-hosted Laravel web application for day-to-day K-12 school administration. It consolidates the records that school staff typically manage across disconnected spreadsheets or paper ledgers: student enrollment, class scheduling, attendance, exam results, and fee collection.

The author's description — "Another School Management System" — is deliberate understatement. This isn't a brand exercise. It's a working tool aimed at administrators who need a functional school admin panel they can deploy themselves and own outright.

At 1,112 GitHub stars with 8.2% growth over the last ~6 months, the project shows steady real-world adoption rather than viral novelty. The primary language is Laravel Blade, which tells you the rendering model: server-side HTML, no JavaScript framework, deployable on any standard PHP/MySQL hosting environment.

If you're building something for a large institution with complex multi-school requirements, this project will feel limiting quickly. If you need a lightweight, self-hosted SMS you can get running in an afternoon and extend yourself, this is a practical fit.

Key Challenges Addressed

Most small and mid-sized schools — particularly in emerging markets or under-resourced districts — face three concrete problems:

  • Licensing cost: Commercial school management software (Infinite Campus, PowerSchool, SIMS) is priced for districts, not individual schools on tight budgets.
  • Data sprawl: Student records, attendance, and fee payments live in separate spreadsheets managed by different staff members, with no single source of truth.
  • Infrastructure dependency: Cloud-hosted SaaS solutions require reliable internet access and put your student data on a third-party server, creating compliance risk in some jurisdictions.

This project addresses all three: it's free, self-hosted, and consolidates the core administrative record types in one application. The trade-off is that you own the maintenance burden.

Getting Started

You need PHP 7.4+, Composer, MySQL 5.7+, and a web server (Apache or Nginx).

git clone https://github.com/hrshadhin/school-management-system.git
cd school-management-system
composer install
cp .env.example .env
php artisan key:generate

Configure your .env with database credentials, then run migrations and seed the default data:

php artisan migrate --seed
php artisan storage:link

Sharp edges you'll hit immediately:

  • If you skip php artisan storage:link, file uploads — student photos, document attachments — silently fail and produce broken image references with no error message. Run this before testing any file upload workflow.
  • The .env.example ships with APP_DEBUG=true. With debug on, Laravel exposes full stack traces including database credentials in browser error pages. Set APP_DEBUG=false before any network-accessible deployment.
  • The database seeder creates a default admin account with credentials documented in the README. Those credentials are public. Any attacker who finds your install has admin access immediately. Change the admin password in the first session after setup.

Features and Use Cases

Student and Staff Management

Create student profiles with enrollment history, guardian contacts, and document attachments. Teacher records track class assignments and history. The profile system handles the foundational record-keeping most schools actually need: who is enrolled, in which class, under which teacher.

Attendance Tracking

Daily attendance per class and section with monthly summary reports. A class teacher marks attendance each morning; the admin pulls term-level truancy summaries at report time. This is one of the most-used modules in practice and it covers the basic workflow cleanly.

Exam and Results Management

Define exam periods, record marks per subject, and generate result sheets. Grading scales are configurable — useful when your institution uses letter grades, numeric ranges, or a custom rubric system. You can assign weightings across different exam types within a term.

Fee Management

Assign fee structures to student categories, record payments including partial payments, and generate receipts. This module is more complete than the others — partial payment tracking and balance history are genuinely useful for a small school's finance office.

Library Module

Basic book inventory with issue and return tracking. It's thin relative to dedicated library software, but adequate for a school with a few hundred books that doesn't want to run a separate system.

Notice Board and Events

Publish school-wide announcements and manage a calendar of events. If you're not running a separate communication tool for staff, this covers internal announcements.

Ecosystem and Dependencies

The project is a standard Laravel application, which means you inherit the full Laravel ecosystem without adding a new dependency category.

  • Email notifications: Laravel's notification system lets you wire fee-due alerts or low-attendance warnings to your mail driver without a third-party library — configure MAIL_MAILER in .env and write a Notification class.
  • Excel/CSV exports: The built-in reporting uses PDF generation. If you need Excel exports for reports, add maatwebsite/laravel-excel — it integrates cleanly with Laravel's collection layer.
  • Queue processing: For bulk operations like sending term-end reports to all parents, configure Laravel's queue with Redis or a database driver and move the mail dispatch to a queued job.
  • Multi-tenancy: The default schema is single-tenant — one database per school. If you need to run multiple schools from one installation, you'll need to add a tenant isolation layer yourself. That work isn't included and isn't trivial.

Architectural Overview

Standard Laravel MVC: controllers handle routing and business logic, Eloquent models map to MySQL tables, and Blade templates render HTML server-side. There is no single-page application layer — this is server-rendered HTML with Bootstrap and jQuery for interactive elements.

The database schema uses normalized relational tables: students link to enrollments, which link to sections, which link to classes and grade levels. Attendance is stored daily per student per section. Fee structures are defined by category and linked to student records at enrollment.

Why this architecture matters for your team:

  • No JavaScript build pipeline. You don't need Node.js expertise to deploy or extend this.
  • Any PHP developer can read and extend the codebase without deep Laravel knowledge — the Eloquent active record pattern is learnable in a day.
  • No API layer means no mobile app integration without additional engineering. If you need a parent-facing mobile app, you'd build REST endpoints on top of the existing controllers.
  • Server-side rendering means the application works on low-powered client devices and slow connections — a realistic requirement in the target deployment environments.

Pros and Cons

Pros

  • Self-hosted, no SaaS subscription, no student data leaving your server
  • Standard Laravel stack — any PHP developer can extend it without a framework learning curve
  • Fee management handles partial payments and receipt generation, covering real operational workflows
  • No JavaScript build step required for basic UI customization
  • Runs on shared hosting (PHP 7.4+, MySQL) — the infrastructure bar is low
  • MIT licensed — no commercial use restrictions

Cons

  • Single-tenant by default — running multiple schools means multiple database installations
  • No REST API or mobile app support without additional development
  • Bootstrap 3/4-era UI — functional but noticeably dated
  • Test coverage is sparse; extending without regression risk requires writing tests yourself
  • Documentation covers setup but not configuration edge cases — expect source reading for non-trivial changes
  • No built-in two-factor authentication or fine-grained RBAC beyond basic role separation
  • Activity in the repository has been intermittent — review open issues before committing to this stack for a production deployment

Comparison and Alternatives

Measured 90-day trends for this project and its alternatives.

GitHub stars

Weekly star gains

2911450
Full metrics details

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

School Management System

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
ERPNext

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

133 observed daily rows. Missing days are not fabricated.

DateValue
Gibbon

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

177 observed daily rows. Missing days are not fabricated.

DateValue

Issues opened

Weekly total

67340
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

School Management System

GitHub API observation. Historical values render only when the source provides a real observation for that day.

175 observed daily rows. Missing days are not fabricated.

DateValue
ERPNext

GitHub API observation. Historical values render only when the source provides a real observation for that day.

101 observed daily rows. Missing days are not fabricated.

DateValue
Gibbon

GitHub API observation. Historical values render only when the source provides a real observation for that day.

143 observed daily rows. Missing days are not fabricated.

DateValue

Issues closed

Weekly total

66330
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

School Management System

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

175 observed daily rows. Missing days are not fabricated.

DateValue
ERPNext

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

101 observed daily rows. Missing days are not fabricated.

DateValue
Gibbon

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

143 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests opened

Weekly total

188940
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

School Management System

GitHub API observation. Historical values render only when the source provides a real observation for that day.

175 observed daily rows. Missing days are not fabricated.

DateValue
ERPNext

GitHub API observation. Historical values render only when the source provides a real observation for that day.

101 observed daily rows. Missing days are not fabricated.

DateValue
Gibbon

GitHub API observation. Historical values render only when the source provides a real observation for that day.

143 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests closed

Weekly total

179900
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

School Management System

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

175 observed daily rows. Missing days are not fabricated.

DateValue
ERPNext

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

101 observed daily rows. Missing days are not fabricated.

DateValue
Gibbon

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

143 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests merged

Weekly total

152760
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

School Management System

GitHub API observation. Historical values render only when the source provides a real observation for that day.

175 observed daily rows. Missing days are not fabricated.

DateValue
ERPNext

GitHub API observation. Historical values render only when the source provides a real observation for that day.

101 observed daily rows. Missing days are not fabricated.

DateValue
Gibbon

GitHub API observation. Historical values render only when the source provides a real observation for that day.

143 observed daily rows. Missing days are not fabricated.

DateValue

Open/closed pull request ratio

Weekly average

100500
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

School Management System

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
ERPNext

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

133 observed daily rows. Missing days are not fabricated.

DateValue
Gibbon

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

177 observed daily rows. Missing days are not fabricated.

DateValue

Open/closed issues ratio

Weekly average

100500
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

School Management System

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
ERPNext

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

133 observed daily rows. Missing days are not fabricated.

DateValue
Gibbon

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

177 observed daily rows. Missing days are not fabricated.

DateValue

Releases

Weekly total

110
Full metrics details

GitHub release published_at events bucketed by UTC day; drafts are excluded.

School Management System

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue
ERPNext

GitHub release published_at events bucketed by UTC day; drafts are excluded.

133 observed daily rows. Missing days are not fabricated.

DateValue
Gibbon

GitHub release published_at events bucketed by UTC day; drafts are excluded.

177 observed daily rows. Missing days are not fabricated.

DateValue

Hotness score

Weekly average

100500
Full metrics details

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

School Management System

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
ERPNext

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

133 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
Gibbon

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

177 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score

Reliability score

Weekly average

100500
Full metrics details

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

School Management System

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
ERPNext

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

133 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
Gibbon

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

177 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score

Two alternatives worth evaluating are ERPNext — which includes a full Education module — and Gibbon, a dedicated school platform with a broader feature set.

| Project | Repo | Hotness (~6mo) | PRs merged (~6mo) | Star growth (~6mo) | |---------|------|----------------|-------------------|--------------------|| | School Management System | https://github.com/hrshadhin/school-management-system | 17.44 | 0 | 84 | | ERPNext | https://github.com/frappe/erpnext | 54.63 | 2501 | 3524 | | Gibbon | https://github.com/GibbonEdu/core | metrics pending | 0 | 4 |

ERPNext is the best overall alternative. Its Education module covers multi-institution deployments, has active maintenance and well-resourced documentation, and the Frappe community means you're not the only one debugging edge cases. The setup is more complex than a standard Laravel app, but for anything beyond a single-school deployment, that investment pays off.

Conclusion

If you're a school administrator or developer supporting a single institution on a tight budget who needs a self-hosted student information system deployable on standard PHP hosting, this project delivers the core modules — attendance, results, fee management — in a Laravel codebase you can read, extend, and own without a licensing cost. Start with the official repository README for setup steps.

Do not expose this application to a network before changing the seeded admin credentials — the defaults are in the README, which means any attacker who discovers your install URL has admin access immediately. Run php artisan tinker right after your first migrate --seed and update the admin user password before doing anything else.

Join the conversation

Reviews · Questions · Posts

Share what you know about school-management-system — write a review from your real experience, ask an implementation question, or publish a post about how you use it.

Share your experience

Write or update your review

Explain what worked, what broke down, and what another team should know before adopting school-management-system.

Write your review now — it saves locally and publishes automatically after you sign in.

Rating
Positive attributes
Negative attributes

Project Q&A

Questions and answers

Browse implementation threads tied directly to hrshadhin/school-management-system. Each question links through to the full answer page.

Q&A No threads yet

Be the first to ask how teams run school-management-system in production. Every question you post becomes a durable, searchable answer page other developers can find.

Ask the first question

Related posts

Posts tagged with the same topics

These posts come from the same topic surface as this repo, so readers can move from project evaluation into practical writeups and migration notes without leaving context.

Posts No topic-linked posts yet

Share how your team uses school-management-system — a migration note, an architecture writeup, or a comparison. Your post reaches everyone browsing these same topics.

Write the first post
Get a weekly email with the hottest new projects in the Template Engines and Blade world.
No Spam. Unsubscribe easily at any time.

Copyright 2018-2026 Awesome Open Source.  All rights reserved.