PHPackages                             ragboyjr/laravel-api-skeleton - 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. [Framework](/categories/framework)
4. /
5. ragboyjr/laravel-api-skeleton

ActiveProject[Framework](/categories/framework)

ragboyjr/laravel-api-skeleton
=============================

The Laravel Framework.

v0.0.7(8y ago)012MITPHPPHP ^7.1.3

Since Mar 17Pushed 8y ago1 watchersCompare

[ Source](https://github.com/ragboyjr/laravel-api-skeleton)[ Packagist](https://packagist.org/packages/ragboyjr/laravel-api-skeleton)[ RSS](/packages/ragboyjr-laravel-api-skeleton/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (7)Dependencies (17)Versions (8)Used By (0)

Laravel API Skeleton
====================

[](#laravel-api-skeleton)

Install via:

```
composer create-project ragboyjr/laravel-api-skeleton {name}

```

Once installed, you'll want to run the following:

```
mv .editor/project.sublime-project .editor/acme-svc.sublime-project
find . -type d \( -path ./vendor -o -path ./.git \) -prune -o -type f -print -exec sed -i '' -e 's/{project}/acme-svc/g' {} \;
find . -type d \( -path ./vendor -o -path ./.git \) -prune -o -type f -print -exec sed -i '' -e 's/{project_underscore}/acme_svc/g' {} \;
find . -type d \( -path ./vendor -o -path ./.git \) -prune -o -type f -print -exec sed -i '' -e 's/{project_title}/Acme Svc/g' {} \;
find . -type d \( -path ./vendor -o -path ./.git \) -prune -o -type f -print -exec sed -i '' -e 's/{project_doctrine_ns}/Acme/g' {} \;
find ./tests -type f -print -exec sed -i '' -e 's/namespace App\\/namespace Acme\\Svc\\/g' {} \;
./artisan app:name 'Acme\Svc'
make ignored-files

```

Once completed, start docker via `docker-compose up` and run `./artisan doctrine:migrations:diff` to generate the initial migration.

Development Setup
-----------------

[](#development-setup)

1. copy over all the example files: `make ignored-files`
2. Start the docker containers: `docker-compose up`
3. Exec into the `{project}` container via `docker exec -it {project} bash`
4. Run `make setup` to initialize the repo. This will initialize all aspects of the repo, you can see what this script does by viewing the `Makefile`.

At the end of `make setup`, it should have generated a long access token, you'll need to copy that into the .env and set the `INTEGRATION_API_TOKEN` value.

To verify that you've been setup correctly, you need to run `make test` and then `make refresh-db test-integration`. These will run the entire test suite. If any fail, then there was an issue with setup that will need to be resolved.

Development
-----------

[](#development)

This app is built with Laravel and Doctrine.

### Migrations

[](#migrations)

From inside of the `{project}` container, run `./artisan doctrine:migrations:migrate` to load the database. You'll need to run this every time there is a new migration. You should be in a habit to just run migrations when you pull the latest code from `stg`.

Generating Migrations
---------------------

[](#generating-migrations)

The best way to manage migrations is by configuring the metadata yaml files first, then simply running `./artisan doctrine:migrations:diff`. This will create a migration file that will take the diff of your current local db to the migration mapping files. Keep this in mind because if you forgot to run `./artisan doctrine:migrations:migrate` to bring your local db up to the latest, running the migrations-diff command could re-apply some database changes which will **break the migrations.**

Testing
-------

[](#testing)

Unit Testing

```
make test

```

Integration Testing

```
make test-integration

```

Make sure all tests pass before pushing up.

### Workflow

[](#workflow)

The easiest way to develop with phpunit and testing is to create specific tests for whatever you are doing, and then run them individually with phpunit.

For example, if I'm working on the `tests/Integration/RepApiTest` `testApproveRepNotFound` method, I'll run inside of the docker container the following command to test only that method:

```
./vendor/bin/phpunit tests/Integration/RepAPITest.php --filter=testApproveRepNotFound

```

### Playground

[](#playground)

`playground.php` is a file that allows you to quickly prototype/test code in the current app. It's just a simple console command, but the file is ignored, so that you don't have to worry about comitting those temp changes.

You can run the playground via: `./artisan playground`.

Trouble Shooting
----------------

[](#trouble-shooting)

Here are some common errors you can get when developing and here's how to fix them.

### Status 500 in Tests

[](#status-500-in-tests)

When asserting a status code in an integration test, and you get a status 500, the easiest way to start debugging is to just check the storage/logs/laravel.log and find the exception that occurred.

### Exception: Unresolvable dependency resolving \[Parameter #0 \[ $entityName \]\] in class Doctrine\\ORM\\Mapping\\ClassMetadataInfo

[](#exception-unresolvable-dependency-resolving-parameter-0---entityname--in-class-doctrineormmappingclassmetadatainfo)

This can occur when you create a Repository class for an entity, and then type hint for the specific repository class but don't register the repository class in a service provider. To resolve this issue, you need to register the repository in the module's service provider like this:

```
addEntityRepo($this->app, Rep::class);

```

The `addEntityRepo` expects the laravel app instance and the class name of the **entity** not the repository class.

You can see examples of register repositories in the service provider in the different modules in the `app/Model` folder.

###  Health Score

23

—

LowBetter than 26% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity53

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

Total

7

Last Release

3026d ago

### Community

Maintainers

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

---

Top Contributors

[![ragboyjr](https://avatars.githubusercontent.com/u/1975857?v=4)](https://github.com/ragboyjr "ragboyjr (8 commits)")

---

Tags

frameworklaravel

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/ragboyjr-laravel-api-skeleton/health.svg)

```
[![Health](https://phpackages.com/badges/ragboyjr-laravel-api-skeleton/health.svg)](https://phpackages.com/packages/ragboyjr-laravel-api-skeleton)
```

###  Alternatives

[unopim/unopim

UnoPim Laravel PIM

10.5k2.2k](/packages/unopim-unopim)[laravel/octane

Supercharge your Laravel application's performance.

4.0k24.7M205](/packages/laravel-octane)[bagisto/bagisto

Bagisto Laravel E-Commerce

27.4k169.0k9](/packages/bagisto-bagisto)[bytefury/crater

Free &amp; Open Source Invoice App for Individuals &amp; Small Businesses. https://craterapp.com

8.3k4.2k](/packages/bytefury-crater)[microweber/microweber

New generation CMS with drag and drop

3.4k13.9k1](/packages/microweber-microweber)[nasirkhan/laravel-starter

A CMS like modular Laravel starter project.

1.4k2.7k](/packages/nasirkhan-laravel-starter)

PHPackages © 2026

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