BEdita, ready to use back-end API, extensible API-first Content Management

Overview

BEdita, a back-end API

Build Status Publish plugins Code Coverage Scrutinizer Code Quality

BEdita 4 is a ready to use back-end API to handle the data of your mobile, IoT, web and desktop applications. It's also an extensible framework to build your custom back-end API via plugins.

It provides a complete content management solution with:

  • a headless HTTP server application with a complete REST API to model, create, modify and retrieve data
  • a default admin web application BEdita Manager

BEdita 4 is built with CakePHP 3 and uses relational DBMS like MySQL, Postgres or SQLite in conjunction with (optional) NoSQL systems like Redis, Elastic Search or time series databases to boost performance and scale up to Big Data scenarios.

JSON-API is the primary exchange data format.

GrapQL initial support available via dedicated plugin.

The easiest and quickest way to try out BEdita4 is via Docker, read instructions below.

Prerequisites

  • PHP 7.2, 7.3 or 7.4 with extensions: json, mbstring, fileinfo, intl, pdo, simplexml
  • MySQL 5.7 (recommended) or MySQL 8.0, Postgres 9.6/10/11/12, MariaDB 10.2/10.3/10.4 or SQLite 3
  • Composer

Install

For a detailed setup overview see Setup Documentation

Quick setup in three steps.

  1. Create project via composer
 composer create-project bedita/bedita

If you are using a .zip or .tar.gz release file you just need to unpack it and then run composer install.

  1. Create an empty database either MySQL or PostgresSQL. Do nothing for SQLite.

  2. Change to the newly created folder and run this script to initialize the database and create first admin user:

 bin/cake bedita setup

See Web Server setup to configure a virtualhost in your webserver. To see first /home endpoint response you may point to http://your-vhost/home

Curl example:

 curl -H Accept:application/json http://your-vhost/home

Otherwise, only for development or test setups, you can take advantage of PHP builtin server with this simple command:

 bin/cake server

and see /home endpoint response pointing to http://localhost:8765/home like this:

 curl -H Accept:application/json http://localhost:8765/home

For an explanation on Accept headers usage read here.

Docker

See Docker setup documentation for a more detailed overview.

Pull official image

Get latest offical image build from Docker Hub

 docker pull bedita/bedita:latest

You may also use :4-cactus tag instead of :latest, they are currently synonyms.

Build image

If you want to build an image from local sources you can do it like this from BEdita root folder:

 docker build -t bedita4-local .

You may of course choose whatever name you like for the generated image instead of bedita4-local.

Run

Run a Docker image setting an initial API KEY and admin username and password, like this:

 docker run -p 8090:80 --env BEDITA_API_KEY=1029384756 \
    --env BEDITA_ADMIN_USR=admin --env BEDITA_ADMIN_PWD=admin \
    bedita/bedita:latest

This will launch a BEdita4 instance using SQLite as its storage backend. It should become available at http://localhost:8090/home almost instantly.

Replace bedita/bedita:latest with bedita4-local (or other chosen name) to lanch a local built image.

Documentation

Developer documentation can be found here

Licensing

BEdita is released under LGPL, Lesser General Public License v3.

