Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Framework Laravel Package

gemadigital/framework

gemadigital/framework is a Laravel/PHP package from GemaDigital that provides a structured framework foundation for building applications, with reusable components and conventions to streamline development. It is lightweight and designed for easy adoption in Laravel projects.

View on GitHub
Deep Wiki
Context7

Getting Started

Before writing any application code, verify what the package actually is. gemadigital/framework is described only as "Laravel Framework", has 2 stars and zero dependents, so treat it as a fork/repackaging of laravel/framework until proven otherwise (it may also bundle house conventions such as base Application, service providers, or config defaults). The first five minutes should be spent answering that question:

  1. Read the manifest. composer show gemadigital/framework and open vendor/gemadigital/framework/composer.json. Look at replace, provide, conflict, the illuminate/* version constraints, and extra.laravel.providers / extra.laravel.aliases. A replace: {"laravel/framework": "*"} confirms it is a drop-in fork; extra.laravel.providers confirms it ships auto-registered providers.
  2. Diff against upstream. git clone the repo (or point at the vendor dir) and diff src/ against the matching laravel/framework tag. Pay special attention to src/Illuminate/Foundation/Application.php, config/app.php, and anything under src/Illuminate/Support.
  3. Check the tag you install. The latest release is dated 2025-04-27 — pin an explicit version ("gemadigital/framework": "^{version}"), never dev-main or *.
  4. Smoke-test in a throwaway app. composer create-project laravel/laravel demo, then remove laravel/framework and require this package. Run php artisan about, php artisan route:list, and the test suite before touching a real project.

The realistic first use case is internal standardisation: one company-wide Laravel base so every app gets the same config defaults, helpers, macros, and base test case without copy-pasting a skeleton. If your need is simply "Laravel", use upstream laravel/framework — it is patched, documented, and supported. Adopt this only if you specifically want Gema Digital's deltas or you are already inside that ecosystem.

Implementation Patterns

Drop-in replacement (most common). Because it almost certainly replaces laravel/framework, you swap one line in composer.json, not your whole bootstrap:

"require": {
    "php": "^8.2",
    "gemadigital/framework": "^1.0"
}

Then composer update gemadigital/framework laravel/framework --with-dependencies and run composer why laravel/framework to confirm nothing still pulls the upstream package. Your bootstrap/app.php (Application::configure(...) on Laravel 11+) should be unchanged unless the fork alters the Application contract — diff it first.

Version-lock discipline. Mirror the upstream tag the fork is based on in a comment or docs/framework-version.md. When laravel/framework ships a security release, you need to know instantly whether the fork has it. Wire a CI job that runs composer outdated plus a manual check of the upstream changelog between the fork's tag date and today.

Base-application pattern. If the fork exposes customisation hooks, subclass once per project rather than editing vendor code:

// app/Application.php
namespace App;

class Application extends \Gemadigital\Framework\Foundation\Application
{
    protected function bootstrapPath(): string
    {
        return $this->basePath('bootstrap');
    }
}

…and reference it from bootstrap/app.php. This keeps upgrades cheap: your customisation lives in app/, the fork stays pristine in vendor/.

Provider/config extension. Use mergeConfigFrom() in a project provider to layer your own overrides on top of whatever defaults the fork ships, instead of publishing and editing config files:

public function register(): void
{
    $this->mergeConfigFrom(__DIR__.'/../config/overrides.php', 'app');
}

Register macros (Str::macro, Collection::macro, Route::macro) in a single MacroServiceProvider so they are grep-able and testable, rather than scattered across the fork's helpers.

Test harness alignment. If the fork ships a base TestCase or RefreshDatabase variant, extend it in tests/TestCase.php — do not import it directly in dozens of test files. That gives you one place to switch back to Illuminate\Foundation\Testing\TestCase if you ever abandon the fork.

CI matrix. Run tests against both this fork and the corresponding upstream tag. If they diverge, you learn it before production does. A composer update --prefer-lowest job catches constraint problems early.

Gotchas and Tips

  • replace semantics bite. If the fork replaces laravel/framework, any transitive package requiring laravel/framework: ^11.0 will resolve to the fork's version — but only if the fork's constraint satisfies it. Mismatched constraints produce bizarre Composer errors. Diagnose with composer why-not laravel/framework and composer show --tree.
  • Security advisories won't mention this package. composer audit and GitHub advisories target laravel/framework. You are responsible for tracking upstream CVEs manually; add a calendar reminder tied to upstream release cadence.
  • Two stars, zero dependents. There is effectively no community, no Stack Overflow coverage, and no guarantee of maintenance. Vendor the source or fork it into your own org before depending on it in production; do not assume the 2025-04-27 release is the last blocker — assume it might be.
  • Illuminate component skew. If the fork pins illuminate/support to an older minor than an unrelated package expects, you get "class not found" or signature-mismatch fatals deep in a request. composer show illuminate/* and compare versions across the tree.
  • Both packages installed accidentally. A composer require in a sub-package can drag upstream back in. composer why laravel/framework returning a non-empty list after install is a red flag; resolve with replace or an explicit conflict in your root composer.json.
  • Debug boot issues with artisan about. Laravel 11's about command prints the framework version, providers, and config cache status — the fastest way to confirm the fork is actually the booted framework and not upstream.
  • Clear caches after swapping. php artisan config:clear route:clear view:clear and delete bootstrap/cache/*.php. Stale compiled config referencing upstream class names causes "target class does not exist" errors that look like fork bugs.
  • Config cache hides mergeConfigFrom mistakes. Test with config cached (php artisan config:cache) in CI; merges that work in dev can silently lose keys when cached.
  • Extension points to prefer. Composer extra.laravel.providers auto-discovery, Application::configure() callbacks, and package discovery are stable across forks. Editing vendor/ or relying on undocumented protected methods inside the fork's Application is not.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons