Download the PHP package lumnd/platoadmin without Composer

On this page you can find all versions of the php package lumnd/platoadmin. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package platoadmin

PlatoAdmin

English · 中文

A back office scaffold on PlatoPHP, and the reference application for it: everything the framework documentation describes in the abstract is here as code that runs.

Two applications share one tree. admin renders Smarty templates; api is a JSON service whose controllers are generated from the contracts in api/contracts/. Both sit on the models, services and language packs under common/. Start a project from it and the parts every back office rewrites from scratch — accounts, roles, permissions, sessions, logs, menus, settings, scheduled tasks — are already there.

MIT licensed, like the framework.

Roles — a role is a set of ct:ac permissions Accounts — status and two-step state at a glance
Operation log — no delete; pruning is by age and is itself logged Sessions — the authority is the database row, not the cookie

Screens shown with seeded demo data. More: docs/assets/screenshots/

Try it: https://admin.platophp.com/ — sign in as demo / platoadmin.

The demo signs in to a read-only role, so every screen and every form opens and nothing writes; it resets to the seeded state every half hour. Two behaviours you will meet and which are not faults: a write comes back 403, and opening the form of a role that holds permissions the demo does not is refused, because an account cannot grant what it does not hold itself.

What is in it

Back office (admin)

API (api)

Shared by both

What is deliberately not in it

Not omissions — decisions, listed so nobody goes looking:

Quick start

With Docker, from nothing to a back office you can sign in to:

Then open http://admin.platoadmin.localhost:8080/. No hosts file entry is needed — the .localhost suffix is reserved for the loopback address and resolvers answer it on their own.

The compose stack is PHP 8.3-fpm, nginx, MySQL 8 and Redis 7, and it is for development only: the source is a bind mount, opcache is off and the database password is in the compose file in plain sight. docs/running.md covers it properly, including how to use an nginx you run yourself instead.

Requirements

Without Docker, running it yourself needs:

Install

Profiles

The install asks which profile you want, deletes what the answer excludes, and removes itself:

Profile What it is
minimal Back office only. No api/, no contract generation, no resident server. The dependencies come down to lumnd/platophp plus smarty/smarty and chillerlan/php-qrcode
dsl Adds api/, where endpoints are declared in api/contracts/ and both the controllers and the OpenAPI document are generated
full Adds resident server support through lumnd/plato-workerman

Answer up front to skip the question, and add --dry-run to see what would go without touching anything:

Configure

key:generate fills the three secrets that have to differ in every installation. It only writes the lines that are empty, so running it twice is safe:

To replace one that already has a value, name it: key:generate --force=JWT_SECRET, which asks first. --show prints without writing.

SYS_ENV is one of dev / pre / pub. SYS_DEBUG must be false in production — the debug panel prints the session and the cookies verbatim.

.env goes in no repository, no image and no release archive. Only .env.example and .env.testing are committed, and neither holds a real credential.

Run

There is no seeded administrator, and there will not be one. An account committed to a repository means the password is in the source and every deployment that ran the seeder shares it. In a container, pass -it to docker exec — without a tty the prompt cannot turn echo off and the password ends up in the shell history.

The two applications are two document roots: admin/public and api/public. The vhosts are in deploy/nginx/ — the compose stack mounts that directory straight into nginx, and the same files copy into an nginx you run yourself. The crontab entry is in deploy/cron/.

CSRF compares Origin against the request host and the cookie is set on that host, so serve it under a hostname rather than with php -S — 127.0.0.1:8080 works, but it is not the path production takes. A non-default port is fine: Origin and HTTP_HOST both carry it, so the two still match.

The full walk-through — the compose stack, bringing your own nginx, the database, the first account, the debug panel and a symptom table — is in docs/running.md.

Layout

Where What
admin/ Back office application, entry point admin/public/index.php
api/ API application, entry point api/public/index.php; controllers generated from api/contracts/
common/ Models, services, support and integrations shared by both, plus the language packs
database/migrations/ Schema and upgrades, the only source of the table structure
database/seeders/ Built-in data (the menu tree). No accounts
deploy/ The nginx vhosts, the crontab entry, and the images the compose stack builds
docker-compose.yml The development stack: PHP 8.3-fpm, nginx, MySQL 8, Redis 7
docs/ Project documentation
vendor/lumnd/platophp/ The framework, a Composer dependency. Never edited

What belongs in each directory, and where new code goes, is docs/structure.md. The layering and writing rules are docs/conventions.md.

The framework's own documentation is at https://platophp.com. It is not in vendor/ after a normal install — the published tags strip docs/ with .gitattributes, so the zipball Composer unpacks does not carry it. To read it offline, fetch that package from source instead:

which puts it at vendor/lumnd/platophp/docs/, entry point llms.txt.

Commands

Endpoints change in the contract and are then regenerated. Do not hand-edit api/app/control/ — api/manifest.json will stop you:

Scheduled tasks are driven by a single crontab entry on one host; locally the scheduler does not run by default:

Tests and static analysis:

Documentation

File Answers
docs/running.md How to run it, run the tests, and create the first account
docs/structure.md Which directory holds what, and where new code goes
docs/conventions.md Layering, exceptions, error codes, routing and auth, secret handling
docs/api-contract.md How a contract is written, what it generates, which files are hand-written
docs/schema.md Table conventions and the tables that exist
docs/frontend.md Back office front-end conventions
docs/storage.md File storage, uploads and bucket configuration
docs/api/openapi.json The endpoint list, generated from the contracts

The documentation is written in Chinese and published at https://lumnd.github.io/platoadmin/, which is the readable copy — it has a sidebar, a pager and a Swagger UI page for the api. docs/*.md reads fine on GitHub as it is; the same sources also build into a navigable static site with a Swagger UI page for the api. docs/site/ is not committed — CI regenerates and publishes it on every push, so changing documentation means changing Markdown, never HTML:

The build needs Node (through npx marked, pinned so two machines produce the same HTML). The Swagger UI assets are vendored in docs/assets/swagger/ rather than loaded from a CDN.

Working on PlatoAdmin itself

A plain checkout never triggers post-create-project-cmd, so install.php does not run and you get the whole tree:

CONTRIBUTING.md has the rest: the three gates, what gets a change sent back, and the style and language rules. Security problems go through SECURITY.md rather than the issue tracker.

Three things worth knowing before the first pull request:

The release process — build an artefact, migrate, move a symlink, restart the processes — is not implemented. The intended shape is current -> releases/<id> alongside a shared/, with the production .env written into shared/.env by a secret service or a protected CI variable.

Lines that do not get crossed

License

MIT, see LICENSE. PlatoPHP is MIT as well.


All versions of platoadmin with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
lumnd/platophp Version ~0.1
lumnd/plato-api-contract Version ~0.1
lumnd/plato-workerman Version ~0.1
smarty/smarty Version ^5.5
chillerlan/php-qrcode Version ^5.0
firebase/php-jwt Version ^6.10 || ^7.0
phpmailer/phpmailer Version ^6.9
workerman/workerman Version ^4.1
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package lumnd/platoadmin contains the following files

Loading the files please wait ...