Comments
  • external pluggable authentication system: OAuth implementation

    external pluggable authentication system: OAuth implementation

    BEdita authorization system should be extensible with pluggable components implementing different protocolo from various vendors/providers.

    First implementation: OAauth2 as implemented by Facebook, Google and Twitter (one or all of them, if possibile)

    Basic Requirements

    1. should work with pluggaple addon components, preferably with zero or minimal configuration (simply put a component in addons/components to activate it)
    2. common interface should have at least login()/logout() methods and be able to handle basic user metadata/attributes/permissions
    3. should work and be easy to implement on both backend/frontend
    Type - Enhancement Topic - Core Priority - High 
    opened by stefanorosanelli 21
  • ui: generic BEdita helper

    ui: generic BEdita helper

    E' necessario un helper generico per avere codice piu' leggibile e manutenibile sia lato backend sia per i frontend. Alcuni esempi:

    • modulo per un certo tipo di oggetto {$conf->objectTypes[$object.object_type_id].module}
    • formato data {$object.created|date_format:$conf->dateTimePattern}
    • [frontend] gestione currentContent e relazioni... {assign var="seealso" value=$section.currentContent.relations.seealso|default:''}
    • di una pagina {$publication.public_name|default:$publication.title}{if !empty($section)} | {$section.title}{/if} </li> </ul> <span style='padding: .2em .6em .3em;color:#fff;background-color:#84b6eb'>Type - Enhancement</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#DDDDDD'>Topic - UI</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#ffee00'>Priority - High</span>  </article> </div> <span class="publish py-3 d-inline-block w-100"> opened by stefanorosanelli <i class="fa fa-commenting" aria-hidden="true"></i> 20 </span> </div> </div> </li> <li> <div class="d-flex"> <div class="left"> <span> <img data-original="https://avatars.githubusercontent.com/u/2122280?v=4" class="lazy profile-pict-img img-fluid" alt="admin: software update from git/svn"> </span> </div> <div class="right"> <h4> <a href="https://github.com/bedita/bedita/issues/485" rel="nofollow"> admin: software update from git/svn </a> </h4> <div class="review-description"> <article class="markdown-body text-wrap"> <p>Implement in backend, new page <strong>admin / software update</strong> the same logc and flow in <code>DeployShell::up()</code></p> <p>Show feedback to user if update ok, error message on failure</p> <p>See also #217 Maybe @edoardocavazza could do something here?</p> <span style='padding: .2em .6em .3em;color:#fff;background-color:#84b6eb'>Type - Enhancement</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#DDDDDD'>Topic - Core</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#ffee00'>Priority - High</span>  </article> </div> <span class="publish py-3 d-inline-block w-100"> opened by stefanorosanelli <i class="fa fa-commenting" aria-hidden="true"></i> 19 </span> </div> </div> </li> <li> <div class="d-flex"> <div class="left"> <span> <img data-original="https://avatars.githubusercontent.com/u/2122280?v=4" class="lazy profile-pict-img img-fluid" alt="objects versioning"> </span> </div> <div class="right"> <h4> <a href="https://github.com/bedita/bedita/issues/103" rel="nofollow"> objects versioning </a> </h4> <div class="review-description"> <article class="markdown-body text-wrap"> <p>versionamento oggetti di bedita, informazioni che servono:</p> <ul> <li>utente, timestamp, numero revisione e contenuto della modifica</li> <li>a ogni salvataggio di un oggetto saranno generate le informazioni di sopra</li> <li>inizialmente come <em>contenuto</em> della modifica si puo' ragionare su un array php serializzato che rappresenti i dati di dettaglio dell'oggetto (tipo $this->data[] per capirsi), ma solo nelle parti modificate</li> <li>usiamo la tabella <em>versions</em></li> </ul> <span style='padding: .2em .6em .3em;color:#fff;background-color:#444444'>Type - Task</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#DDDDDD'>Topic - Core</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#ffee00'>Priority - High</span>  </article> </div> <span class="publish py-3 d-inline-block w-100"> opened by stefanorosanelli <i class="fa fa-commenting" aria-hidden="true"></i> 19 </span> </div> </div> </li> <li> <div class="d-flex"> <div class="left"> <span> <img data-original="https://avatars.githubusercontent.com/u/2122280?v=4" class="lazy profile-pict-img img-fluid" alt="dati non modificabili sul backend - fixed"> </span> </div> <div class="right"> <h4> <a href="https://github.com/bedita/bedita/issues/48" rel="nofollow"> dati non modificabili sul backend - fixed </a> </h4> <div class="review-description"> <article class="markdown-body text-wrap"> <p>sarebbe utile sul backend poter definire a livello di file di configurazione (o db?) informazioni strutturali (al di la' dei permessi):</p> <ul> <li>un elenco di oggetti non cancellabili (array di id)</li> <li>un elenco di nicknames non modificabili</li> <li>posizione fissa di una sezione nell'albero (obj_id=>array(section1_id, section2_id)</li> </ul> <p>dovrebbe essere evidente nell'interfaccia utente (bottone elimina assente, campo nickname read-only), ma servono anche controlli di validazione lato php</p> <span style='padding: .2em .6em .3em;color:#fff;background-color:#84b6eb'>Type - Enhancement</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#DDDDDD'>Topic - Core</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#67D846'>Priority - Normal</span>  </article> </div> <span class="publish py-3 d-inline-block w-100"> opened by stefanorosanelli <i class="fa fa-commenting" aria-hidden="true"></i> 18 </span> </div> </div> </li> <li> <div class="d-flex"> <div class="left"> <span> <img data-original="https://avatars.githubusercontent.com/u/2122280?v=4" class="lazy profile-pict-img img-fluid" alt="ui: handle import/export filter dynamic options"> </span> </div> <div class="right"> <h4> <a href="https://github.com/bedita/bedita/issues/640" rel="nofollow"> ui: handle import/export filter dynamic options </a> </h4> <div class="review-description"> <article class="markdown-body text-wrap"> <ul> <li>in import/export filter model classes define options to use, using: option name, option values for a fixed list or a description for input parameter (like custom properties?)</li> <li>those options are registered in config, like names and mime types</li> <li>in UI when we select a filter we show those options: a combo/select if there's a fixed list, an input text otherwise</li> </ul> <p>a more general solution to #415</p> <span style='padding: .2em .6em .3em;color:#fff;background-color:#84b6eb'>Type - Enhancement</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#DDDDDD'>Topic - UI</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#67D846'>Priority - Normal</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#DDDDDD'>Topic - Data I/O</span>  </article> </div> <span class="publish py-3 d-inline-block w-100"> opened by stefanorosanelli <i class="fa fa-commenting" aria-hidden="true"></i> 16 </span> </div> </div> </li> <li> <div class="d-flex"> <div class="left"> <span> <img data-original="https://avatars.githubusercontent.com/u/2122280?v=4" class="lazy profile-pict-img img-fluid" alt="modulo multimedia"> </span> </div> <div class="right"> <h4> <a href="https://github.com/bedita/bedita/issues/38" rel="nofollow"> modulo multimedia </a> </h4> <div class="review-description"> <article class="markdown-body text-wrap"> <ul> <li>multimedia: upload diretto di nuovo contenuto multimediale (voce di menu a sinistra)</li> <li>test/fix</li> <li>indicazione dei contenuti referenziati (report relazioni tipo attach)</li> <li><em>sostituzione</em> file, con nuovo upload</li> </ul> <span style='padding: .2em .6em .3em;color:#fff;background-color:#84b6eb'>Type - Enhancement</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#DDDDDD'>Topic - Modules</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#ffee00'>Priority - High</span>  </article> </div> <span class="publish py-3 d-inline-block w-100"> opened by stefanorosanelli <i class="fa fa-commenting" aria-hidden="true"></i> 16 </span> </div> </div> </li> <li> <div class="d-flex"> <div class="left"> <span> <img data-original="https://avatars.githubusercontent.com/u/2122280?v=4" class="lazy profile-pict-img img-fluid" alt="ui: object detail update"> </span> </div> <div class="right"> <h4> <a href="https://github.com/bedita/bedita/issues/240" rel="nofollow"> ui: object detail update </a> </h4> <div class="review-description"> <article class="markdown-body text-wrap"> <ul> <li>warning se salvo un oggetto che non e' in una sezione; evidenza della cosa nella view dell'oggetto (solo per tipi di oggetti che "dovrebbero" stare sull'albero)</li> <li>migliore gestione nickname, fra attributi principali - visibilita' URL completa, canonical path con nickname (evidenziato)</li> <li>stato oggetto - draft/off - icona di stato, bottone "save draft" - set di bottoni distinti a seconda dello stato</li> <li>#181</li> <li>description - HTML rich text con pochi bottoni</li> <li>dall'albero in Position --> link alla sezione in publishing</li> <li>notes: non si conservano gli "a capo"</li> </ul> <span style='padding: .2em .6em .3em;color:#fff;background-color:#84b6eb'>Type - Enhancement</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#DDDDDD'>Topic - UI</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#ffee00'>Priority - High</span>  </article> </div> <span class="publish py-3 d-inline-block w-100"> opened by stefanorosanelli <i class="fa fa-commenting" aria-hidden="true"></i> 15 </span> </div> </div> </li> <li> <div class="d-flex"> <div class="left"> <span> <img data-original="https://avatars.githubusercontent.com/u/2122280?v=4" class="lazy profile-pict-img img-fluid" alt="apidoc corrections/improvements"> </span> </div> <div class="right"> <h4> <a href="https://github.com/bedita/bedita/issues/305" rel="nofollow"> apidoc corrections/improvements </a> </h4> <div class="review-description"> <article class="markdown-body text-wrap"> <p>In http://api.bedita.com/trunk/</p> <ul> <li>important classes without documentation: <code>BEAppObjectModel, BeditaCollectionModel, BeditaSimpleStreamModel, BeditaStreamModel</code></li> <li>italian comments: http://api.bedita.com/trunk/classBEObject.html, other cases?</li> <li>improve comments, more useful information, in helpers for example: http://api.bedita.com/trunk/classBeFrontHelper.html</li> </ul> <span style='padding: .2em .6em .3em;color:#fff;background-color:#84b6eb'>Type - Enhancement</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#67D846'>Priority - Normal</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#bfdadc'>Status - Still valid?</span>  </article> </div> <span class="publish py-3 d-inline-block w-100"> opened by stefanorosanelli <i class="fa fa-commenting" aria-hidden="true"></i> 14 </span> </div> </div> </li> <li> <div class="d-flex"> <div class="left"> <span> <img data-original="https://avatars.githubusercontent.com/u/2122280?v=4" class="lazy profile-pict-img img-fluid" alt="publications: ui changes"> </span> </div> <div class="right"> <h4> <a href="https://github.com/bedita/bedita/issues/243" rel="nofollow"> publications: ui changes </a> </h4> <div class="review-description"> <article class="markdown-body text-wrap"> <ul> <li>cambiamo nome: 'publications'</li> <li>evidenza in albero sezioni DRAFT - OFF (anche in tab position del dettaglio oggetto) e anche quelli che possiedono permessi</li> <li>operazioni su stati direttamente da publishing, anche altre operazioni "bulk" tipo rimozione (??)</li> <li>togliamo note fino a deajaxizzazione</li> </ul> <span style='padding: .2em .6em .3em;color:#fff;background-color:#84b6eb'>Type - Enhancement</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#DDDDDD'>Topic - UI</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#67D846'>Priority - Normal</span>  </article> </div> <span class="publish py-3 d-inline-block w-100"> opened by stefanorosanelli <i class="fa fa-commenting" aria-hidden="true"></i> 14 </span> </div> </div> </li> <li> <div class="d-flex"> <div class="left"> <span> <img data-original="https://avatars.githubusercontent.com/u/2248878?v=4" class="lazy profile-pict-img img-fluid" alt="concurrent user - pseudo locking"> </span> </div> <div class="right"> <h4> <a href="https://github.com/bedita/bedita/issues/84" rel="nofollow"> concurrent user - pseudo locking </a> </h4> <div class="review-description"> <article class="markdown-body text-wrap"> <p>Preparare una variabile, disponibile nel dettaglio di un oggetto, che rappresenti tutti gli user che in quel momento hanno l'oggetto aperto (con il realname). Notificare in qualche modo l'editing concorrente. Insomma un sistema di avviso che potrebbe ovviare alla procedura di lock dell'oggetto</p> <span style='padding: .2em .6em .3em;color:#fff;background-color:#84b6eb'>Type - Enhancement</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#DDDDDD'>Topic - Core</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#67D846'>Priority - Normal</span>  </article> </div> <span class="publish py-3 d-inline-block w-100"> opened by qwerg <i class="fa fa-commenting" aria-hidden="true"></i> 14 </span> </div> </div> </li> <li> <div class="d-flex"> <div class="left"> <span> <img data-original="https://avatars.githubusercontent.com/u/2227145?v=4" class="lazy profile-pict-img img-fluid" alt="Endpoint to get and save trees.children_order"> </span> </div> <div class="right"> <h4> <a href="https://github.com/bedita/bedita/issues/1956" rel="nofollow"> Endpoint to get and save trees.children_order </a> </h4> <div class="review-description"> <article class="markdown-body text-wrap"> <p>After https://github.com/bedita/bedita/issues/1954 and https://github.com/bedita/bedita/pull/1955, children order customization is saved in <code>trees.children_order</code>.</p> <p>We need to provide an endpoint to get and to update <code>trees.children_order</code> for a specified folder.</p> <p>For instance:</p> <pre><code>GET /folders/{{id}} // children_order in response meta PATCH /folders/{{id}} { "data": { "id": "{{id}}", "type": "folders", "meta": { "children_order": "-title" } } } </code></pre> <p>or</p> <pre><code>GET /folders/{{id}}/children_order // children_order in response { "children_order": "-title" } PATCH /folders/{{id}}/children_order { "children_order": "-title" } </code></pre> </article> </div> <span class="publish py-3 d-inline-block w-100"> opened by didoda <i class="fa fa-commenting" aria-hidden="true"></i> 0 </span> </div> </div> </li> <li> <div class="d-flex"> <div class="left"> <span> <img data-original="https://avatars.githubusercontent.com/u/3907295?v=4" class="lazy profile-pict-img img-fluid" alt="Add methods to expand and compact priorities list"> </span> </div> <div class="right"> <h4> <a href="https://github.com/bedita/bedita/issues/1907" rel="nofollow"> Add methods to expand and compact priorities list </a> </h4> <div class="review-description"> <article class="markdown-body text-wrap"> <p>This PR introduces <code>expand</code> and <code>compact</code> methods to the <code>PriorityBehavior</code>. They are used to shift relation's priorities when an item is moved or deleted.</p> <ul> <li>[x] Implementation</li> <li>[x] Add tests</li> </ul> <span style='padding: .2em .6em .3em;color:#fff;background-color:#DDDDDD'>Topic - Core</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#67D846'>Priority - Normal</span>  </article> </div> <span class="publish py-3 d-inline-block w-100"> opened by edoardocavazza <i class="fa fa-commenting" aria-hidden="true"></i> 1 </span> </div> </div> </li> <li> <div class="d-flex"> <div class="left"> <span> <img data-original="https://avatars.githubusercontent.com/u/2122280?v=4" class="lazy profile-pict-img img-fluid" alt="Upgrade fixture system "> </span> </div> <div class="right"> <h4> <a href="https://github.com/bedita/bedita/issues/1903" rel="nofollow"> Upgrade fixture system </a> </h4> <div class="review-description"> <article class="markdown-body text-wrap"> <p>Migrate fixture system https://book.cakephp.org/4/en/appendices/fixture-upgrade.html</p> <pre><code>Deprecated Error: You are using the listener based PHPUnit integration. This fixture system is deprecated, and we recommend you upgrade to the extension based PHPUnit integration. See https://book.cakephp.org/4/en/appendices/fixture-upgrade.html </code></pre> <ul> <li>avoid use of <code>$autoFixtures</code> =></li> </ul> <pre><code>Deprecated Error: `$autoFixtures` is deprecated and will be removed in 5.0. </code></pre> <span style='padding: .2em .6em .3em;color:#fff;background-color:#DDDDDD'>Topic - Tests</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#DDDDDD'>Topic - Integration</span>  </article> </div> <span class="publish py-3 d-inline-block w-100"> opened by stefanorosanelli <i class="fa fa-commenting" aria-hidden="true"></i> 0 </span> </div> </div> </li> <li> <div class="d-flex"> <div class="left"> <span> <img data-original="https://avatars.githubusercontent.com/u/7108146?v=4" class="lazy profile-pict-img img-fluid" alt="Better coverage"> </span> </div> <div class="right"> <h4> <a href="https://github.com/bedita/bedita/issues/1891" rel="nofollow"> Better coverage </a> </h4> <div class="review-description"> <article class="markdown-body text-wrap"> <p>This PR uses <code>phpdbg</code> to generate coverage in place of PCov, which requires a clobber.</p> <p>Additionally, Composer autoloader and authoritative classmap is dumped before running unit tests to catch usages of deprecated aliased classes, and Codecov will now wait for all jobs to complete before notifying about a coverage decrease.</p> <span style='padding: .2em .6em .3em;color:#fff;background-color:#444444'>Type - Task</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#67D846'>Priority - Normal</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#DDDDDD'>Topic - Code Quality</span>  </article> </div> <span class="publish py-3 d-inline-block w-100"> opened by fquffio <i class="fa fa-commenting" aria-hidden="true"></i> 1 </span> </div> </div> </li> <li> <div class="d-flex"> <div class="left"> <span> <img data-original="https://avatars.githubusercontent.com/u/22395670?v=4" class="lazy profile-pict-img img-fluid" alt="Category name should be sluggified"> </span> </div> <div class="right"> <h4> <a href="https://github.com/bedita/bedita/issues/1860" rel="nofollow"> Category name should be sluggified </a> </h4> <div class="review-description"> <article class="markdown-body text-wrap"> <h3>Expected behavior</h3> <p>Category name should be made <em>url safe</em> when saving a category.</p> <h3>Actual behavior</h3> <p>It is possible to save a category's name that contains whitespace, commas, etc.</p> <p>e.g. We can currently save a category with following name: <code>Ca' te go, ria</code>.</p> <span style='padding: .2em .6em .3em;color:#fff;background-color:#84b6eb'>Type - Enhancement</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#ffee00'>Priority - High</span> <span style='padding: .2em .6em .3em;color:#fff;background-color:#DDDDDD'>Topic - ORM</span>  </article> </div> <span class="publish py-3 d-inline-block w-100"> opened by nicolocarpignoli <i class="fa fa-commenting" aria-hidden="true"></i> 0 </span> </div> </div> </li> </ul> </div> </div> </div> <div id="releases" class="card mt-3"> <div class="card-header"><h5>Releases(v5.4.0)</h5></div> <div class="card-body"> <div class="review-list"> <ul> <li> <div class="d-flex"> <div class="right"> <h4> v5.4.0(Dec 28, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Introduce <code>read-only</code> custom props by @stefanorosanelli in https://github.com/bedita/bedita/pull/1948</li> <li>Add Enqueue support to async jobs by @stefanorosanelli in https://github.com/bedita/bedita/pull/1963</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v5.3.2...v5.4.0</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.4.0">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.4.0">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v5.3.2(Dec 22, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Allow <code>filter[name]</code> query string on <code>/config</code> and <code>/admin/config</code> by @stefanorosanelli in https://github.com/bedita/bedita/pull/1964</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v5.3.1...v5.3.2</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.3.2">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.3.2">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v5.3.1(Dec 15, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Project model alphabetical order by @stefanorosanelli in https://github.com/bedita/bedita/pull/1960</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v5.3.0...v5.3.1</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.3.1">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.3.1">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v5.3.0(Dec 14, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Add translations <code>type</code> filter by @stefanorosanelli in https://github.com/bedita/bedita/pull/1961</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v5.2.0...v5.3.0</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.3.0">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.3.0">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v4.9.1(Dec 14, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Update major version on docker.com image by @stefanorosanelli in https://github.com/bedita/bedita/pull/1962</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v4.9.0...v4.9.1</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v4.9.1">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v4.9.1">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v5.2.0(Dec 13, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Create and push major tag to docker registry by @stefanorosanelli in https://github.com/bedita/bedita/pull/1952</li> <li>Folders children_order property and ListAssociatedAction custom sort for Children by @didoda in https://github.com/bedita/bedita/pull/1959</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v5.1.0...v5.2.0</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.2.0">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.2.0">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v4.9.0(Dec 12, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Folders children_order property and ListAssociatedAction custom sort for Children by @didoda in https://github.com/bedita/bedita/pull/1957</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v4.8.0...v4.9.0</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v4.9.0">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v4.9.0">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v5.1.0(Oct 27, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>History include filter and related endpoints (v5) by @stefanorosanelli in https://github.com/bedita/bedita/pull/1951</li> <li>Use <code>name</code> as identifier in internal resources endpoints by @stefanorosanelli in https://github.com/bedita/bedita/pull/1945</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v5.0.10...v5.1.0</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.1.0">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.1.0">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v4.8.0(Oct 27, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Fix POST relation types by @stefanorosanelli in https://github.com/bedita/bedita/pull/1916</li> <li>feat: add command to refresh streams metadata in database by @le0m in https://github.com/bedita/bedita/pull/1856</li> <li>Introducing StatusBehavior by @edoardocavazza in https://github.com/bedita/bedita/pull/1922</li> <li>Increase <code>links.url</code> maximum length (v4) by @fquffio in https://github.com/bedita/bedita/pull/1926</li> <li>Add release workflow with docker build & push from v5 by @stefanorosanelli in https://github.com/bedita/bedita/pull/1949</li> <li>Add <code>filter-components</code> reusable workflow by @stefanorosanelli in https://github.com/bedita/bedita/pull/1950</li> <li>History include filter and related endpoints by @edoardocavazza in https://github.com/bedita/bedita/pull/1946</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v4.7.1...v4.8.0</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v4.8.0">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v4.8.0">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v5.0.10(Oct 26, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Fix release action and generated docker image by @stefanorosanelli in https://github.com/bedita/bedita/pull/1947</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v5.0.9...v5.0.10</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.0.10">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.0.10">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v5.0.9(Oct 19, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Regex to validate internal resource names by @stefanorosanelli in https://github.com/bedita/bedita/pull/1943</li> <li>Remove deprecations and check via PHPStan by @stefanorosanelli in https://github.com/bedita/bedita/pull/1941</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v5.0.8...v5.0.9</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.0.9">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.0.9">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v5.0.8(Oct 6, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Fix signup error for <code>draft</code> users by @stefanorosanelli in https://github.com/bedita/bedita/pull/1942</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v5.0.7...v5.0.8</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.0.8">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.0.8">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v5.0.7(Sep 28, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Fix project model diff on properties with same name by @stefanorosanelli in https://github.com/bedita/bedita/pull/1939</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v5.0.6...v5.0.7</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.0.7">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.0.7">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v5.0.6(Sep 22, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Anonymize users on delete if an annotation exists by @stefanorosanelli in https://github.com/bedita/bedita/pull/1938</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v5.0.5...v5.0.6</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.0.6">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.0.6">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v5.0.5(Sep 20, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Skip docker image creation on missing release by @stefanorosanelli in https://github.com/bedita/bedita/pull/1937</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v5.0.4...v5.0.5</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.0.5">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.0.5">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v5.0.4(Sep 16, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Fix error on multiple anonymizations by @stefanorosanelli in https://github.com/bedita/bedita/pull/1936</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v5.0.3...v5.0.4</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.0.4">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.0.4">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v5.0.3(Sep 16, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <h2>What's Changed</h2> <ul> <li>Fix ObjectHanlders save with custom properties by @stefanorosanelli in https://github.com/bedita/bedita/pull/1934</li> <li>Add release workflow by @stefanorosanelli in https://github.com/bedita/bedita/pull/1935</li> </ul> <p><strong>Full Changelog</strong>: https://github.com/bedita/bedita/compare/v5.0.2...v5.0.3</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.0.3">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.0.3">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v5.0.0-beta(Jun 6, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <p>Main changes on this release below, see also the <a href="https://github.com/bedita/bedita/compare/v5.0.0-alpha...v5.0.0-beta">complete changelog</a>.</p> <h3>API changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1910">#1910</a> Refactor: use standard Cake4 configuration layout, new BaseApplication class + other minor changes</li> <li><a href="https://github.com/bedita/bedita/pull/1909">#1909</a> API endpoint to admin endpoint permissions</li> </ul> <h3>Core changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1904">#1904</a> Use new MiddlewareInterface</li> <li><a href="https://github.com/bedita/bedita/pull/1906">#1906</a> Avoid duplicate results with <code>?filter[ancestors]</code></li> </ul> <h3>Integration changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1914">#1914</a> Migrate to PHPUnit 9.5</li> <li><a href="https://github.com/bedita/bedita/pull/1913">#1913</a> Update composer dependencies</li> </ul> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.0.0-beta">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.0.0-beta">Source code(zip)</a><br><i class="fa fa-codepen m-r-xs" aria-hidden="true"></i><a href="https://github.com/bedita/bedita/releases/download/v5.0.0-beta/bedita-5-0-0-beta.zip">bedita-5-0-0-beta.zip(13.32 MB)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v4.7.1(May 16, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <p>Main changes on this release below, see also the <a href="https://github.com/bedita/bedita/compare/v4.7.0...v4.7.1">complete changelog</a>.</p> <h3>API changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1908">#1908</a> Handle <code>/admin/endpoint_permissions</code> endpoint</li> </ul> <h3>Core changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1900">#1900</a> Avoid changing results cardinality when using <code>?filter[ancestors]</code></li> <li><a href="https://github.com/bedita/bedita/pull/1899">#1899</a> Cake4 compatibility changes</li> <li><a href="https://github.com/bedita/bedita/pull/1898">#1898</a> Dirty props consistency in inheritance</li> </ul> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v4.7.1">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v4.7.1">Source code(zip)</a><br><i class="fa fa-codepen m-r-xs" aria-hidden="true"></i><a href="https://github.com/bedita/bedita/releases/download/v4.7.1/bedita-4-7-1.zip">bedita-4-7-1.zip(16.69 MB)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v5.0.0-alpha(May 12, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <p>We are happy to announce the immediate availability of <strong>BEdita 5.0.0-alpha</strong> salix*.</p> <p><strong>BEdita 5</strong> is a new major version to suppport PHP 8.0 and PHP 8.1 with the same API-first architecture of <strong>BEdita 4</strong>.</p> <p><strong>BEdita</strong> is a ready to use back-end API to handle the data of your mobile, IoT, web and desktop applications. It provides an extensible framework to build your custom back-end API via plugins.</p> <p>Development is currently in alpha stage - DON'T USE IT ON A PRODUCTION SYSTEM</p> <p>(*)<a href="http://en.wikipedia.org/wiki/Salix">“salix”</a>: Willows, from the genus <strong>Salix</strong>, are around 400 species of trees and shrubs. All have abundant watery bark sap, which is heavily charged with salicylic acid. The roots are remarkable for their toughness, size, and tenacity to live. (from Wikipedia)</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v5.0.0-alpha">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v5.0.0-alpha">Source code(zip)</a><br><i class="fa fa-codepen m-r-xs" aria-hidden="true"></i><a href="https://github.com/bedita/bedita/releases/download/v5.0.0-alpha/bedita-5-0-0-alpha.zip">bedita-5-0-0-alpha.zip(16.65 MB)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v4.7.0(Apr 13, 2022) </h4> <div class="review-description"> <article class="markdown-body"> <p>Main changes on this release below, see also the <a href="https://github.com/bedita/bedita/compare/v4.6.1...v4.7.0">complete changelog</a>.</p> <h3>API changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1877">#1877</a> Add return type to initialize() methods</li> <li><a href="https://github.com/bedita/bedita/pull/1865">#1865</a> New JSON base controller</li> <li><a href="https://github.com/bedita/bedita/pull/1862">#1862</a> Use ActionTrait in LoginController</li> <li><a href="https://github.com/bedita/bedita/pull/1861">#1861</a> Skip auth token checks on OPTIONS request</li> <li><a href="https://github.com/bedita/bedita/pull/1859">#1859</a> Fix token decode error</li> <li><a href="https://github.com/bedita/bedita/pull/1609">#1609</a> Require protocol when validating URLs</li> </ul> <h3>Core changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1893">#1893</a> Ensure left and right fields are update when removing a tree entity</li> <li><a href="https://github.com/bedita/bedita/pull/1887">#1887</a> Add <code>user_preferences</code> field to users table</li> <li><a href="https://github.com/bedita/bedita/pull/1886">#1886</a> Introduce <code>InvalidDataException</code></li> <li><a href="https://github.com/bedita/bedita/pull/1880">#1880</a> Fix thumb file extension and check allowed extensions</li> <li><a href="https://github.com/bedita/bedita/pull/1878">#1878</a> Split tags into their own <code>tags</code> table</li> <li><a href="https://github.com/bedita/bedita/pull/1882">#1882</a> Fix migration <code>CreateTagsTable</code></li> <li><a href="https://github.com/bedita/bedita/pull/1874">#1874</a> Dispatch <code>ObjectType.getSchema</code> event when building schema for an object type</li> <li><a href="https://github.com/bedita/bedita/pull/1888">#1888</a> Tree integrity check</li> <li><a href="https://github.com/bedita/bedita/pull/1850">#1850</a> Create writable <code>bedita_core</code> folder for cache</li> <li><a href="https://github.com/bedita/bedita/pull/1873">#1873</a> Introduce <code>LockedResourceException</code></li> <li><a href="https://github.com/bedita/bedita/pull/1864">#1864</a> Related objects utility methods</li> <li><a href="https://github.com/bedita/bedita/pull/1863">#1863</a> Mark join entity as new when it is a new association for source entity</li> </ul> <h3>Integration changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1890">#1890</a> Treat phpdbg SAPI as cli</li> <li><a href="https://github.com/bedita/bedita/pull/1889">#1889</a> Update phpstan/phpstan to version 1.5</li> <li><a href="https://github.com/bedita/bedita/pull/1872">#1872</a> Cake 4 Core compatibility changes</li> <li><a href="https://github.com/bedita/bedita/pull/1871">#1871</a> Cake 4 API compatibility changes</li> <li><a href="https://github.com/bedita/bedita/pull/1853">#1853</a> Update <code>bedita/dev-tools</code> to 1.5.*</li> </ul> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v4.7.0">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v4.7.0">Source code(zip)</a><br><i class="fa fa-codepen m-r-xs" aria-hidden="true"></i><a href="https://github.com/bedita/bedita/releases/download/v4.7.0/bedita-4-7-0.zip">bedita-4-7-0.zip(16.56 MB)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v4.6.1(Dec 23, 2021) </h4> <div class="review-description"> <article class="markdown-body"> <p>Main changes on this release below, see also the <a href="https://github.com/bedita/bedita/compare/v4.6.0...v4.6.1">complete changelog</a>.</p> <h3>API changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1849">#1849</a> Fix renew token expiry</li> </ul> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v4.6.1">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v4.6.1">Source code(zip)</a><br><i class="fa fa-codepen m-r-xs" aria-hidden="true"></i><a href="https://github.com/bedita/bedita/releases/download/v4.6.1/bedita-4-6-1.zip">bedita-4-6-1.zip(16.29 MB)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v4.6.0(Dec 22, 2021) </h4> <div class="review-description"> <article class="markdown-body"> <p>Main changes on this release below, see also the <a href="https://github.com/bedita/bedita/compare/v4.5.0...v4.6.0">complete changelog</a>.</p> <h3>API changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1844">#1844</a> Improve external OAuth2 providers check</li> <li><a href="https://github.com/bedita/bedita/pull/1836">#1836</a> New <code>/applications</code> endpoint</li> <li><a href="https://github.com/bedita/bedita/pull/1830">#1830</a> Add <code>private</code> URLs to Streams</li> <li><a href="https://github.com/bedita/bedita/pull/1829">#1829</a> Implement proper OAuth2 flow on <code>/auth</code></li> <li><a href="https://github.com/bedita/bedita/pull/1827">#1827</a> Get all relations in <code>/model/schema/:type</code></li> </ul> <h3>Core changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1841">#1841</a> Add <code>pseudonym</code> to Profiles</li> <li><a href="https://github.com/bedita/bedita/pull/1840">#1840</a> <code>password_modified</code> read-only property</li> <li><a href="https://github.com/bedita/bedita/pull/1839">#1839</a> <code>Trees.menu</code> is default off</li> <li><a href="https://github.com/bedita/bedita/pull/1834">#1834</a> Lighter async mail payload</li> <li><a href="https://github.com/bedita/bedita/pull/1826">#1826</a> Fix <code>filter[]</code> error on related objects</li> <li><a href="https://github.com/bedita/bedita/pull/1823">#1823</a> Fix unique uname generation use cases</li> <li><a href="https://github.com/bedita/bedita/pull/1822">#1822</a> Add file metadata to Streams</li> <li><a href="https://github.com/bedita/bedita/pull/1821">#1821</a> New <code>fix_history</code> command</li> </ul> <h3>Integration changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1837">#1837</a> Docker: update PHP and composer versions</li> <li><a href="https://github.com/bedita/bedita/pull/1831">#1831</a> Use MySQL 8 as default for dump file & CI</li> </ul> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v4.6.0">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v4.6.0">Source code(zip)</a><br><i class="fa fa-codepen m-r-xs" aria-hidden="true"></i><a href="https://github.com/bedita/bedita/releases/download/v4.6.0/bedita-4-6-0.zip">bedita-4-6-0.zip(16.29 MB)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v4.5.0(Sep 9, 2021) </h4> <div class="review-description"> <article class="markdown-body"> <p>Main changes on this release below, see also the <a href="https://github.com/bedita/bedita/compare/v4.4.0...v4.5.0">complete changelog</a>.</p> <h3>API changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1817">#1817</a> New <code>/translations</code> endpoint</li> <li><a href="https://github.com/bedita/bedita/pull/1808">#1808</a> Property filter (<code>filter[<prop_name>]</code>) now working for custom properties</li> <li><a href="https://github.com/bedita/bedita/pull/1802">#1802</a> Lock/unlock objects and block/unblock users actions</li> <li><a href="https://github.com/bedita/bedita/pull/1798">#1798</a> Project model endpoint & command</li> <li><a href="https://github.com/bedita/bedita/pull/1753">#1753</a> New <code>history_editor</code> finder & filter</li> </ul> <h3>Core changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1818">#1818</a> More resources tables searchable</li> <li><a href="https://github.com/bedita/bedita/pull/1809">#1809</a> Add <code>date-time</code> to nullable formats</li> <li><a href="https://github.com/bedita/bedita/pull/1807">#1807</a> Avoid <code>uname</code> change when absent</li> <li><a href="https://github.com/bedita/bedita/pull/1804">#1804</a> Format and validate JSON Schema for custom properties</li> <li><a href="https://github.com/bedita/bedita/pull/1800">#1800</a> Locked constraint logic</li> <li><a href="https://github.com/bedita/bedita/pull/1796">#1796</a> Filter <code>publish_start</code> and <code>publish_end</code> dates</li> </ul> <h3>Integration changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1815">#1815</a> Fix PHPstan issues, PHPstan added to <code>require-dev</code></li> <li><a href="https://github.com/bedita/bedita/pull/1812">#1812</a> Upgrade to CakePHP 3.10</li> <li><a href="https://github.com/bedita/bedita/pull/1803">#1803</a> Use PHPCS XML conf</li> <li><a href="https://github.com/bedita/bedita/pull/1801">#1801</a> Enable <code>locked</code> save via <code>ObjectsHandler</code></li> <li><a href="https://github.com/bedita/bedita/pull/1797">#1797</a> Release Makefile cleanup</li> </ul> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v4.5.0">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v4.5.0">Source code(zip)</a><br><i class="fa fa-codepen m-r-xs" aria-hidden="true"></i><a href="https://github.com/bedita/bedita/releases/download/v4.5.0/bedita-4-5-0.zip">bedita-4-5-0.zip(19.06 MB)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v4.4.0(May 10, 2021) </h4> <div class="review-description"> <article class="markdown-body"> <p>Main changes on this release below, see also the <a href="https://github.com/bedita/bedita/compare/v4.3.0...v4.4.0">complete changelog</a>.</p> <h3>API changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1787">#1787</a> Add <code>/model/tags</code> route</li> <li><a href="https://github.com/bedita/bedita/pull/1774">#1774</a> Allow <code>uname</code> in relationship management</li> <li><a href="https://github.com/bedita/bedita/pull/1773">#1773</a> Fix <code>?include</code> check</li> <li><a href="https://github.com/bedita/bedita/pull/1772">#1772</a> Fix <code>/home</code> authorization check on object types endpoints</li> <li><a href="https://github.com/bedita/bedita/pull/1767">#1767</a> Fix <code>status</code> handling on status level check</li> <li><a href="https://github.com/bedita/bedita/pull/1759">#1759</a> Introduce min/max sort on DateRanges</li> <li><a href="https://github.com/bedita/bedita/pull/1747">#1747</a> Dispatch JsonApi.beforeFormatData and JsonApi.afterFormatData events</li> <li><a href="https://github.com/bedita/bedita/pull/1746">#1746</a> Include relations count number via <code>?count</code> query string</li> <li><a href="https://github.com/bedita/bedita/pull/1710">#1710</a> Add associations and relations metadata to JSON Schema</li> </ul> <h3>Core changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1795">#1795</a> Ensure custom properties results formatter is prepended</li> <li><a href="https://github.com/bedita/bedita/pull/1790">#1790</a> Add endpoints permissions cache</li> <li><a href="https://github.com/bedita/bedita/pull/1751">#1751</a> Activate routes cache</li> <li><a href="https://github.com/bedita/bedita/pull/1788">#1788</a> Enale tags creation in CategoriesBehavior</li> <li><a href="https://github.com/bedita/bedita/pull/1784">#1784</a> Reload ObjectType entity to load related type's relations</li> <li><a href="https://github.com/bedita/bedita/pull/1783">#1783</a> Add index on <code>created</code> and <code>modified</code> columns of <code>async_jobs</code></li> <li><a href="https://github.com/bedita/bedita/pull/1780">#1780</a> External Auth Signup: add <code>verified</code>, remove reference on <code>anonymize</code></li> <li><a href="https://github.com/bedita/bedita/pull/1778">#1778</a> Expose available custom properties getting related object</li> <li><a href="https://github.com/bedita/bedita/pull/1777">#1777</a> Enable <code>categories</code> in migrations</li> <li><a href="https://github.com/bedita/bedita/pull/1769">#1769</a> Display only <em>"available"</em> children and parents</li> <li><a href="https://github.com/bedita/bedita/pull/1768">#1768</a> Restore original inherited table alias after cascading to parent finder</li> <li><a href="https://github.com/bedita/bedita/pull/1766">#1766</a> Allow empty <code>label/inverse_label</code> in relations</li> <li><a href="https://github.com/bedita/bedita/pull/1765">#1765</a> Cache database config and applications</li> <li><a href="https://github.com/bedita/bedita/pull/1762">#1762</a> Dispatch events when adding, removing, or replacing associations</li> <li><a href="https://github.com/bedita/bedita/pull/1761">#1761</a> Introduce layered cache</li> <li><a href="https://github.com/bedita/bedita/pull/1757">#1757</a> Add virtual property <code>object_type_name</code> to Endpoint Entity</li> <li><a href="https://github.com/bedita/bedita/pull/1754">#1754</a> Avoid to use real properties as virtual properties</li> <li><a href="https://github.com/bedita/bedita/pull/1745">#1745</a> Fix search behavior, allow <code>_</code> and <code>-</code> in search</li> </ul> <h3>Integration changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1791">#1791</a> Update to composer 2</li> <li><a href="https://github.com/bedita/bedita/pull/1786">#1786</a> Drop PHP 7.1</li> <li><a href="https://github.com/bedita/bedita/pull/1771">#1771</a> Better isolation within test cases</li> <li><a href="https://github.com/bedita/bedita/pull/1760">#1760</a> Remove useless inline docblock, fix phpstan weirdness</li> <li><a href="https://github.com/bedita/bedita/pull/1758">#1758</a> Fix publish components action</li> <li><a href="https://github.com/bedita/bedita/pull/1756">#1756</a> Remove travis CI</li> <li><a href="https://github.com/bedita/bedita/pull/1755">#1755</a> Move to GitHub Actions</li> <li><a href="https://github.com/bedita/bedita/pull/1733">#1733</a> Upgrade to CakePHP 3.9</li> </ul> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v4.4.0">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v4.4.0">Source code(zip)</a><br><i class="fa fa-codepen m-r-xs" aria-hidden="true"></i><a href="https://github.com/bedita/bedita/releases/download/v4.4.0/bedita-4-4-0.zip">bedita-4-4-0.zip(13.20 MB)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v4.3.0(Nov 20, 2020) </h4> <div class="review-description"> <article class="markdown-body"> <p>Main changes on this release below, see also the <a href="https://github.com/bedita/bedita/compare/v4.2.1...v4.3.0">complete changelog</a>.</p> <h3>API changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1735">#1735</a> Add <code>external_auth</code> info in users meta</li> <li><a href="https://github.com/bedita/bedita/pull/1742">#1742</a> Fix signup when user has no roles but conf require roles</li> </ul> <h3>Core changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1731">#1731</a> Handle JSON-SCHEMA defaults in relation <code>params</code> setting</li> </ul> <h3>Integration changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1738">#1738</a> Update composer to use plugin-installer ^1.3</li> <li><a href="https://github.com/bedita/bedita/pull/1734">#1734</a> Allow to use specific composer version in CI</li> </ul> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v4.3.0">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v4.3.0">Source code(zip)</a><br><i class="fa fa-codepen m-r-xs" aria-hidden="true"></i><a href="https://github.com/bedita/bedita/releases/download/v4.3.0/bedita-4-3-0.zip">bedita-4-3-0.zip(13.03 MB)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v4.2.1(Oct 1, 2020) </h4> <div class="review-description"> <article class="markdown-body"> <p>Main changes on this release below, see also the <a href="https://github.com/bedita/bedita/compare/v4.2.0...v4.2.1">complete changelog</a>.</p> <h3>API changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1727">#1727</a> Save relation metadata in <code>PATCH /folders/{id}/parent</code></li> </ul> <h3>Core changes</h3> <ul> <li><a href="https://github.com/bedita/bedita/pull/1728">#1728</a> Add endpoints to handled resources in migrations</li> <li><a href="https://github.com/bedita/bedita/pull/1729">#1729</a> Add endpoint_permissions to resource utility</li> <li><a href="https://github.com/bedita/bedita/pull/1729">#1729</a> Perform non atomic changes in <code>Resources</code> - fix official docker image</li> </ul> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v4.2.1">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v4.2.1">Source code(zip)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v4.2.0(Sep 21, 2020) </h4> <div class="review-description"> <article class="markdown-body"> <p>Main changes on this release below, see also the <a href="https://github.com/bedita/bedita/compare/v4.1.0...v4.2.0">complete changelog</a>.</p> <h3>API changes</h3> <ul> <li>Media objects with a <code>stream file</code> can be created in <em>one</em> request</li> <li><code>canonical</code> meta property was added on <code>children</code> relation</li> <li>Fixed two errors on <code>PATCH</code> and <code>POST</code> with <code>meta.relation.position</code> present</li> <li>New categories type filter query string => <code>/categories?filter[type]=profiles</code></li> <li>Avoid <code>included</code> repetitions in response</li> <li>New user roles filter query string => <code>/users?filter[roles]=manager,guest</code></li> <li>Anonymous apps are blocked as default</li> <li>Always populate <code>meta.media_url</code> on media objects response</li> <li><code>DateRanges</code>: order via <code>sort</code> query string and <code>from_date</code>/<code>to_date</code> filters</li> </ul> <h3>Core changes</h3> <ul> <li><code>CustomProperties</code> behavior recursion problem fixed</li> <li>Entity <code>isDirty()</code> is now working on custom properties</li> <li>Default priority on relations is now max + 1</li> <li>new <code>Publications</code> and <code>Links</code> core object types</li> <li>Changed <code>title</code> set rules on Profiles and Users => <code>name</code>, <code>surname</code> and <code>company_name</code> are used</li> <li><code>uname</code>: sanitized on save and max length limit set</li> <li>It is now possible to create custom actions on <code>Signup</code></li> <li>Static property schema definition can be overridden</li> <li>Multi application configurations are now possible</li> </ul> <h3>Integration changes</h3> <ul> <li>Refactor tests on <code>default://</code> and <code>thumbnails://</code> filesystems</li> <li>New <code>Resources</code> utility to handle migrations easily</li> <li><code>config</code> and <code>auth_providers</code> added to Resources utility</li> <li><code>Resources</code> migrations now supports <code>YAML</code> format</li> <li><code>YAML</code> format also on column properties migrations</li> <li><code>ObjectsHandler</code> has been improved</li> </ul> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v4.2.0">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v4.2.0">Source code(zip)</a><br><i class="fa fa-codepen m-r-xs" aria-hidden="true"></i><a href="https://github.com/bedita/bedita/releases/download/v4.2.0/bedita-4-2-0.zip">bedita-4-2-0.zip(12.99 MB)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> v4.1.0(Jan 29, 2020) </h4> <div class="review-description"> <article class="markdown-body"> <p>Main changes on this release below, see also the <a href="https://github.com/bedita/bedita/compare/v4.0.0...v4.1.0">complete changelog</a>.</p> <h3>API changes</h3> <ul> <li>Categories and Tags API</li> <li>Object & resources <code>/history</code> endpoint</li> <li>User <strong>opt-out</strong>, remove user data request</li> <li>Add external <strong>provider thumbs</strong> to <code>/media/thumbs</code> response</li> <li>Fix <code>/</code> to <code>/home</code> redirect via explicit path</li> </ul> <h3>Core changes</h3> <ul> <li>Object and resource history data model</li> <li>Categories and Tags data model</li> <li>Refactor object table hierarchy and behaviors</li> <li>Introduce <strong>core</strong> property types, <code>core_type</code> flag</li> <li>Fix timezone save problem on datetime properties</li> </ul> <h3>Integration changes</h3> <ul> <li>Add <strong>MySQL 8</strong> and <strong>Maria DB</strong> 10+ to Travis CI</li> <li><code>PHP 7.4</code> Travis task added, <code>PHP 7.1</code> removed</li> <li>Update code sniffer rules to <code>PSR-12</code> via cakephp/codesniffer 3.2.*</li> </ul> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/v4.1.0">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/v4.1.0">Source code(zip)</a><br><i class="fa fa-codepen m-r-xs" aria-hidden="true"></i><a href="https://github.com/bedita/bedita/releases/download/v4.1.0/bedita-4-1-0.zip">bedita-4-1-0.zip(13.07 MB)</a><br> </article> </div> </div> </div> </li> <li> <div class="d-flex"> <div class="right"> <h4> 4.0.0(Oct 8, 2019) </h4> <div class="review-description"> <article class="markdown-body"> <p>We are happy to announce the immediate availability of <strong>BEdita 4.0.0</strong> cactus*.</p> <p>This is the first stable release of <code>BEdita 4</code>.</p> <p>BEdita 4 is a ready to use back-end API to handle the data of your mobile, IoT, web and desktop app. It provides also an extensible framework to build your custom back-end API via plugins.</p> <p>BEdita 4 provides:</p> <ul> <li>a headless server application with a complete REST & GraphQL (**) API to model, create, modify and retrieve your data</li> <li>a default admin <a href="https://github.com/bedita/web">web application</a> released separately</li> </ul> <p>Here the main changes on this release, see also the <a href="https://github.com/bedita/bedita/compare/v4.0.0-RC2...v4.0.0">complete changelog</a>.</p> <h3>API changes</h3> <ul> <li>Block auth operations on blocked/deleted user</li> <li>Logged user cannot trash himself</li> <li>Fix errors uploading XML or JSON files</li> <li>Add <code>meta.media_url</code> property to media objects</li> <li>Fix problems with <code>relations</code> with empty params that can't be saved</li> <li>Signup new configuration options</li> <li>Custom error handler to avoid HTML on <code>trigger_error</code></li> <li>Add <code>locked</code> filter on objects</li> </ul> <h3>Core changes</h3> <ul> <li>Relations and Properties utilities</li> <li>Allow <code>+02</code> and <code>+0200</code> as Timezone format in input date</li> <li>Fix <code>DefaultValues</code> configuration handling on core types</li> <li>Avoid bad side effects on DataCleanup behavior</li> <li>New <code>streams removeOrphans</code> shell</li> <li>Fix <code>created_by/modified_by</code> foreign key check on objects</li> <li>Permanent user removal and anonymization</li> <li>Apply default values only on new objects</li> <li>Allow missing or empty <code>params</code> JSON object relations</li> <li>Make user <code>email</code> changeable if null</li> </ul> <h3>Integration changes</h3> <ul> <li>Travis can't install mysql-5.7 on trusty</li> <li>Fix various Docker permissions issues</li> <li>Use <code>bedita/dev-tools</code> stable releases</li> <li>Upgrade to <code>CakePHP 3.8.x</code> and support <code>PHP 7.3</code></li> </ul> <p>(*)<a href="http://en.wikipedia.org/wiki/Cactus">“cactus”</a> is a member of the plant family Cactaceae. The word "cactus" derives from the Ancient Greek κάκτος, kaktos, a name originally used for a spiny plant whose identity is not certain. (from Wikipedia)</p> <p>(**) GraphQL endpoint still in the works...</p> <i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/tarball/4.0.0">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/bedita/bedita/zipball/4.0.0">Source code(zip)</a><br><i class="fa fa-codepen m-r-xs" aria-hidden="true"></i><a href="https://github.com/bedita/bedita/releases/download/4.0.0/bedita-4-0-0.zip">bedita-4-0-0.zip(13.64 MB)</a><br> </article> </div> </div> </div> </li> </ul> </div> </div> </div> </div> <div class="col-lg-4 right"> <div id="basic" class="tab-pane fade show active"> <div class="box shadow-sm rounded bg-white mb-3"> <div class="box-title border-bottom p-3"> <h6 class="m-0">Owner </h6> </div> <div class="d-flex align-items-center p-3 job-item-header"> <div class="overflow-hidden mr-2"> <h6 class="font-weight-bold -dark mb-0 text-truncate"> BEdita </h6> <div class="small text-gray-500"> </div> </div> <img class="img-fluid ml-auto" style="border-radius: 50%;" src="https://avatars.githubusercontent.com/u/2121737?v=4&s=60" alt="BEdita"> </div> <div class="box-body p-3"> <a href="https://github.com/bedita/bedita" rel="nofollow" target="_blank" class="btn btn-lg btn-block btn-info mb-3"><i class="fa fa-github" aria-hidden="true"></i> GitHub </a> <a href="https://www.bedita.com" rel="nofollow" target="_blank" class="btn btn-lg btn-block btn-dark mb-3"><i class="fa fa-home" aria-hidden="true"></i> https://www.bedita.com</a> </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/hotmeteor-regex-php-web-frameworks"><h6 class="font-weight-bold ">A set of ready-made regex helper methods for use in your Laravel application.</h6></a> <p class="mb-0 text-muted">Regex A set of ready-made regex helper methods for use in your Laravel application. Installation composer require hotmeteor/regex Usage Regex comes wi</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/378585?v=4&s=40" alt="Adam Campbell" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 229 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Dec 25, 2022 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/mikecao-flight-php-web-frameworks"><h6 class="font-weight-bold ">An extensible micro-framework for PHP</h6></a> <p class="mb-0 text-muted">What is Flight? Flight is a fast, simple, extensible framework for PHP. Flight enables you to quickly and easily build RESTful web applications. requi</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/477975?v=4&s=40" alt="Mike Cao" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 2.5k <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Dec 30, 2022 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/chevere-chevere-php-web-frameworks"><h6 class="font-weight-bold ">Framework for building extensible server-side progressive applications for modern PHP.</h6></a> <p class="mb-0 text-muted">Chevere ?? Subscribe to the newsletter to don't miss any update regarding Chevere. Framework for building extensible server-side progressive applicati</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/60615737?v=4&s=40" alt="Chevere" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 65 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Jan 6, 2023 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/meowphp-hydrator"><h6 class="font-weight-bold ">An Hydrator class that can be used for filling object from array and extracting data from objects back to arrays.</h6></a> <p class="mb-0 text-muted">Hydrator namespace: Meow\Hydrator Library that can hydrate (fill object with data from array) and extract data from object back to array. Installation</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/93654649?v=4&s=40" alt="Meow" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 2 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Feb 3, 2022 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/redaxscript-redaxscript-php-web-frameworks"><h6 class="font-weight-bold ">A modern, ultra lightweight and rocket fast Content Management System</h6></a> <p class="mb-0 text-muted">Redaxscript A modern, ultra lightweight and rocket fast Content Management System for SQLite, MSSQL, MySQL and PostgreSQL. Installation Clone the repo</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/33218952?v=4&s=40" alt="redaxscript" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 247 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Nov 12, 2022 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/exaco-laravel-octane-dockerfile-php-web-frameworks"><h6 class="font-weight-bold ">Production ready Dockerfile for Octane powered Laravelish web services and microservices</h6></a> <p class="mb-0 text-muted">Laravel Octane Dockerfile A pretty configurable and production ready multi-stage Dockerfile for Octane powered Laravelish web services and microservic</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/86201660?v=4&s=40" alt="Exalab.co" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 245 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Dec 26, 2022 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/pods-framework-pods-php-web-frameworks"><h6 class="font-weight-bold ">Pods is a development framework for creating, extending, managing, and deploying customized content types in WordPress.</h6></a> <p class="mb-0 text-muted">Pods Framework Pods is a development framework for creating, extending, managing, and deploying customized content types in WordPress. Description Che</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/1049430?v=4&s=40" alt="Pods Foundation, Inc" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 982 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Jan 4, 2023 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/jacobkiers-html-over-dns"><h6 class="font-weight-bold ">An experiment to host a website with the content served over DNS.</h6></a> <p class="mb-0 text-muted">html-over-dns An experiment to host a website inside of DNS. Now visible at https://jacobkiers.net/hod/index.html. To see what actually happens, use t</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/402504?v=4&s=40" alt="Jacob Kiers" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 28 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Nov 26, 2022 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/Comos-qpm-php-web-frameworks"><h6 class="font-weight-bold ">QPM, the process management framework in PHP, the efficient toolkit for CLI development. QPM provides basic daemon functions and supervision mechanisms to simplify multi-process app dev.</h6></a> <p class="mb-0 text-muted">QPM QPM全名是 Quick(or Q's) Process Management Framework for PHP. PHP 是强大的web开发语言,以至于大家常常忘记PHP 可以用来开发健壮的命令行(CLI)程序以至于daemon程序。 而编写daemon程序免不了与各种进程管理打交道。Q</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/10754601?v=4&s=40" alt="Comos" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 75 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Dec 21, 2021 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/swoft-cloud-swoft-component"><h6 class="font-weight-bold ">📦 This is a repository of centralized management of all swoft core components</h6></a> <p class="mb-0 text-muted">Swoft Component This repository is used to manage all swoft core components. 中文说明 中文说明请查看 README.zh-CN.md IMPORTANT All components will NOT be modifie</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/31836049?v=4&s=40" alt="Swoft Cloud" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 95 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Nov 16, 2022 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/AliasIO-Swiftlet-php-web-frameworks"><h6 class="font-weight-bold ">Quite possibly the smallest MVC framework you'll ever use.</h6></a> <p class="mb-0 text-muted">Swiftlet Swiftlet is quite possibly the smallest MVC framework you'll ever use. And it's swift. Licensed under the MIT license. Buzzword compliance ✔ </p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/77259?v=4&s=40" alt="Elbert Alias" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 429 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Nov 13, 2022 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/bcosca-fatfree-php-web-frameworks"><h6 class="font-weight-bold ">A powerful yet easy-to-use PHP micro-framework designed to help you build dynamic and robust Web applications - fast!</h6></a> <p class="mb-0 text-muted">A powerful yet easy-to-use PHP micro-framework designed to help you build dynamic and robust Web applications - fast! Condensed in a single ~65KB file</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/199570?v=4&s=40" alt="Bong Cosca" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 2.6k <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Dec 30, 2022 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/chinawilon-swoole_spider"><h6 class="font-weight-bold ">Multi-process coroutine edition Swoole spider !! Learn about Swoole's network programming and the use of its related APIs</h6></a> <p class="mb-0 text-muted">swoole_spider php bin/spider // Just do it !! Cache use Swoole\Table; use App\Table\Cache; $table = new Table(1<<20); // capacity size $table->column</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/13992306?v=4&s=40" alt="null" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 3 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Apr 22, 2021 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/Jerry-Shaw-NervSys-php-web-frameworks"><h6 class="font-weight-bold ">A very slight PHP framework, very easy to use and integrate. </h6></a> <p class="mb-0 text-muted"> A very slight PHP framework, very easy to use and integrate.</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/13212198?v=4&s=40" alt="Jerry" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 95 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Oct 26, 2022 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/utopia-php-abuse"><h6 class="font-weight-bold ">Lite & fast micro PHP abuse library that is **easy to use**.</h6></a> <p class="mb-0 text-muted">Utopia Abuse Utopia framework abuse library is simple and lite library for managing application usage limits. This library is aiming to be as simple a</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/50054679?v=4&s=40" alt="utopia" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 23 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Dec 17, 2022 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/ronmarasigan-PIP-php-web-frameworks"><h6 class="font-weight-bold ">PIP is a tiny application framework built for people who use a LAMP stack.</h6></a> <p class="mb-0 text-muted">PIP is a tiny application framework built for people who use a LAMP stack. PIP aims to be as simple as possible to set up and use.</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/52983006?v=4&s=40" alt="Ron Marasigan" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 244 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Dec 30, 2022 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/Masihgh-pussycat"><h6 class="font-weight-bold ">a framework for WebDevelop based on the mvc structure. The name of this project for Fun because everyone can use it. Completely simple and powerful structure for all your projects</h6></a> <p class="mb-0 text-muted">A_A (-.-) ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ |-| █▄─▄▄─█▄─██─▄█─▄▄▄▄█─▄▄▄▄█▄─█─▄█─▄▄▄─██▀▄─██─▄</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/48735862?v=4&s=40" alt="MasihGhaznavi" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 7 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Jun 29, 2022 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/mhthnz-yii2-tarantool"><h6 class="font-weight-bold ">Tarantool connector for yii2 framework. Allow to use activerecord, schemas, widgets and more.</h6></a> <p class="mb-0 text-muted">Tarantool connector for yii2 framework Tarantool connector for yii2 framework. Allow to use framework abstractions such as ActiveRecord, Schema, Table</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/16205740?v=4&s=40" alt="Andrey" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 11 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Nov 21, 2021 </div> </div> <div class="box shadow-sm mb-3 rounded bg-white ads-box"> <div class="p-3 border-bottom"> <a href="/repo/EtorojahOkon-TrailLamp-php-web-frameworks"><h6 class="font-weight-bold ">TrailLamp is a lightweight, easy-to-use Php MVC framework that can be used to build web applications and REST APIs.</h6></a> <p class="mb-0 text-muted">TrailLamp Introduction TrailLamp is a lightweight, easy-to-use Php MVC framework that can be used to build web applications and REST APIs. Installatio</p> </div> <div class="p-2"> <img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/65219496?v=4&s=40" alt="Etorojah Okon" > <i class="fa fa-star ml-3" aria-hidden="true"></i> 14 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Jun 10, 2022 </div> </div> </div> </div> </div> </div> <!-- footer --> <footer class="bg-white"> <div class="container"> <div class="copyright"> <div class="logo"> <a href="/"> <img src="/assets/images/logo_bestofphp.png"> </a> </div> <p>2022.bestofphp </p> </div> </div> </footer> <!-- footer--> <!-- Bootstrap core JavaScript --> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha512-bnIvzh6FU75ZKxp0GXLH9bewza/OIw6dLVh9ICg0gogclmYGguQJWl8U30WpbsGTqbIiAwxTsbe76DErLq5EDQ==" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.bundle.min.js" integrity="sha512-Oy5BruJdE3gP9+LMJ11kC5nErkh3p4Y0GawT1Jrcez4RTDxODf3M/KP3pEsgeOYxWejqy2SPnj+QMpgtvhDciQ==" crossorigin="anonymous"></script> <!-- select2 Js --> <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js" integrity="sha512-2ImtlRlf2VVmiGZsjm9bEyhjGW4dU7B6TNwh/hx/iSByxNENtj3WVE6o/9Lj4TJeVXPi4bnOIMXFIJJAeufa0A==" crossorigin="anonymous"></script> <!-- Custom --> <script src="/assets/js/custom.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazyload/1.9.1/jquery.lazyload.min.js"></script> <script> $(function() { $("img.lazy").lazyload({ threshold :180, failurelimit :20, effect : "fadeIn" }); }); </script> <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/highlight.min.js"></script> <script> hljs.initHighlightingOnLoad(); </script> </body> </html>