PHPackages                             abtercms/abterphp - 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. abtercms/abterphp

AbandonedArchivedProject[Framework](/categories/framework)

abtercms/abterphp
=================

PHP implementation of AbterCMS based on the Opulence framework

01[23 issues](https://github.com/abtercms/abterphp/issues)[2 PRs](https://github.com/abtercms/abterphp/pulls)PHP

Since Jun 29Pushed 3y ago1 watchersCompare

[ Source](https://github.com/abtercms/abterphp)[ Packagist](https://packagist.org/packages/abtercms/abterphp)[ RSS](/packages/abtercms-abterphp/feed)WikiDiscussions main Synced 3d ago

READMEChangelogDependenciesVersions (4)Used By (0)

AbterPHP
========

[](#abterphp)

[![Build Status](https://github.com/abtercms/abterphp/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/abtercms/abterphp/actions)

AbterPHP is the first and currently the only implementation of AbterCMS, providing backend, frontend and a REST API for it. It does not require much JavaScript knowledge as it uses jQuery instead of some nodejs based solution, therefore many might find it easier to learn, maintain or deploy.

It is based on the excellent [Opulence](https://www.opulencephp.com/) framework.

Why another CMS?
----------------

[](#why-another-cms)

The system has 3 reasons to exist:

1. Provide an easily accessible alternative to anyone who needs a truly simple website.
2. Educational purposes.
3. Provide a reasonably solid base for dev-shops that have PHP resources now, but want to keep their tech stack open for change.

You'll find more information on design decisions on the website.

AbterCMS
--------

[](#abtercms)

AbterCMS is a polyglot CMS system which is meant to provide both easily customizable, maintainable and deployable website solutions for simple use cases, and also a solid base for startups iterating over ideas fast.

It is planned that there will be at least a Go API and some nodejs based backend and frontend solution. (Elm, Vue or React most likely.)

Status
------

[](#status)

AbterPHP backend and frontend are almost feature complete, but the API is not stable, not complete and not properly tested yet. The code coverage is already quite good, around 95% overall. Documentation is at very early stages. Therefore the current status is **Pre-alpha**.

ModuleGithub Actions Build StatusScrutinizer Code QualityScrutinizer Build StatusCoverage Status[Framework](https://github.com/abterphp/framework)[![Build Status](https://github.com/abterphp/framework/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/abterphp/framework/actions)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/ec4e005a95e9583cff3e264699bd70c5d33afcb314a24a043d496585a8c812ad/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61627465727068702f6672616d65776f726b2f6261646765732f7175616c6974792d73636f72652e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/abterphp/framework/?branch=main)[![Build Status](https://camo.githubusercontent.com/4fb48d1db505ccde60903ef06ddbad335daf66ebdab3fd109757c3a2bc8beb07/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61627465727068702f6672616d65776f726b2f6261646765732f6275696c642e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/abterphp/framework/build-status/main)[![Coverage Status](https://camo.githubusercontent.com/14d21cfea12f0cd183cc76ddc64174011068e15e8b1e313ca01fbae198d2f658/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f61627465727068702f6672616d65776f726b2f62616467652e737667)](https://coveralls.io/github/abterphp/framework)[Admin](https://github.com/abterphp/admin)[![Build Status](https://github.com/abterphp/admin/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/abterphp/admin/actions)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/308cfd2aece8d0aff28d80cf6a9183914220290bc1fb2cf3776173e0bb05cdca/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61627465727068702f61646d696e2f6261646765732f7175616c6974792d73636f72652e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/abterphp/admin/?branch=main)[![Build Status](https://camo.githubusercontent.com/3bf993048550d0c5bfbd61065600a7a61d1e64ce474dfd235a3896ec2e825f34/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61627465727068702f61646d696e2f6261646765732f6275696c642e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/abterphp/admin/build-status/main)[![Coverage Status](https://camo.githubusercontent.com/fda9184510abc9092d8fe12653675bb924cab23a33c978c83a1859663c04c676/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f61627465727068702f61646d696e2f62616467652e737667)](https://coveralls.io/github/abterphp/admin)[Website](https://github.com/abterphp/website)[![Build Status](https://github.com/abterphp/website/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/abterphp/website/actions)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/a4c588a2f5ae5bdabe2ab3fb049abfa0dd14f1e574fe00caf6c44c7453d748f6/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61627465727068702f776562736974652f6261646765732f7175616c6974792d73636f72652e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/abterphp/website/?branch=main)[![Build Status](https://camo.githubusercontent.com/192c0512a07f22e82abdab9192237f750ecf7860b3f788c5dcdee05789268751/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61627465727068702f776562736974652f6261646765732f6275696c642e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/abterphp/website/build-status/main)[![Coverage Status](https://camo.githubusercontent.com/7dba6cfc801b7fa2d22f8d5aef564323255e05b10391b597182b76cb97df60c7/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f61627465727068702f776562736974652f62616467652e737667)](https://coveralls.io/github/abterphp/website)[Contact](https://github.com/abterphp/contact)[![Build Status](https://github.com/abterphp/contact/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/abterphp/contact/actions)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/92f27ad4d018cd451eb528e24d7c0e3433ee8bef3d0d66e8901ac6c955afb425/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61627465727068702f636f6e746163742f6261646765732f7175616c6974792d73636f72652e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/abterphp/contact/?branch=main)[![Build Status](https://camo.githubusercontent.com/9462c64732d0fe3431e46738e864ea175eea67ba32b691ab21d416e371b0efab/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61627465727068702f636f6e746163742f6261646765732f6275696c642e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/abterphp/contact/build-status/main)[![Coverage Status](https://camo.githubusercontent.com/bcd867233a3e32538bbcbcd54a3a9ea6029743179e846a23acc80abc803660c2/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f61627465727068702f636f6e746163742f62616467652e737667)](https://coveralls.io/github/abterphp/contact)[Files](https://github.com/abterphp/files)[![Build Status](https://github.com/abterphp/files/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/abterphp/files/actions)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/320cd9234f56859c8726ffc245376b28794dc1b000f323311d0d19ec3b3dd000/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61627465727068702f66696c65732f6261646765732f7175616c6974792d73636f72652e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/abterphp/files/?branch=main)[![Build Status](https://camo.githubusercontent.com/c1ecb589375b738424ea3af1a072bf38107343c5450a5b455fcff33f5fec995c/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61627465727068702f66696c65732f6261646765732f6275696c642e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/abterphp/files/build-status/main)[![Coverage Status](https://camo.githubusercontent.com/3c43699d7223c8495d18753d81073a7ef356071dbc29c88532eb5448596f2682/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f61627465727068702f66696c65732f62616467652e737667)](https://coveralls.io/github/abterphp/files)[Bootstrap4Website](https://github.com/abterphp/bootstrap4-website)[![Build Status](https://github.com/abterphp/bootstrap4-website/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/abterphp/bootstrap4-website/actions)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/4ea7bb7c3c9e4b2771f3d3c62063b3f55571aaa6f1ee1cd2e15fa44ca922e371/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61627465727068702f626f6f747374726170342d776562736974652f6261646765732f7175616c6974792d73636f72652e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/abterphp/bootstrap4-website/?branch=main)[![Build Status](https://camo.githubusercontent.com/af870a5446d52aaba060825bc94193807fe2643aefc29c6fd4a1724c3d919b1e/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61627465727068702f626f6f747374726170342d776562736974652f6261646765732f6275696c642e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/abterphp/bootstrap4-website/build-status/main)[![Coverage Status](https://camo.githubusercontent.com/9e08767bea4ce792c79f2c98af217b2cec6cac1748d421cf23ae3b28f349e73e/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f61627465727068702f626f6f747374726170342d776562736974652f62616467652e737667)](https://coveralls.io/github/abterphp/bootstrap4-website)[PropellerAdmin](https://github.com/abterphp/propeller-admin)[![Build Status](https://github.com/abterphp/propeller-admin/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/abterphp/propeller-admin/actions)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/0145ad5efe28c8b4d531b2b63a44e02bffbcd52c2d6711cb9409164a85102356/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61627465727068702f70726f70656c6c65722d61646d696e2f6261646765732f7175616c6974792d73636f72652e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/abterphp/propeller-admin/?branch=main)[![Build Status](https://camo.githubusercontent.com/53a906e7ac0f279447ae51d0568e0009e784103511b43da26bb9de6d740c8bfa/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f61627465727068702f70726f70656c6c65722d61646d696e2f6261646765732f6275696c642e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/abterphp/propeller-admin/build-status/main)[![Coverage Status](https://camo.githubusercontent.com/00ba26a781e876f5a8b6f2fff797ab4b8dc34c7eac08f4876bcac6d478825280/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f61627465727068702f70726f70656c6c65722d61646d696e2f62616467652e737667)](https://coveralls.io/github/abterphp/propeller-admin)Installation
------------

[](#installation)

### Development

[](#development)

#### Pre-requisite: Grab the source code

[](#pre-requisite-grab-the-source-code)

This should be fairly obvious if you're reading it, but feel free to download the code from Github or clone the repository. Just use the "Clone or download" button to get you started.

#### Pre-requisite: Install [docker](https://docker.com/)

[](#pre-requisite-install-docker)

The recommended way of getting started with the AbterPHP is via docker. While it is not necessarily mandatory, some of the documentation might assume that all developers use `docker` for development. If you want to run the code, you'll have to ensure that you have the right version of PHP, with the neccessary modules and that you have at least a supported version of MySQL (or later PostgreSQL). While having Redis or Memcached is great, those are not mandatory.

#### Pre-requisite: Install [mkcert](https://mkcert.dev/)

[](#pre-requisite-install-mkcert)

Since security is a top priority, pure http is not supported out of the box, therefore you'll need to install a certificate. The recommended way is using `mkcert`. While it is not necessarily mandatory, some of the documentation might assume that all developers use `mkcert` for development.

#### Pre-requisite: Open the project in a console

[](#pre-requisite-open-the-project-in-a-console)

The rest of the installation documentation will assume that `.` is the root directory of the project.

#### Pre-requisite: Fetch submodules

[](#pre-requisite-fetch-submodules)

To make sure you can use docker as your development platform, you should make sure to have all the configs associated.

```
git submodule update --init --recursive
```

Later, to update the submodules, use the following git command:

```
git submodule update --remote
```

#### Pre-requisite: Add abtercms.test as localhost in `/etc/hosts` on Linux and OSX or `???` on Windows.

[](#pre-requisite-add-abtercmstest-as-localhost-in-etchosts-on-linux-and-osx-or--on-windows)

```
# /etc/hosts
# [...]
127.0.0.1	abtercms.test
```

#### Create certificate

[](#create-certificate)

Since security is a top priority, you'll need to create a certificate and move it into `docker/nginx/certs/`

```
mkcert abtercms.test "*.abtercms.test"
mv abtercms.test+1* ./docker/nginx/certs/
```

#### Set some permissions

[](#set-some-permissions)

```
chmod -R 0777 ./tmp ./public/tmp
chmod +x apex
```

#### Spin up the containers

[](#spin-up-the-containers)

```
docker-compose pull
docker-compose up -d

```

#### Install the dependencies

[](#install-the-dependencies)

To install dependencies, we recommend running `make` from inside the PHP container:

```
docker-compose exec cli make
```

#### Ensure your settings are sane

[](#ensure-your-settings-are-sane)

Although we try to provide a reasonable set of settings for getting started quickly, at this point you may want to edit `config/environment/.env.app.php` to make your settings sane for your needs. Please note however that these values can be and in some cases will be overwritten by your environment variables. This means that if you are running the system with `docker-compose` than you might need to edit some of these values in `docker-compose.yml`.

If you do not have the file `config/environment/.env.app.php` then something must have gone wrong in the previous step, because it should be created during `php composer.phar install`.

More documentation on the settings will be written later.

#### Install the db schema and create a new admin user

[](#install-the-db-schema-and-create-a-new-admin-user)

You need to log into the PHP container (again) run migrations and create a user.

*Note:* That AbterPHP uses [zxcvbn-php](https://github.com/bjeavons/zxcvbn-php) to verify password strength. This is a modern library that does not enforce rules like using numbers and smaller and upper case characters nor does it simply count characters. E.g `ryvenglotbutnofasewordpass` is a strong password, but `verylongbutnotsafepassword` is not. (To help migrating users from other systems, it is possible to create users using weak password with the `--unsafe` argument.)

```
docker-compose exec php sh
> ./apex migrations:up
> ./apex user:create {username} {email} {strongPassword} admin en
> exit

```

If everything went well, you should be able to log in with your new user at `https://abtercms.test/login-iddqd`, given that you haven't yet changed your `ADMIN_LOGIN_PATH` environment variable in `config/environment/.env.app.php`.

### Production

[](#production)

Since AbterPHP is in **Early Preview** state, you probably shouldn't deploy it to production at the moment.

Stack
-----

[](#stack)

AbterPHP is based on [Opulence](https://www.opulencephp.com/), but uses a few more projects alongside Opulence:

- [Monolog](https://seldaek.github.io/monolog/) for logging
- [Whoops](https://filp.github.io/whoops/) for error reporting in non-production environments
- [Flysystem](https://flysystem.thephpleague.com/docs/) for handling filesystem (incomplete implementation)
- [Casbin](https://casbin.org/) for authorization
- [Minify](https://www.minifier.org/) for minifying assets (Website module)
- [Swiftmailer](https://swiftmailer.symfony.com/) for sending emails (Contact module)
- [Slugify](https://github.com/cocur/slugify) for creating web-safe identifiers (Admin module)
- [jQuery](https://jquery.com/) for most of the JavaScript in place (Admin module)
- [js-sha3](https://github.com/emn178/js-sha3) for browser-side encryption (Admin module)
- [Trumbowyg](https://alex-d.github.io/Trumbowyg/documentation/) as a wysiwyg solution (Admin module)
- [zxcvbn](https://github.com/dropbox/zxcvbn) from Dropbox for password strength estimations (Admin module)
- [zxcvbn-php](https://github.com/bjeavons/zxcvbn-php) PHP version of `zxcvbn` (Admin module)
- [OAuth 2.0 Server](https://oauth2.thephpleague.com/authorization-server/client-credentials-grant/) for API authentication and authorization with [Nyholm/psr7](https://github.com/Nyholm/psr7) as PSR-7 request / response library.

If you want to contribute code you'll also need to get familiar with these tools:

- [PhpUnit](https://phpunit.de/) for unit tests
- [vfsStream](https://github.com/mikey179/vfsStream) for mocking the filesystem
- [PHP\_CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) for code formatting
- [PHPMD - PHP Mess Detector](https://phpmd.org/) for code quality

AbterPHP currently only supports MySQL as the database system, although PostgreSQL support is very likely to happen before the first stable version.

Roadmap
-------

[](#roadmap)

### First alpha musts:

[](#first-alpha-musts)

1. Make the frontend framework decoupled from the backend system
2. Use ILogger instead of Logger
3. More fine grained authorization
    - ACL implemented for pages
    - Advanced settings access role for pages
    - Multiple user group for one user
    - New user roles: file uploader, layout designer, page writer
4. Modular asset management
5. Completed test automation and automatic reviews set up
6. Refactored module manager
7. Ensured that user creation enforces good passwords in CLI.
8. Uuid ids
9. Removed $value in Select constructor
10. Switch `$attribute` and `$tag` order
11. 1 nice website module
12. Page category
13. Re-add navigation item filtering by enforcer
14. Fix grids:
    - Filter labels
    - Page size selections
    - Sorting
    - Hide IDs
15. Separate grid and form assets in admin
16. API keys for users
17. Fix forms:
    - "Red" / "Danger" Back to list buttons
    - Create and new button
18. Initial API defined and published
19. Documentation page exists
20. All implemented API endpoints return properly formatted errors
21. Optionally embed file content into getFile API endpoint
22. Disable block cache for development
23. List pages on frontend by category (simple)
24. List pages on frontend by category (detailed)
25. Upgrade to phpunit 8.4
26. 70%+ of PHP source code unit tested, except for bootstrappers and console commands
27. Tested project on OSX
28. Fix file uploads
29. File category identifiers
30. File category public/private
31. Page structure name
32. Fix page publication
33. Login errors displayed
34. Fix filters
35. Verified that `localhost_router.php` works as expected or remove it if too hard to fix
36. API verified against Zalando REST API recommendations
37. Tested project on Windows 10+

### First beta musts:

[](#first-beta-musts)

1. Existing phpmd ignore cases reviewed
2. Client creation via CLI
3. Optionally embed rendered page body parameter
4. 1st nice website module
5. Must-accept-cookie module
6. 2nd nice website module
7. 3rd nice website module
8. API implemented
9. 1 grid is covered with acceptance tests (filters, pagination included)
10. 1 form is covered with acceptance tests (displaying with new and existing entity and saving included)
11. Highlight form fields with validation errors
12. 12-factor compliance reviewed and improvements planned
13. Reviewed and refactored global `$abterModuleManager` usage
14. Test loading entities that don't exist or faulty
15. Fix empty exceptions (\\LogicException, \\RuntimeException, \\InvalidArgumentException)
16. Ensure identifiers do not contain a comma (explode issue)
17. 70%+ of JS source code unit tested
18. Enable `Generic.Commenting.DocComment` phpcs rules
19. Improve validation
    - Review validation factories
    - Create new validation rules where needed
20. Cached translations
21. Documentation covers getting started and main design goals
22. Fix sidebar propeller "bug"
23. Cache navigation for user
24. Enable/Disable modules from console
25. Setup wizard (admin user + security settings)
26. Revoke token endpoint
27. Scope checks during serving API calls
28. RSS feeds
29. Default image for pages
30. Improved security implementing related headers as recommended:
    -
    -
31. Logs don't have to be local files
32. Page should use Layout as entity -&gt; Fix getGridQuery::PageSqlDataMapper

### 1.0 musts:

[](#10-musts)

1. API designed finalized (community input?)
2. API test complete
3. Acceptance tests for main use cases of each module
4. All grids, paginations, filters covered with acceptance tests
5. Displaying and saving of all forms and proper returns covered with acceptance tests
6. Refactored helpers
7. AbterPhp\\Framework\\Form\\Factory\\Base::getMultiSelectSize -&gt; move to helper or Select
8. Refactored configs
9. Refactored bootstrappers (again)
    - Use Config Provider to remove bootstrappers
    - Validators registered in framework
10. All constants reviewed
11. Documentation "complete"
12. 12-factor compliance clearly stated
13. More useful dashboard (community input?)
14. Enable `ONLY_FULL_GROUP_BY` in `mysql.conf`
15. Refactor
    - `AbterPhp\Framework\Html\Collection`
    - `AbterPhp\Framework\Html\Helper\ArrayHelper::formatAttribute`
    - Classes with CouplingBetweenObjects over a 15-20 (TBD)
    - `AbterPhp\Framework\Module\Manager`
16. Proper maintenance handling
17. Consider caching processed module data

Ideas
-----

[](#ideas)

### Ideas for 1.0:

[](#ideas-for-10)

- Smoke tests with data generators
- PostgreSQL support
- Forgotten password feature
- 2FA feature
    -
    -
    -
    - [https://medium.com/@richb\_/easy-two-factor-authentication-2fa-with-google-authenticator-php-108388a1ea23](https://medium.com/@richb_/easy-two-factor-authentication-2fa-with-google-authenticator-php-108388a1ea23)
    -
- Serverless support
    - S3 usage as filesystem?
- Contact form table holding contact details
- Simple blog module
- Pick new frontend framework for backend system and implement it
- Actions to extend Cell
- `binary(16)` ids instead of `char(36)`
    - Needs MySQL 8.0 `BIN_TO_UUID` and `UUID_TO_BIN` support
    - Needs query builder support (although not a must)
- Setup [codeclimate.com](https://codeclimate.com/) properly
- Ask about discarding changes when using the Back to List button
- Icons for Grid and Form buttons
- Website entity to support multipage setups
- Frontend language selection

### Ideas for 1.1:

[](#ideas-for-11)

- WYSIWYG file selector
- WYSIWYG image upload
- User image upload
- Cleanup HTML templates
- Protected pages (Pages only accessible logged in)

### Long tail:

[](#long-tail)

- Opulence authorization (instead of or on top of Casbin)

###  Health Score

16

—

LowBetter than 5% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity1

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity33

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.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/47573042?v=4)[abtercms](/maintainers/abtercms)[@abtercms](https://github.com/abtercms)

---

Top Contributors

[![peteraba](https://avatars.githubusercontent.com/u/1675360?v=4)](https://github.com/peteraba "peteraba (224 commits)")

### Embed Badge

![Health badge](/badges/abtercms-abterphp/health.svg)

```
[![Health](https://phpackages.com/badges/abtercms-abterphp/health.svg)](https://phpackages.com/packages/abtercms-abterphp)
```

###  Alternatives

[laravel/telescope

An elegant debug assistant for the Laravel framework.

5.2k67.8M192](/packages/laravel-telescope)[spiral/roadrunner

RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins

8.4k12.2M84](/packages/spiral-roadrunner)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M259](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

708181.8M596](/packages/laravel-prompts)[cakephp/chronos

A simple API extension for DateTime.

1.4k47.7M121](/packages/cakephp-chronos)

PHPackages © 2026

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