This is a Symfony client application that does work with
Gripp there Gripp API v3
and demonstrate Gripp API use.
The application is highly independent of the Entities used and a good example of writing generic code and API-First development to facilitate a Rapid-application development (RAD) process.
The application consumes the Gripp API as client but has various API server interfaces itself as well:
- GraphQL with it's own GraphiQL in-browser IDE with generated API documentation
- Gatsby React static Progressive Web App (PWA), mobile app
- RESTful
- Swagger OpenAPI with generated API documentation
- Hydra and JSON-LD
- React Admin
- React Next Express front end
- React Redux Progressive Web App (PWA), mobile app
- Vue Single-page application (SPA), web application or web site
- JSON:API
- HAL
- JSON
- XML
- YAML
- CSV
- HTML
- JSON-RPC
The web application is able to export it's data to your desktop:
- CSV
- vCard as an extended(*) Writer
- JSON
- Microsoft Excel
- XML
*) The extended Writer is part of this project and still Proof of concept (PoC).
The application uses various security measures:
- Security at GitHub
- Symfony Security Monitoring
- Structured Query Language (SQL) injection protection
- Cross-site request forgery (CSRF) protection
- bcrypt password hashing
- Two-factor authentication (2FA) using Google Authenticator App
- Bearer Authentication for JSON-RPC API server
- JWT Authentication for RESTful API server
- Use Cross-Origin Resource Sharing (CORS) headers for RESTful API server
Add this local hostname to your DNS.:
127.0.0.1 gripp.localhost
Start Docker. Provision the application with PHP Composer and JavaScript Node.js NPM packages.:
bin/docker_start.sh
bin/provision.sh
We generate large part of the application:
- JSON to JSON Table Schema using PHP
- JSON Table Schema to Database Schema using tableschema-sql-js
- Generate Models with an extended(*) Doctrine Object Relational Mapper (ORM) ImportMapping Command
- Generate Views with an extended(*) SONATA PROJECTs AdminMaker Command using the Symfony MakerBundle
*) The extended code generators are part of this project and still Proof of concept (PoC).
The first 2 steps are already done, being outside this project scope. You have to perform the last 2 steps, import the Database Schema and generate Entities and Views, here is how:
Import the database schema and relations.:
mysql -u root -p db_name< db/schema.sql
mysql -u root -p db_name< db/relations.sql
Generate the entities and admin webpages. Migrate and load example data:
bin/generate.sh
bin/console doctrine:migrations:migrate
mysql -u root -p db_name< db/data.sql
First start and go into your Docker workspace:
bin/docker_workspace.sh
In there run:
bin/phpunit
Browse to the login screen:
/opt/google/chrome/chrome http://gripp.localhost/sonata
You will be prompted for your credentials:
The username demo and password demo will do. (The inactive username nodemo and password nodemo will not be allowed to login.) If you succeed to login, you can navigate to your login credentials in the upper right corner pull-down:
As you see in the upper right messages and tasks navigation items and tasks pull-down the application uses the AdminLTE 2 Bootstrap 3 template.
The dashboard contains the vis.js Timeline, for now only with, entries of the messages and tasks:
Feel free to contribute.
Using existing code as much as possible, some projects got an accepted Pull Request:
- AdminLTE Bundle for Symfony 4 * Dutch translation added
- tableschema-sql-js * Constraints required, enum added and Field type date, datetime and time added
Created with Eclipse PDT Extension group Symfony framework plugin
(Eclipse Marketplace)
Eclipse is free open-source project that grows with your contributions.