PHPackages                             tisuchi/university-directory - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. tisuchi/university-directory

ActiveLibrary

tisuchi/university-directory
============================

A lightweight, structured university registry for Laravel applications

v0.2.1(2mo ago)0110↓100%MITPHPPHP ^8.2CI passing

Since Feb 26Pushed 2mo agoCompare

[ Source](https://github.com/tisuchi/university-directory)[ Packagist](https://packagist.org/packages/tisuchi/university-directory)[ RSS](/packages/tisuchi-university-directory/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (3)Versions (3)Used By (0)

 [![University Directory](art/logo.svg)](art/logo.svg)

University Directory
====================

[](#university-directory)

 [![Latest Version on Packagist](https://camo.githubusercontent.com/3616b7fddf3fcce1447f0b108d1c0c601443aa4173c4a452663a15080b93207c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f746973756368692f756e69766572736974792d6469726563746f72792e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/tisuchi/university-directory) [![Tests](https://camo.githubusercontent.com/03f8c592b57a3594d2f239957ae6c04e8dd096ec52d9d260e8e9696fbb59ba83/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f746973756368692f756e69766572736974792d6469726563746f72792f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/tisuchi/university-directory/actions) [![Total Downloads](https://camo.githubusercontent.com/9d0b6c654274a3d9ca6056965e26b73440b2f2716263e80a9be7ba4feaaefa83/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f746973756368692f756e69766572736974792d6469726563746f72792e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/tisuchi/university-directory) [![License](https://camo.githubusercontent.com/b4e2c7a17995756b7f6b7ad04ee6da096b13b0e738f4d6542e254fca4f613d4b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f746973756368692f756e69766572736974792d6469726563746f72793f7374796c653d666c61742d737175617265)](https://github.com/tisuchi/university-directory/blob/main/LICENSE)

A lightweight, structured university registry for Laravel applications. Ships with a bundled dataset of 60,000+ universities across 183 countries — no external API calls needed. Built for scholarship platforms, education portals, and any app that needs clean university data with search, autocomplete, and URL-friendly slugs.

Requirements
------------

[](#requirements)

- PHP 8.2+
- Laravel 11.x or 12.x
- MySQL 8.0+ / PostgreSQL 14+ / SQLite 3.35+

Installation
------------

[](#installation)

```
composer require tisuchi/university-directory
```

The package auto-discovers its service provider. Run the migration:

```
php artisan migrate
```

Importing Data
--------------

[](#importing-data)

The package ships with a bundled dataset of 60,000+ universities across 183 countries. Import by country code, region, or all at once:

```
php artisan university-directory:import DE
php artisan university-directory:import DE US GB
php artisan university-directory:import --region=europe
php artisan university-directory:import --all
```

By default the import reads from the local bundled files — no network access required. Use `--remote` to fetch fresh data from the remote source instead:

```
php artisan university-directory:import DE --remote
```

Available regions: `europe`, `asia`, `africa`, `americas`, `oceania`, `middle-east`

### Import Options

[](#import-options)

OptionDefaultDescription`--region`—Import all countries in a region`--all`—Import all available countries`--remote`—Fetch from remote source instead of local files`--chunk`500Records per batch`--retries`3HTTP retry attempts`--no-update`—Skip updating existing recordsUsage
-----

[](#usage)

### Querying Universities

[](#querying-universities)

```
use Tisuchi\UniversityDirectory\Models\University;
use Tisuchi\UniversityDirectory\Enums\UniversityType;

// Filter by country
University::country('DE')->get();

// Filter by type
University::type(UniversityType::College)->get();

// Search by name, short name, or alias
University::search('Munich')->get();

// Combine scopes
University::country('US')->type(UniversityType::University)->search('MIT')->get();

// Find by slug
University::where('slug', 'technical-university-of-munich')->firstOrFail();

// Dropdown data
University::country('DE')->pluck('name', 'id');
```

### University Types

[](#university-types)

The `UniversityType` enum provides four cases:

```
UniversityType::University  // 'university'
UniversityType::College     // 'college'
UniversityType::Institute   // 'institute'
UniversityType::Academy     // 'academy'
```

### Relationships

[](#relationships)

Add a relationship to your own models — no trait required:

```
class Application extends Model
{
    public function university()
    {
        return $this->belongsTo(\Tisuchi\UniversityDirectory\Models\University::class);
    }
}
```

### API Resource

[](#api-resource)

```
use Tisuchi\UniversityDirectory\Http\Resources\UniversityResource;

// Single resource
return new UniversityResource($university);

// Collection
return UniversityResource::collection(
    University::search($request->q)->limit(20)->get()
);
```

Response format:

```
{
    "id": 1,
    "name": "Technical University of Munich",
    "short_name": "TUM",
    "slug": "technical-university-of-munich",
    "country_code": "DE",
    "type": "university",
    "aliases": ["TU Munich", "TUM"],
    "official_website": "https://www.tum.de",
    "description": "The Technical University of Munich is a public research university in Munich, Germany."
}
```

### Autocomplete Endpoint

[](#autocomplete-endpoint)

```
Route::get('/universities/search', function (Request $request) {
    return University::search($request->q)
        ->country($request->country)
        ->limit(20)
        ->get(['id', 'name', 'short_name', 'country_code']);
});
```

Artisan Commands
----------------

[](#artisan-commands)

### Import Universities

[](#import-universities)

```
php artisan university-directory:import DE US GB
```

```
 3/3 [============================] 100%

+---------+---------+---------+---------+--------+
| Country | Created | Updated | Skipped | Status |
+---------+---------+---------+---------+--------+
| DE      | 428     | 0       | 0       | OK     |
| US      | 7,236   | 0       | 0       | OK     |
| GB      | 164     | 0       | 0       | OK     |
+---------+---------+---------+---------+--------+

Done. Total: 7,828 created, 0 updated, 0 skipped. Time: 4.2s

```

You can also import by region or everything at once:

```
php artisan university-directory:import --region=europe
php artisan university-directory:import --all
```

### List Universities

[](#list-universities)

```
php artisan university-directory:list --country=DE --type=university --search=Munich --limit=5
```

```
+----+--------------------------------------+------------+---------+------------+------------------------------------------+
| ID | Name                                 | Short Name | Country | Type       | Slug                                     |
+----+--------------------------------------+------------+---------+------------+------------------------------------------+
| 12 | Technical University of Munich        | TUM        | DE      | university | technical-university-of-munich            |
| 45 | Ludwig Maximilian University of Munich| LMU        | DE      | university | ludwig-maximilian-university-of-munich    |
| 78 | Munich University of Applied Sciences | MUAS       | DE      | university | munich-university-of-applied-sciences     |
+----+--------------------------------------+------------+---------+------------+------------------------------------------+

Showing 3 of 3 universities.

```

### Show Statistics

[](#show-statistics)

```
php artisan university-directory:stats
```

```
University Directory Stats
--------------------------
Total universities: 60,312
Countries: 183
Types: university (45,210), college (8,430), institute (4,512), academy (2,160)
Top countries: US (7,236), IN (5,018), JP (3,412), GB (164), DE (428)
Last updated: 2026-02-27 10:15:00

```

### Sync Remote Data

[](#sync-remote-data)

For maintainers — fetch fresh data from the remote source into local bundled files:

```
php artisan university-directory:sync DE US --retries=5
php artisan university-directory:sync --all
```

```
 2/2 [============================] 100%

+---------+--------------+--------+
| Country | Universities | Status |
+---------+--------------+--------+
| DE      | 428          | OK     |
| US      | 7,236        | OK     |
+---------+--------------+--------+

Sync complete. 2 succeeded, 0 failed.

```

Publishing Migrations
---------------------

[](#publishing-migrations)

To customize the migration:

```
php artisan vendor:publish --tag=university-directory-migrations
```

Testing
-------

[](#testing)

```
composer test
```

License
-------

[](#license)

MIT

###  Health Score

39

—

LowBetter than 85% of packages

Maintenance92

Actively maintained with recent releases

Popularity14

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

3

Last Release

70d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/efc5fd21c67b5db1eed6043059f9c0cbce14f9f252ffbf9935ac7a35d7ca7665?d=identicon)[tisuchi](/maintainers/tisuchi)

---

Top Contributors

[![tisuchi](https://avatars.githubusercontent.com/u/2137978?v=4)](https://github.com/tisuchi "tisuchi (37 commits)")

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/tisuchi-university-directory/health.svg)

```
[![Health](https://phpackages.com/badges/tisuchi-university-directory/health.svg)](https://phpackages.com/packages/tisuchi-university-directory)
```

###  Alternatives

[fumeapp/modeltyper

Generate TypeScript interfaces from Laravel Models

196277.9k](/packages/fumeapp-modeltyper)[slowlyo/owl-admin

基于 laravel、amis 开发的后台框架~

61214.2k26](/packages/slowlyo-owl-admin)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

255.2k](/packages/aedart-athenaeum)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
