• Stars
    star
    440
  • Rank 99,050 (Top 2 %)
  • Language
    PHP
  • License
    MIT License
  • Created about 8 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Robust and easy to use PHP Framework for Web Apps

Agile UI - Robust and easy to use PHP Framework for Web Apps

Agile UI implement server side rendering engine and over 50 UI generic components for interacting with your data.

Agile UI is the quickest way for building back-end UI, admin interfaces, data management systems for medium and large projects designed around roles, complex logic, formulas...

  • Agile UI relies on abstract data. It could be stored in SQL, NoSQL or in external API.
  • Agile UI adjusts to your data model. If you change your model structure, UI will reflect that.
  • Agile UI offers out-of-the-box components, you don't need front-end development experience.
  • Agile UI is interactive, making it very easy to trigger PHP code on JS events.
  • Agile UI is compact - single file, several lines of code - that's all it takes.
  • Agile UI is extensible - integrates VueJS for custom components and interactive behaviours.

Build CodeCov GitHub release Code Climate

Quick-Links: Documentation. Demo-site. ATK Data. Forum. Chat. Commercial support.

How does Agile Toolkit work?

The goal of Agile Toolkit is to reduce amount of coding to build general purpose web applications. There are three steps involved:

  1. Define your "Data Model" through Agile Data Framework and associate with SQL, NoSQL or API.
  2. Initialize UI components, connecting them to Data Model to build User Interface for your application.
  3. If needed - Use Agile API to provide API access for your Mobile/React app or IoT devices.

Agile Data allows you to define models, fields, relations, formulas, aggregates, expressions, user action and access control rules. Both Agile UI and Agile API will follow those rules.

Integrations and Apps using Agile UI

Agile UI can integrate with frameworks like Laravel or Symfony, has integration with Wordpress and there are several high-level projects developed entirely on Agile Toolkit.

Who uses Agile Toolkit?

Many companies use Agile Toolkit to implement admin interface and in some cases even user-facing interface.

How does it work?

Download from https://ui.atk4.org/ or install ATK UI with composer require atk4/ui

Create "index.php" file with:

<?php

require_once __DIR__ . '/vendor/autoload.php';

$app = new \Atk4\Ui\App();
$app->initLayout([\Atk4\Ui\Layout\Centered::class]);

$form = \Atk4\Ui\Form::addTo($app);
$form->addField('email');
$form->onSubmit(function (Form $form) {
    // implement subscribe here

    return $form->jsSuccess('Subscribed ' . $form->model->get('email') . ' to newsletter.');
});

// decorate anything
$form->buttonSave->set('Subscribe');
$form->buttonSave->icon = 'mail';

// everything renders automatically

Open PHP in the browser and observe a fully working and good looking form:

subscribe

ATK UI relies on https://fomantic-ui.com CSS framework to render the form beautifully. It also implements submission callback in a very straightforward way. The demo also demonstrates use of JavaScript action, which can make objects interact with each-other (e.g. Form submit reloads Table).

Database Integration with ATK Data

To get most of ATK UI, use ATK Data to describe your business models such as "User" or "Purchase". When you define models, you can start using some more advanced components:

Crud is a fully-interactive component that supports pagination, reloading, conditions, data formatting, sorting, quick-search, ordering, custom actions and modals, but at the same time is very easy to use:

$app = new \Atk4\Ui\App(['title' => 'hello world']);
$app->initLayout([\Atk4\Ui\Layout\Admin::class]);
$app->db = \Atk4\Data\Persistence::connect('mysql://user:pass@localhost/atk');

\Atk4\Ui\Crud::addTo($app)
    ->setModel(new User($app->db));

ATK Data allows you to set up relations between models:

class User extends Model
{
    protected function init(): void
    {
        parent::init();

        $this->addField('name');
        $this->addField('gender', ['enum' => 'female', 'male', 'other']);
        $this->hasMany('Purchases', ['model' => [Purchase::class]]);
    }
}

Conventional Crud works only with a single model, but with add-on you can take advantage this relationship information: https://github.com/atk4/mastercrud

use \Atk4\Mastercrud\MasterCrud;

// set up $app here

$masterCrud = MasterCrud::addTo($app)
    ->setModel(new User($app->db), [
        'Purchases' => [],
    ]);

