Website 🚀 contributte.org | Contact 👨🏻💻 f3l1x.io | Twitter 🐦 @contributte
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.
https://examples.contributte.org/apitte-skeleton/
Install with docker
At first, use composer to install this project.
composer create-project -s dev contributte/apitte-skeleton
After that, you have to setup database.
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.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.
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 Configparameters:# Databasedatabase:# Postgresdriver:pdo_pgsqlhost:databasedbname:contributteuser:contributtepassword:contributteport:5432# MariaDBdriver:pdo_mysqlhost:databasedbname:contributteuser:contributtepassword:contributteport:3306
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:migrateto create tables. RunNETTE_DEBUG=1 bin/console doctrine:fixtures:load --appendto create first user(s).Or via task
make build.Start your devstack or use PHP local development server.
You can start PHP server by running
php -S localhost:8000 -t wwwor use prepared make taskmake dev.Open http://localhost and enjoy!
Take a look at:
- [GET] http://localhost:8000/api/public/v1/openapi/meta (Swagger format)
- [GET] http://localhost:8000/api/v1/users
- [GET] http://localhost:8000/api/v1/users?_access_token=admin
- [GET] http://localhost:8000/api/v1/users/1?_access_token=admin
- [GET] http://localhost:8000/api/v1/users/999?_access_token=admin
- [GET] http://localhost:8000/api/v1/users/email?email=admin@admin.cz&_access_token=admin
- [GET] http://localhost:8000/api/v1/static/text
- [POST] http://localhost:8000/api/v1/users/create
Install with docker compose
At first, use composer to install this project.
composer create-project -s dev contributte/apitte-skeletonModify
config/local.neonand set host topostgresormariadbDefault configuration should look like this. There is preconfigured database. Pick PostgreSQL or MariaDB.
# Host Configparameters:# Databasedatabase:# Postgresdriver:pdo_pgsqlhost:databasedbname:contributteuser:contributtepassword:contributteport:5432# MariaDBdriver:pdo_mysqlhost:databasedbname:contributteuser:contributtepassword:contributteport:3306
Run
docker-compose upOpen http://localhost and enjoy!
Take a look at:
- [GET] http://localhost:8000/api/public/v1/openapi/meta (Swagger format)
- [GET] http://localhost:8000/api/v1/users
- [GET] http://localhost:8000/api/v1/users?_access_token=admin
- [GET] http://localhost:8000/api/v1/users/1?_access_token=admin
- [GET] http://localhost:8000/api/v1/users/999?_access_token=admin
- [GET] http://localhost:8000/api/v1/users/email?email=admin@admin.cz&_access_token=admin
- [POST] http://localhost:8000/api/v1/users/create
- [GET] http://localhost:8000/api/v1/static/text?_access_token=admin
- [GET] http://localhost:8000/api/v1/error/exception?_access_token=admin
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 + themes
- ReDoc
- other
Here is a list of all features you can find in this project.
- PHP 8.4+
- 📦 Packages
- Nette 3+
- Contributte
- 🌳 Structure
appconfig- configuration filesenv- prod/dev/test environmentsapp- application configsext- extensions configslocal.neon- local runtime configlocal.neon.dist- template for local config
domain- business logic and domain specific classesmodel- application backbonemodule- API moduleresources- static content for mails and othersbootstrap.php- Nette entrypoint
bin- console entrypoint (bin/console)db- database filesfixtures- PHP fixturesmigrations- migrations files
docs- documentationvaelog- runtime and error logstmp- temp files and cache
tests- test engine and many casestests/cases/E2E- PhpStorm's requests files (api.http)tests/cases/Integrationtests/cases/Unit
vendor- composer's folderwww- public content
- ❗ Tracy
- Cool error 500 page
Take a detailed look 👀 at each single package.
- contributte/bootstrap
- contributte/di
- contributte/http
- contributte/security
- contributte/utils
- contributte/tracy
- contributte/console
- contributte/neonizer
- contributte/monolog
- contributte/apitte
Doctrine
- contributte/doctrine-orm
- contributte/doctrine-dbal
- contributte/doctrine-migrations
- contributte/doctrine-fixtures
Nette
Symfony
See how to contribute to this package.
This package is currently maintaining by these authors.
Consider to supportcontributte development team. Also thank you for using this project.


