PHPackages                             digram/bukua-access - 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. [API Development](/categories/api)
4. /
5. digram/bukua-access

ActiveLibrary[API Development](/categories/api)

digram/bukua-access
===================

Access Bukua Edtech API services for your Laravel application

v1.0.14(7mo ago)152Apache-2.0PHPPHP ^5.6||^7.0||^8.0

Since May 9Pushed 7mo ago1 watchersCompare

[ Source](https://github.com/digram/bukua-access)[ Packagist](https://packagist.org/packages/digram/bukua-access)[ Docs](https://www.bukuaplatform.com)[ RSS](/packages/digram-bukua-access/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (15)Used By (0)

Bukua Edtech API Services for Laravel
=====================================

[](#bukua-edtech-api-services-for-laravel)

A Laravel package for integrating with Bukua Edtech API services, providing easy access to schools data.

Features
--------

[](#features)

- Authentication with Bukua API using client credentials
- Simple methods to fetch paginated schools data

Prerequisites
-------------

[](#prerequisites)

Before using this package, ensure you have:

1. **Bukua Developer Account**

    - Register as an app developer at [Bukua Platform - Development Environment](https://bukua-core.apptempest.com/login) or [Bukua Platform - Production Environment](https://app.bukuaplatform.com/login)
    - Create a **Core Access App** in the selected environment above
2. **Application Credentials**

    - Obtain your `client_id` and `client_secret` from the Bukua Developer Dashboard
3. **Laravel Application**

    - Laravel 8.x or higher
    - Composer for dependency management

Configuration
-------------

[](#configuration)

1. Add the following to your `.env` file:

```
BUKUA_CORE_ACCESS_CLIENT_ID=your-client-id
BUKUA_CORE_ACCESS_CLIENT_SECRET=your-client-secret
BUKUA_BASE_URL="https://bukua-core.apptempest.com"  # Development
# BUKUA_BASE_URL="https://app.bukuaplatform.com"    # Production
```

### Installation

[](#installation)

1. In your terminal, run

```
composer require digram/bukua-access
```

2. Clear your configuration cache by running

    ```
    # For development
    php artisan config:clear && php artisan route:clear

    # For production
    php artisan config:cache && php artisan route:cache
    ```

Usage
-----

[](#usage)

### Counties

[](#counties)

Get a paginated list of counties:

- App permission: `county_view`

```
use BukuaAccess\Facades\BukuaAccess;

try {
    $counties = BukuaAccess::counties(page: 1, per_page: 100);

    print_r($counties);
} catch (\Exception $e) {
    echo "Error: " . $e->getMessage();
}
```

### Subjects

[](#subjects)

Get a paginated list of subjects:

- App permission: `subject_view`

```
use BukuaAccess\Facades\BukuaAccess;

try {
    $subjects = BukuaAccess::subjects(page: 1, per_page: 100);

    print_r($subjects);
} catch (\Exception $e) {
    echo "Error: " . $e->getMessage();
}
```

### Academic Year / Term Dates

[](#academic-year--term-dates)

Get the current academic year and term dates

- App permission: None

```
use BukuaAccess\Facades\BukuaAccess;

try {
    $academicYear = BukuaAccess::academicYear();

    print_r($academicYear);
} catch (\Exception $e) {
    echo "Error: " . $e->getMessage();
}
```

### Schools

[](#schools)

Get a paginated list of schools:

- App permission: `school_view`

```
use BukuaAccess\Facades\BukuaAccess;

try {
    $schools = BukuaAccess::schools(page: 1, per_page: 100);

    print_r($schools);
} catch (\Exception $e) {
    echo "Error: " . $e->getMessage();
}
```

### Schools with Subjects

[](#schools-with-subjects)

Get a paginated list of schools with subjects taught:

- App permission: `school_view`

```
use BukuaAccess\Facades\BukuaAccess;

try {
    $schoolsWithSubjects = BukuaAccess::schoolsWithSubjects(page: 1, per_page: 100);

    print_r($schoolsWithSubjects);
} catch (\Exception $e) {
    echo "Error: " . $e->getMessage();
}
```

### Schools with Subject Combinations

[](#schools-with-subject-combinations)

Get a paginated list of schools with subjects combinations:

- App permission: `school_view`

```
use BukuaAccess\Facades\BukuaAccess;

try {
    $schoolsWithSubjectCombinations = BukuaAccess::schoolsWithSubjectCombinations(page: 1, per_page: 100);

    print_r($schoolsWithSubjectCombinations);
} catch (\Exception $e) {
    echo "Error: " . $e->getMessage();
}
```

### Schools with Profiles

[](#schools-with-profiles)

Get a paginated list of schools with profiles such as mission statement, fee structure, logo etc:

- App permission: `school_view`

```
use BukuaAccess\Facades\BukuaAccess;

try {
    $schoolsWithProfiles = BukuaAccess::schoolsWithProfiles(page: 1, per_page: 100);

    print_r($schoolsWithProfiles);
} catch (\Exception $e) {
    echo "Error: " . $e->getMessage();
}
```

### Schools with Departments

[](#schools-with-departments)

Get a paginated list of schools with departments:

- App permission: `school_view`

```
use BukuaAccess\Facades\BukuaAccess;

try {
    $schoolsWithDepartments = BukuaAccess::schoolsWithDepartments(page: 1, per_page: 100);

    print_r($schoolsWithDepartments);
} catch (\Exception $e) {
    echo "Error: " . $e->getMessage();
}
```

### Update Basic School Information

[](#update-basic-school-information)

Updates basic school information for a specified school.

#### Request

[](#request)

##### Required Permissions

[](#required-permissions)

- **`school_info_update`** - Application must have this permission to access the endpoint

##### Parameters

[](#parameters)

ParameterTypeRequiredDescription`school_uid`stringYesUnique identifier of the school (UUID format)`data`arrayYesArray containing the fields to update##### Supported Data Fields

[](#supported-data-fields)

FieldTypeDescription`clean_name`stringPresentable, formatted school name`short_name`stringShortened version of the clean name (for space-constrained displays)`abbreviation`stringSchool abbreviation or acronym`domain`stringSchool website domain`national_code`stringKNEC code`year_established`integerYear the school was established#### Example Usage

[](#example-usage)

```
use BukuaAccess\Facades\BukuaAccess;

try {
    $response = BukuaAccess::updateSchoolInfo(
        school_uid: 'efd8cccf-861f-4392-8e77-6a08b056e65e',
        data: [
            'domain' => 'jitahidischool',
            'clean_name' => 'Jitahidi Senior School',
            'year_established' => 2000,
        ]
    );

    print_r($response);
} catch (\Exception $e) {
    echo "Error: " . $e->getMessage();
}
```

###  Health Score

35

—

LowBetter than 80% of packages

Maintenance65

Regular maintenance activity

Popularity10

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 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 ~12 days

Recently: every ~17 days

Total

14

Last Release

211d ago

### Community

Maintainers

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

---

Top Contributors

[![digram](https://avatars.githubusercontent.com/u/29726726?v=4)](https://github.com/digram "digram (26 commits)")

---

Tags

apisbukuaedtechkenyalaravellaravelkenyaapisedtechbukua

### Embed Badge

![Health badge](/badges/digram-bukua-access/health.svg)

```
[![Health](https://phpackages.com/badges/digram-bukua-access/health.svg)](https://phpackages.com/packages/digram-bukua-access)
```

###  Alternatives

[rakibdevs/openweather-laravel-api

Laravel package to connect https://openweathermap.org/ to get customized weather data for any location on the globe immediately

7648.2k](/packages/rakibdevs-openweather-laravel-api)

PHPackages © 2026

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