Agile UI can be styled

It's easy to create your own application styling. Here are some example UI:

subscribe

Actions

As of version 2.0 - Agile Toolkit offers support for User Actions. Those are easy to define in your Data Model declaration:

$this->addUserAction('archive', function (Model $m) {
    $m->set('is_archived', true);
    $this->saveAndUnload();
});

User interface such as Crud or Card will automatically recognize new action and offer user to execute it. You can also control who has permission to execute actions through our ACL system.

Agile UI Feature highlights

Agile UI has some unique features:

Callbacks. Callbacks everywhere!

One of the fundamental features of ATK is Callback - ability to dynamically generate a route then have JS part of the component invoke it. Thanks to this approach, code can be fluid, simple and readable:

$tabs = \Atk4\Ui\Tabs::addTo($app);
\Atk4\Ui\Message::addTo($tabs->addTab('Intro'), ['Other tabs are loaded dynamically!']);

$tabs->addTab('Users', function (\Atk4\Ui\VirtualPage $p) use ($app) {
    // this tab is loaded dynamically, but also contains dynamic component

    \Atk4\Ui\Crud::addTo($p)
        ->setModel(new User($app->db));
});

$tabs->addTab('Settings', function (\Atk4\Ui\VirtualPage $p) use ($app) {
    // second tab contains an AJAX form that stores itself back to DB

    $m = new Settings($app->db);
    $m = $m->load(2);
    \Atk4\Ui\Form::addTo($p)
        ->setModel($m);
});

Wizard

Another component implementation using a very friendly PHP syntax:

wizard

You get most benefit when you use various ATK UI Components together. Try the following demo: https://ui.atk4.org/demos/interactive/wizard.php. The demo implements:

  • Multi-step wizard with ability to navigate forward and backward
  • Form with validation
  • Data memorization in the session
  • Table with column formatter, Messages
  • Real-time output console

With ATK it takes about 50 lines of PHP code only to build it all.

Getting Started: Build your admin

It's really easy to put together a complex Admin system. Add this code to a new PHP file (tweak it with your database details, table and fields):

<?php

$app = new \Atk4\Ui\App('My App');
$app->initLayout([\Atk4\Ui\Layout\Admin::class]);
$app->db = \Atk4\Data\Persistence::connect('mysql://user:pass@localhost/yourdb');

class User extends \Atk4\Data\Model
{
    public $table = 'user';

    protected function init(): void
    {
        parent::init();

        $this->addField('name');
        $this->addField('email', ['required' => true]);
        $this->addField('password');
    }
}

\Atk4\Ui\Crud::addTo($app)
    ->setModel(new User($app->db));

The result is here:

Bundled and Planned components

Agile UI comes with many built-in components:

All components can be view using the demos application.

Component Description Introduced
View Template, Render Tree and various patterns 0.1
Button Button in various variations including icons, labels, styles and tags 0.1
Input Decoration of input fields, integration with buttons. 0.2
JS Assign JS events and abstraction of PHP callbacks. 0.2
Header Simple view for header. 0.3
Menu Horizontal and vertical multi-dimensional menus with icons. 0.4
Form Validation, Interactivity, Feedback, Layouts, Field types. 0.4
Layouts Admin, Centered. 0.4
Table Formatting, Columns, Status, Link, Template, Delete. 1.0
Grid Toolbar, Paginator, Quick-search, Expander, Actions. 1.1
Message Such as "Info", "Error", "Warning" or "Tip" for easy use. 1.1
Modal Modal dialog with dynamically loaded content. 1.1
Reloading Dynamically re-render part of the UI. 1.1
Actions Extended buttons with various interactions 1.1
Crud Create, List, Edit and Delete records (based on Advanced Grid) 1.1
Tabs 4 Responsive: Admin, Centered, Site, Wide. 1.2
Loader Dynamically load itself and contained components inside. 1.3
Modal View Open/Load contained components in a dialog. 1.3
Breadcrumb Push links to pages for navigation. Wizard. 1.4
ProgressBar Interactive display of a multi-step PHP code execution progress 1.4
Console Execute server/shell commands and display progress live 1.4
Items and Lists Flexible and high-performance way to display lists of items. 1.4
Wizard Multi-step, wizard with temporary data storing. 1.4
Actions Visualization of user-defined actions 2.0

