PHPackages                             contributte/apitte-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. [API Development](/categories/api)
4. /
5. contributte/apitte-skeleton

ActiveProject[API Development](/categories/api)

contributte/apitte-skeleton
===========================

🎁 API / REST API / JSON API / PSR-7 / Middlewares project skeleton based on Nette Framework (@nette), Apitte (@apitte), Doctrine (@nettrine) and Contributte (@contributte) libraries by @f3l1x.

44510↓100%19[3 issues](https://github.com/contributte/apitte-skeleton/issues)[5 PRs](https://github.com/contributte/apitte-skeleton/pulls)PHPCI passing

Since Nov 24Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/contributte/apitte-skeleton)[ Packagist](https://packagist.org/packages/contributte/apitte-skeleton)[ RSS](/packages/contributte-apitte-skeleton/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (9)Used By (0)

[![](https://camo.githubusercontent.com/ec45d9f77182857685a849a32854e8ed353433d504ce8a9b42a868a513cd8b67/68747470733a2f2f686561746261646765722e6e6f772e73682f6769746875622f726561646d652f636f6e74726962757474652f6170697474652d736b656c65746f6e2f)](https://camo.githubusercontent.com/ec45d9f77182857685a849a32854e8ed353433d504ce8a9b42a868a513cd8b67/68747470733a2f2f686561746261646765722e6e6f772e73682f6769746875622f726561646d652f636f6e74726962757474652f6170697474652d736b656c65746f6e2f)

 [![](https://camo.githubusercontent.com/f3a08389df82289ac09e46baf84487e42a83c19dfa6a1b7f407e17e35042c75a/68747470733a2f2f62616467656e2e6e65742f6769746875622f636865636b732f636f6e74726962757474652f6170697474652d736b656c65746f6e2f6d6173746572)](https://github.com/contributte/apitte-skeleton/actions) [![](https://camo.githubusercontent.com/96f86190efb146eefe65b78acaac358610b9b9b6e826f81dbdb5f67b6f1eed97/68747470733a2f2f62616467656e2e6e65742f636f6465636f762f632f6769746875622f636f6e74726962757474652f6170697474652d736b656c65746f6e)](https://codecov.io/gh/contributte/apitte-skeleton) [![](https://camo.githubusercontent.com/99d2eaa4a2f7e4f566938004d8d8b002d71874fd35bbefbdb71dcf52793ef9ae/68747470733a2f2f62616467656e2e6e65742f7061636b61676973742f646d2f636f6e74726962757474652f6170697474652d736b656c65746f6e)](https://packagist.org/packages/contributte/apitte-skeleton) [![](https://camo.githubusercontent.com/56fbb4909889c897395b78d108e561a5f0a92f8a92be08ccefe8f8f29779d6b2/68747470733a2f2f62616467656e2e6e65742f7061636b61676973742f762f636f6e74726962757474652f6170697474652d736b656c65746f6e)](https://packagist.org/packages/contributte/apitte-skeleton)

 [![](https://camo.githubusercontent.com/a6d6b3ff05db6acf0a683eefbaa052c303a85397780db2721eb4f54882a881bf/68747470733a2f2f62616467656e2e6e65742f7061636b61676973742f7068702f636f6e74726962757474652f6170697474652d736b656c65746f6e)](https://packagist.org/packages/contributte/apitte-skeleton) [![](https://camo.githubusercontent.com/eae64c5a7c9e84628146c84fd0fac3db76f318f82ffb2956fb8452f3be4c63b8/68747470733a2f2f62616467656e2e6e65742f6769746875622f6c6963656e73652f636f6e74726962757474652f6170697474652d736b656c65746f6e)](https://github.com/contributte/apitte-skeleton) [![](https://camo.githubusercontent.com/a8b1cd856d7d396fdebbe46947cc3507490acc267a02361e5e53bb7b820c95c3/68747470733a2f2f62616467656e2e6e65742f62616467652f737570706f72742f6769747465722f6379616e)](https://bit.ly/ctteg) [![](https://camo.githubusercontent.com/86d6416fc04f8bcc3daa7bf881526b9953b9726b1164d05c157c8713e3a73418/68747470733a2f2f62616467656e2e6e65742f62616467652f737570706f72742f666f72756d2f79656c6c6f77)](https://bit.ly/cttfo) [![](https://camo.githubusercontent.com/5d170ab94e6d594609561e16fe0f9e4293968fbd4dfcfafc5e11efc1415ef09c/68747470733a2f2f62616467656e2e6e65742f62616467652f73706f6e736f722f646f6e6174696f6e732f463936383534)](https://contributte.org/partners.html)

Website 🚀 [contributte.org](https://contributte.org) | Contact 👨🏻‍💻 [f3l1x.io](https://f3l1x.io) | Twitter 🐦 [@contributte](https://twitter.com/contributte)

 [![](https://camo.githubusercontent.com/cced99fb405d7731fcbe24675517760e10dd219e33e681467f96b9cbcb3ace5d/68747470733a2f2f6170692e6d6963726f6c696e6b2e696f3f75726c3d68747470732533412532462532466578616d706c65732e636f6e74726962757474652e6f72672532466170697474652d736b656c65746f6e253246266f7665726c61792e62726f777365723d6c696768742673637265656e73686f743d74727565266d6574613d66616c736526656d6265643d73637265656e73686f742e75726c)](https://camo.githubusercontent.com/cced99fb405d7731fcbe24675517760e10dd219e33e681467f96b9cbcb3ace5d/68747470733a2f2f6170692e6d6963726f6c696e6b2e696f3f75726c3d68747470732533412532462532466578616d706c65732e636f6e74726962757474652e6f72672532466170697474652d736b656c65746f6e253246266f7665726c61792e62726f777365723d6c696768742673637265656e73686f743d74727565266d6574613d66616c736526656d6265643d73637265656e73686f742e75726c)

---

Goal
----

[](#goal)

Main goal is to provide best prepared API starter-kit project for Nette-Apitte developers.

Focused on:

- PHP 8.4+
- `nette/*` packages
- build PSR-7 API via `contributte/apitte`
- Doctrine ORM via `nettrine/*`
- Symfony components via `contributte/*`
- codestyle checking via **CodeSniffer** and `contributte/qa`
- static analysing via **phpstan** and `contributte/phpstan`
- unit / integration tests via **Nette Tester** and `contributte/tester`

You can try it out yourself either by running it with docker, or more easily with docker-compose.

Demo
----

[](#demo)

Install with [docker](https://github.com/docker/docker/)
--------------------------------------------------------

[](#install-with-docker)

1. At first, use composer to install this project.

    ```
    composer create-project -s dev contributte/apitte-skeleton
    ```
2. After that, you have to setup database.

    1. Setup PostgreSQL 10. You can start it manually or use docker image `dockette/postgres:15`.

        ```
        docker run -it -p 5432:5432 -e POSTGRES_PASSWORD=contributte -e POSTGRES_USER=contributte dockette/postgres:15
        ```

        Or use make task, `make docker-postgres`.
    2. Setup MariaDB 10.4. You can start it manually or use docker image `mariadb:10.4`.

        ```
        docker run -it -d -p 3306:3306 -e MARIADB_ROOT_PASSWORD=contributte -e MARIADB_PASSWORD=contributte -e MARIADB_USER=contributte -e MARIADB_DATABASE=contributte mariadb:10.4
        ```

        Or use make task, `make docker-mariadb`.
3. Custom configuration file is located at `config/local.neon`. Edit it if you want.

    Default configuration should look like this. Pick PostgreSQL or MariaDB.

    ```
    # Host Config
    parameters:

        # Database
        database:

            # Postgres
            driver: pdo_pgsql
            host: database
            dbname: contributte
            user: contributte
            password: contributte
            port: 5432

            # MariaDB
            driver: pdo_mysql
            host: database
            dbname: contributte
            user: contributte
            password: contributte
            port: 3306
    ```
4. Ok database is now running and application is configured to connect to it. Let's create initial data.

    Run `NETTE_DEBUG=1 bin/console migrations:migrate` to create tables. Run `NETTE_DEBUG=1 bin/console doctrine:fixtures:load --append` to create first user(s).

    Or via task `make build`.
5. Start your devstack or use PHP local development server.

    You can start PHP server by running `php -S localhost:8000 -t www` or use prepared make task `make dev`.
6. Open  and enjoy!

    Take a look at:

    - \[GET\]  (Swagger format)
    - \[GET\]
    - \[GET\] [http://localhost:8000/api/v1/users?\_access\_token=admin](http://localhost:8000/api/v1/users?_access_token=admin)
    - \[GET\] [http://localhost:8000/api/v1/users/1?\_access\_token=admin](http://localhost:8000/api/v1/users/1?_access_token=admin)
    - \[GET\] [http://localhost:8000/api/v1/users/999?\_access\_token=admin](http://localhost:8000/api/v1/users/999?_access_token=admin)
    - \[GET\] [http://localhost:8000/api/v1/users/email?email=admin@admin.cz&amp;\_access\_token=admin](http://localhost:8000/api/v1/users/email?email=admin@admin.cz&_access_token=admin)
    - \[GET\]
    - \[POST\]

Install with [docker compose](https://github.com/docker/compose)
----------------------------------------------------------------

[](#install-with-docker-compose)

1. At first, use composer to install this project.

    ```
    composer create-project -s dev contributte/apitte-skeleton

    ```
2. Modify `config/local.neon` and set host to `postgres` or `mariadb`

    Default configuration should look like this. There is preconfigured database. Pick PostgreSQL or MariaDB.

    ```
    # Host Config
    parameters:

        # Database
        database:

            # Postgres
            driver: pdo_pgsql
            host: database
            dbname: contributte
            user: contributte
            password: contributte
            port: 5432

            # MariaDB
            driver: pdo_mysql
            host: database
            dbname: contributte
            user: contributte
            password: contributte
            port: 3306
    ```
3. Run `docker-compose up`
4. Open  and enjoy!

    Take a look at:

    - \[GET\]  (Swagger format)
    - \[GET\]
    - \[GET\] [http://localhost:8000/api/v1/users?\_access\_token=admin](http://localhost:8000/api/v1/users?_access_token=admin)
    - \[GET\] [http://localhost:8000/api/v1/users/1?\_access\_token=admin](http://localhost:8000/api/v1/users/1?_access_token=admin)
    - \[GET\] [http://localhost:8000/api/v1/users/999?\_access\_token=admin](http://localhost:8000/api/v1/users/999?_access_token=admin)
    - \[GET\] [http://localhost:8000/api/v1/users/email?email=admin@admin.cz&amp;\_access\_token=admin](http://localhost:8000/api/v1/users/email?email=admin@admin.cz&_access_token=admin)
    - \[POST\]
    - \[GET\] [http://localhost:8000/api/v1/static/text?\_access\_token=admin](http://localhost:8000/api/v1/static/text?_access_token=admin)
    - \[GET\] [http://localhost:8000/api/v1/error/exception?\_access\_token=admin](http://localhost:8000/api/v1/error/exception?_access_token=admin)

(Optional) REST API documentation
---------------------------------

[](#optional-rest-api-documentation)

Since we have OpenAPI specification available at `/api/public/v1/openapi/meta` you just need to add UI for it (e.g. to `www/doc` directory or as a standalone application).

Available options are:

- [Swagger UI](https://swagger.io/tools/swagger-ui/) + [themes](https://github.com/ostranme/swagger-ui-themes)
- [ReDoc](https://github.com/Redocly/redoc)
- other

Features
--------

[](#features)

Here is a list of all features you can find in this project.

- PHP 8.4+
- 📦 Packages
    - Nette 3+
    - Contributte
- 🌳 Structure
    - `app`
        - `config` - configuration files
            - `env` - prod/dev/test environments
            - `app` - application configs
            - `ext` - extensions configs
            - `local.neon` - local runtime config
            - `local.neon.dist` - template for local config
        - `domain` - business logic and domain specific classes
        - `model` - application backbone
        - `module` - API module
        - `resources` - static content for mails and others
        - `bootstrap.php` - Nette entrypoint
    - `bin` - console entrypoint (`bin/console`)
    - `db` - database files
        - `fixtures` - PHP fixtures
        - `migrations` - migrations files
    - `docs` - documentation
    - `vae`
        - `log` - runtime and error logs
        - `tmp` - temp files and cache
    - `tests` - test engine and many cases
        - `tests/cases/E2E` - PhpStorm's requests files (`api.http`)
        - `tests/cases/Integration`
        - `tests/cases/Unit`
    - `vendor` - composer's folder
    - `www` - public content
- ❗ Tracy
    - Cool error 500 page

### Composer packages

[](#composer-packages)

Take a detailed look 👀 at each single package.

- [contributte/bootstrap](https://contributte.org/packages/contributte/bootstrap.html)
- [contributte/di](https://contributte.org/packages/contributte/di.html)
- [contributte/http](https://contributte.org/packages/contributte/http.html)
- [contributte/security](https://contributte.org/packages/contributte/security.html)
- [contributte/utils](https://contributte.org/packages/contributte/utils.html)
- [contributte/tracy](https://contributte.org/packages/contributte/tracy.html)
- [contributte/console](https://contributte.org/packages/contributte/console.html)
- [contributte/neonizer](https://contributte.org/packages/contributte/neonizer.html)
- [contributte/monolog](https://contributte.org/packages/contributte/monolog.html)
- [contributte/apitte](https://contributte.org/packages/contributte/apitte.html)

**Doctrine**

- [contributte/doctrine-orm](https://contributte.org/packages/contributte/doctrine-orm.html)
- [contributte/doctrine-dbal](https://contributte.org/packages/contributte/doctrine-dbal.html)
- [contributte/doctrine-migrations](https://contributte.org/packages/contributte/doctrine-migrations.html)
- [contributte/doctrine-fixtures](https://contributte.org/packages/contributte/doctrine-fixtures.html)

**Nette**

- [nette/finder](https://github.com/nette/finder)
- [nette/robot-loader](https://github.com/nette/robot-loader)

**Symfony**

- [symfony/serializer](https://github.com/symfony/serializer)
- [symfony/validator](https://github.com/symfony/validator)

Demo
----

[](#demo-1)

[![](.docs/assets/screenshot1.png)](.docs/assets/screenshot1.png)[![](.docs/assets/screenshot2.png)](.docs/assets/screenshot2.png)[![](.docs/assets/screenshot3.png)](.docs/assets/screenshot3.png)

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

[](#development)

See [how to contribute](https://contributte.org/contributing.html) to this package.

This package is currently maintaining by these authors.

[ ![](https://avatars2.githubusercontent.com/u/538058?v=3&s=80)](https://github.com/f3l1x)---

Consider to [support](https://contributte.org/partners.html) **contributte** development team. Also thank you for using this project.

###  Health Score

33

—

LowBetter than 74% of packages

Maintenance61

Regular maintenance activity

Popularity28

Limited adoption so far

Community22

Small or concentrated contributor base

Maturity20

Early-stage or recently created project

 Bus Factor1

Top contributor holds 75.7% 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.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/538058?v=4)[Milan Šulc](/maintainers/f3l1x)[@f3l1x](https://github.com/f3l1x)

---

Top Contributors

[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (632 commits)")[![f3l1x](https://avatars.githubusercontent.com/u/538058?v=4)](https://github.com/f3l1x "f3l1x (102 commits)")[![dependabot-preview[bot]](https://avatars.githubusercontent.com/in/2141?v=4)](https://github.com/dependabot-preview[bot] "dependabot-preview[bot] (66 commits)")[![petrparolek](https://avatars.githubusercontent.com/u/6066243?v=4)](https://github.com/petrparolek "petrparolek (7 commits)")[![vanam](https://avatars.githubusercontent.com/u/2945739?v=4)](https://github.com/vanam "vanam (7 commits)")[![ohmyfelix](https://avatars.githubusercontent.com/u/261235610?v=4)](https://github.com/ohmyfelix "ohmyfelix (5 commits)")[![DepkaCZ](https://avatars.githubusercontent.com/u/4254146?v=4)](https://github.com/DepkaCZ "DepkaCZ (4 commits)")[![northys](https://avatars.githubusercontent.com/u/2878126?v=4)](https://github.com/northys "northys (3 commits)")[![artemevsin](https://avatars.githubusercontent.com/u/12592377?v=4)](https://github.com/artemevsin "artemevsin (2 commits)")[![Pryx](https://avatars.githubusercontent.com/u/5222912?v=4)](https://github.com/Pryx "Pryx (2 commits)")[![VottusCode](https://avatars.githubusercontent.com/u/53915302?v=4)](https://github.com/VottusCode "VottusCode (1 commits)")[![fxik](https://avatars.githubusercontent.com/u/216508546?v=4)](https://github.com/fxik "fxik (1 commits)")[![kalisjiriwork](https://avatars.githubusercontent.com/u/133005109?v=4)](https://github.com/kalisjiriwork "kalisjiriwork (1 commits)")[![michalhlavka](https://avatars.githubusercontent.com/u/15013378?v=4)](https://github.com/michalhlavka "michalhlavka (1 commits)")[![mstefan21](https://avatars.githubusercontent.com/u/22791905?v=4)](https://github.com/mstefan21 "mstefan21 (1 commits)")

---

Tags

apiapittecontributtenette-frameworknettrineprojectprojecttetemplate

### Embed Badge

![Health badge](/badges/contributte-apitte-skeleton/health.svg)

```
[![Health](https://phpackages.com/badges/contributte-apitte-skeleton/health.svg)](https://phpackages.com/packages/contributte-apitte-skeleton)
```

###  Alternatives

[stripe/stripe-php

Stripe PHP Library

4.0k143.3M475](/packages/stripe-stripe-php)[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M270](/packages/twilio-sdk)[knplabs/github-api

GitHub API v3 client

2.2k15.8M186](/packages/knplabs-github-api)[facebook/php-business-sdk

PHP SDK for Facebook Business

90121.9M33](/packages/facebook-php-business-sdk)[microsoft/microsoft-graph

The Microsoft Graph SDK for PHP

65723.5M95](/packages/microsoft-microsoft-graph)[meilisearch/meilisearch-php

PHP wrapper for the Meilisearch API

73813.7M114](/packages/meilisearch-meilisearch-php)

PHPackages © 2026

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