PHPackages                             idoneo/humano-academy - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. idoneo/humano-academy

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

idoneo/humano-academy
=====================

Academy module for learning content and courses

v0.2.0(8mo ago)0466AGPL-3.0PHPPHP ^8.1

Since Oct 3Pushed 8mo agoCompare

[ Source](https://github.com/diego-mascarenhas/humano-academy)[ Packagist](https://packagist.org/packages/idoneo/humano-academy)[ RSS](/packages/idoneo-humano-academy/feed)WikiDiscussions main Synced 3d ago

READMEChangelogDependencies (2)Versions (4)Used By (0)

Humano Academy
==============

[](#humano-academy)

[![Latest Version on Packagist](https://camo.githubusercontent.com/9a003da4445220ee75c121a3d242074ec0192a24f9487fb339267a87d441c419/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f69646f6e656f2f68756d616e6f2d61636164656d792e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/idoneo/humano-academy)[![Total Downloads](https://camo.githubusercontent.com/dca892f3dccf6662b6d3c2251cd73be702fb185143c8be997075ee08bf58082b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f69646f6e656f2f68756d616e6f2d61636164656d792e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/idoneo/humano-academy)[![License](https://camo.githubusercontent.com/903dca6197760dab8fd2809193d5c4b30bdf2de678356d60b88893fe3f573f81/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f69646f6e656f2f68756d616e6f2d61636164656d792e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/idoneo/humano-academy)

A comprehensive Laravel package for creating and managing online courses with video lessons, chapters, progress tracking, and team-based content management.

Features
--------

[](#features)

✨ **Core Features:**

- 📚 Multi-course management with chapters and lessons
- 🎥 Video-based learning content
- 📊 Student progress tracking
- 👥 Team-based content isolation
- 🎯 Course categories and skill levels
- 🌍 Multi-language support
- 📱 Responsive UI based on Vuexy template
- 🔐 Role-based permissions (admin/student)

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

[](#requirements)

- PHP 8.1 or higher
- Laravel 10.x, 11.x, or 12.x
- MySQL/MariaDB database

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

[](#installation)

You can install the package via Composer:

```
composer require idoneo/humano-academy
```

### Publish Migrations

[](#publish-migrations)

The package uses a custom installation command to set up all required assets:

```
php artisan academy:install
```

This command will:

- Publish database migrations
- Run migrations
- Seed default permissions
- Configure the module

### Manual Installation

[](#manual-installation)

If you prefer manual installation:

```
# Publish and run migrations
php artisan vendor:publish --tag="humano-academy-migrations"
php artisan migrate

# Seed permissions
php artisan db:seed --class="Idoneo\HumanoAcademy\Database\Seeders\AcademyPermissionsSeeder"
```

Database Structure
------------------

[](#database-structure)

The package creates four main tables:

### `academy_courses`

[](#academy_courses)

Main course table with team isolation, instructor info, categories, and metadata.

### `academy_chapters`

[](#academy_chapters)

Organizes lessons into logical chapters within each course.

### `academy_lessons`

[](#academy_lessons)

Individual video lessons with duration, ordering, and status.

### `academy_user_progress`

[](#academy_user_progress)

Tracks student progress including watch time, completion status, and last position.

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

[](#configuration)

### Team Setup

[](#team-setup)

Courses are isolated by team. To create a course for a specific team:

```
use Idoneo\HumanoAcademy\Models\Course;

$course = Course::create([
    'team_id' => 1,
    'title' => 'Introduction to Laravel',
    'description' => 'Learn the basics of Laravel framework',
    'instructor_name' => 'John Doe',
    'category_id' => 1, // References categories table
    'language' => 'en', // References languages.code
    'status' => 'published',
]);
```

### Creating Chapters and Lessons

[](#creating-chapters-and-lessons)

```
use Idoneo\HumanoAcademy\Models\Chapter;
use Idoneo\HumanoAcademy\Models\Lesson;

$chapter = Chapter::create([
    'course_id' => $course->id,
    'title' => 'Getting Started',
    'order' => 1,
]);

$lesson = Lesson::create([
    'chapter_id' => $chapter->id,
    'title' => 'Installation',
    'description' => 'Learn how to install Laravel',
    'video_path' => 'lesson-1-installation.mp4', // Filename only
    'duration_minutes' => 15,
    'order' => 1,
    'status' => 'published',
]);
```

Video Management
----------------

[](#video-management)

### Storage Structure

[](#storage-structure)

Videos are stored using team-specific hashing for security and isolation:

```
storage/app/public/academy/{team_hash}/videos/
  ├── lesson-1-installation.mp4
  ├── lesson-2-routing.mp4
  └── lesson-3-controllers.mp4

```

### Generate Team Hash

[](#generate-team-hash)

```
php artisan tinker
>>> \App\Models\Team::generateTeamHash(1)
=> "a1b2c3d4e5f6"
```

### Create Storage Symlink

[](#create-storage-symlink)

```
php artisan storage:link
```

### Video URL Generation

[](#video-url-generation)

The `Lesson` model automatically generates full URLs:

```
$lesson->full_video_url
// Returns: http://your-app.test/storage/academy/{team_hash}/videos/lesson-1.mp4
```

Routes
------

[](#routes)

The package registers the following routes (protected by `web` and `auth` middleware):

```
GET  /academy                    # List all courses
GET  /academy/list               # Alternative route for menu
GET  /academy/course/{id}        # Course details with lessons
```

Models and Relationships
------------------------

[](#models-and-relationships)

### Course Model

[](#course-model)

```
// Relationships
$course->team()          // BelongsTo Team
$course->category()      // BelongsTo Category
$course->language()      // BelongsTo Language
$course->chapters()      // HasMany Chapter
$course->lessons()       // HasManyThrough Lesson

// Attributes
$course->lectures_count  // Total number of lessons
$course->total_duration  // Sum of all lesson durations

// Scopes
Course::published()      // Only published courses
Course::forTeam($teamId) // Filter by team
```

### Chapter Model

[](#chapter-model)

```
$chapter->course()       // BelongsTo Course
$chapter->lessons()      // HasMany Lesson
```

### Lesson Model

[](#lesson-model)

```
$lesson->chapter()       // BelongsTo Chapter
$lesson->full_video_url  // Computed full video URL
```

### UserProgress Model

[](#userprogress-model)

```
$progress->user()        // BelongsTo User
$progress->lesson()      // BelongsTo Lesson
$progress->course()      // BelongsTo Course (through lesson)
```

Permissions
-----------

[](#permissions)

The package includes the following permissions:

- `academy.list` - View course list
- `academy.show` - View course details
- `academy.course.details` - Access course content

Permissions are automatically assigned to the `admin` role. For students:

```
use Spatie\Permission\Models\Role;

$studentRole = Role::firstOrCreate(['name' => 'student']);
$studentRole->givePermissionTo(['academy.list', 'academy.show', 'academy.course.details']);
```

Usage Example
-------------

[](#usage-example)

### Controller Example

[](#controller-example)

```
use Idoneo\HumanoAcademy\Models\Course;

public function index()
{
    $courses = Course::published()
        ->forTeam(auth()->user()->currentTeam->id)
        ->with(['chapters.lessons', 'category', 'language'])
        ->orderBy('order')
        ->get();

    return view('your-view', compact('courses'));
}
```

### Blade Template Example

[](#blade-template-example)

```
@foreach($courses as $course)

        {{ $course->title }}
        {{ $course->description }}
        Instructor: {{ $course->instructor_name }}
        Duration: {{ $course->total_duration }} minutes
        Lessons: {{ $course->lectures_count }}

            View Course

@endforeach
```

Seeders
-------

[](#seeders)

### Create Custom Course Seeder

[](#create-custom-course-seeder)

Example seeder structure for populating courses:

```
use Idoneo\HumanoAcademy\Models\Course;
use Idoneo\HumanoAcademy\Models\Chapter;
use Idoneo\HumanoAcademy\Models\Lesson;

public function run()
{
    $course = Course::create([
        'team_id' => 1,
        'title' => 'Laravel Fundamentals',
        'description' => 'Complete Laravel course',
        'instructor_name' => 'Jane Smith',
        'category_id' => 1,
        'language' => 'en',
        'status' => 'published',
    ]);

    $chapter = Chapter::create([
        'course_id' => $course->id,
        'title' => 'Introduction',
        'order' => 1,
    ]);

    Lesson::create([
        'chapter_id' => $chapter->id,
        'title' => 'Welcome',
        'video_path' => 'welcome.mp4',
        'duration_minutes' => 10,
        'order' => 1,
        'status' => 'published',
    ]);
}
```

Frontend Assets
---------------

[](#frontend-assets)

The package uses the Vuexy admin template. Make sure you have the following assets available:

- Select2 for dropdowns
- Plyr for video playback
- Custom Academy CSS

Include in your layout:

```
@section('vendor-style')

@endsection

@section('page-style')

@endsection
```

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [IDONEO](https://idoneo.cl)
- [All Contributors](../../contributors)

License
-------

[](#license)

The GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later). Please see [License File](LICENSE.md) for more information.

Support
-------

[](#support)

- [GitHub Issues](https://github.com/idoneo/humano-academy/issues)
- [Documentation](https://github.com/idoneo/humano-academy)
- [IDONEO Website](https://idoneo.cl)

###  Health Score

31

—

LowBetter than 66% of packages

Maintenance58

Moderate activity, may be stable

Popularity15

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity36

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

Total

3

Last Release

266d ago

### Community

Maintainers

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

---

Top Contributors

[![diego-mascarenhas](https://avatars.githubusercontent.com/u/1038571?v=4)](https://github.com/diego-mascarenhas "diego-mascarenhas (6 commits)")

### Embed Badge

![Health badge](/badges/idoneo-humano-academy/health.svg)

```
[![Health](https://phpackages.com/badges/idoneo-humano-academy/health.svg)](https://phpackages.com/packages/idoneo-humano-academy)
```

###  Alternatives

[nativephp/mobile

NativePHP for Mobile

1.1k75.1k96](/packages/nativephp-mobile)[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[defstudio/telegraph

A laravel facade to interact with Telegram Bots

816333.9k3](/packages/defstudio-telegraph)[harris21/laravel-fuse

Circuit breaker for Laravel queue jobs. Protect your workers from cascading failures.

44855.7k](/packages/harris21-laravel-fuse)[cjmellor/level-up

This package allows users to gain experience points (XP) and progress through levels by performing actions on your site. It can provide a simple way to track user progress and implement gamification elements into your application

670109.6k](/packages/cjmellor-level-up)[simplestats-io/laravel-client

Server-side analytics for Laravel that follows the full funnel from visit to registration to payment, attributed to the channel that drove it. Revenue, MRR, churn and ad-spend profit (ROAS/CAC) per channel. GDPR compliant, ad-blocker proof.

5022.0k](/packages/simplestats-io-laravel-client)

PHPackages © 2026

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