Add-ons and integrations

Add-ons:

Integrations:

All bundled components are free and licensed under MIT license. They are installed together with Agile UI.

External and 3rd party components may be subject to different licensing terms.

Documentation and Community

ATK UI makes active use of ATK Core and ATK Data frameworks.

ATK UI Schematic

agile-ui

Credits and License

Agile UI, Data and API are projects we develop in our free time and offer you free of charge under terms of MIT license. If you wish to say thanks to our core team or take part in the project, please contact us through our chat on Gitter.

Gitter

More Repositories

1

data

Data Access PHP Framework for SQL & high-latency databases
PHP
268
star
2

atk4

PHP framework for developing powerful web applications. Inspired by desktop toolkits (QT, Cocoa, .NET). For developers with any skill level.
PHP
184
star
3

dsql

Object-Oriented SQL Query Builder
PHP
58
star
4

atk4-web

http://agiletoolkit.org/
JavaScript
26
star
5

login

Add-on implementing User Login, Registration, Management and Password
PHP
26
star
6

core

Core Traits for Agile Toolkit
PHP
19
star
7

agiletoolkit-css

Flexible, Extensible, Modern and Independent Web User Interface CSS framework focused on simplicity, aesthetic and consistency.
CSS
16
star
8

atk4-addons

Agile Toolkit Addons
PHP
15
star
9

api

Implementation of RestAPI for Agile Data
PHP
14
star
10

chart

Chart add-on for Agile Toolkit
PHP
11
star
11

mastercrud

Manipulates ATK CRUD through the force of references
PHP
9
star
12

filestore

Implements integration between ATK UI and FlySystem
PHP
9
star
13

atk4-example

Example Project for ATK4
PHP
9
star
14

sink

Kitchen Sink Project for Agile Toolkit 4.3 - Demonstration of various features.
CSS
8
star
15

money-lending-tutorial

Money Lending App - Agile Toolkit Tutorial
PHP
7
star
16

laravel-ad

Extension for Laravel to natively integrate with Agile Data (https://github.com/atk4/data)
PHP
5
star
17

invoice

UI for entering and displaying invoices
PHP
5
star
18

i18n

Translation Service for Atk4/Ui
PHP
4
star
19

warehouse

Sample Warehouse app in Agile Toolkit
PHP
4
star
20

book

CSS
4
star
21

seat-selector

Add-on for ATK providing you with a seated ticket booking interface for Cinemas, Arenas and other Venues
PHP
4
star
22

schema

Few classes built on top of Agile Data that can take care of your SQL database schema
PHP
4
star
23

infrastructure

ATK Infrastructure Repo
HCL
3
star
24

report

Reporting extension for Agile Data
PHP
3
star
25

menu

Agile Toolkit 4.3 Horizontal and Vertical menu add-on.
PHP
3
star
26

validate

Integration of atk4/data with Valitron for rule-based data validation.
PHP
3
star
27

google-address

Google address auto-filling field.
PHP
2
star
28

audit

Transparent audit implementation for Agile Data
PHP
2
star
29

data-primer

PHP
2
star
30

data-spreadsheet

use phpoffice/phpspreadsheet as persistence in atk4/data
2
star
31

atk4-homepage

"Static" home page plugin for AgileToolkit
PHP
2
star
32

getting-started-guide

Containing our Getting Started application and a tutorial on how to build it.
PHP
2
star
33

markdown

Markdown editor for agiletoolkit (atk4)
JavaScript
2
star
34

messages

PHP
1
star
35

autocomplete

Implementation of AutoComplete functionality
PHP
1
star
36

dvdrental

dvdrental
PHP
1
star
37

docs

Documentation for Agile Toolkit
1
star
38

colubris

PHP
1
star
39

atk4-codepad

Simple Codepad for Agile Toolkit
CSS
1
star
40

image

Dokker build image for ATK pipelines
PHP
1
star
41

atkjs-chrome

Chrome extension for debugging ATK UI JavaScript
JavaScript
1
star
42

atk4-obsolete

Obsolete Libraries from older versions of Agile Toolkit
PHP
1
star
43

ambient-addons

Content Management Add-on for Agile Toolkit
JavaScript
1
star
44

community

Community maintained extensions for atk4/data and atk/ui.
PHP
1
star