PHPackages                             noud/gripp\_client\_symfony - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. noud/gripp\_client\_symfony

ActiveProject[API Development](/categories/api)

noud/gripp\_client\_symfony
===========================

Gripp client Symfony

802[21 PRs](https://github.com/noud/gripp_client_symfony/pulls)PHP

Since Jul 28Pushed 3y agoCompare

[ Source](https://github.com/noud/gripp_client_symfony)[ Packagist](https://packagist.org/packages/noud/gripp_client_symfony)[ RSS](/packages/noud-gripp-client-symfony/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependenciesVersions (23)Used By (0)

Gripp Symfony
=============

[](#gripp-symfony)

Architecture
------------

[](#architecture)

[![Architecture](./docs/architecture.png?raw=true "Architecture")](./docs/architecture.png?raw=true)

Use
---

[](#use)

[![Gripp Symfony](./docs/gripp_symfony.png?raw=true "Gripp Symfony")](./docs/gripp_symfony.png?raw=true)

[![License: MIT](https://camo.githubusercontent.com/21f3cebee76997ca37449f6d03ea07602cff1219e89897b00c8c99bb523db26c/687474703a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e737667)](http://raw.githubusercontent.com/noud/gripp_api/master/LICENSE)[![master](https://camo.githubusercontent.com/548d6c3233e3aede7697ff4016101c1ba3cfbcfa48ddeb6773513c3736a60307/687474703a2f2f696d672e736869656c64732e696f2f62616467652f63757272656e742d6465762d6161313166662e737667)](http://github.com/noud/gripp_symfony/releases)

This is a Symfony client application that does work with

[Gripp](http://www.gripp.com) there [Gripp API v3](http://github.com/noud/gripp_api)

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](http://swagger.io/resources/articles/adopting-an-api-first-approach/) development to facilitate a [Rapid-application development (RAD)](http://en.wikipedia.org/wiki/Rapid_application_development) process.

API front ends
--------------

[](#api-front-ends)

The application consumes the Gripp API as client but has various API server interfaces itself as well:

- [GraphQL](http://en.wikipedia.org/wiki/GraphQL) with it's own [GraphiQL](http://github.com/graphql/graphiql/tree/master/packages/graphiql#readme) in-browser IDE with generated API documentation
    - [Gatsby React](http://github.com/noud/gatsby-graphql-gripp/blob/master/README.md) static [Progressive Web App (PWA)](http://en.wikipedia.org/wiki/Progressive_web_applications), mobile app
- [RESTful](http://en.wikipedia.org/wiki/Representational_state_transfer)
    - [Swagger OpenAPI](http://swagger.io/specification/) with generated API documentation
    - [Hydra](http://www.hydra-cg.com/) and [JSON-LD](http://json-ld.org/)
        - [React Admin](http://github.com/noud/react-admin-rest-openapi-gripp/blob/master/README.md)
        - [React Next Express](http://github.com/noud/react-next-express-hydra-gripp/blob/master/README.md) front end
        - [React Redux](http://github.com/noud/react-redux-rest-openapi-gripp/blob/master/README.md) [Progressive Web App (PWA)](http://en.wikipedia.org/wiki/Progressive_web_applications), mobile app
        - [Vue](http://github.com/noud/gripp_client_vue/blob/master/README.md) [Single-page application (SPA)](http://en.wikipedia.org/wiki/Single-page_application), web application or web site
    - [JSON:API](http://jsonapi.org/)
    - [HAL](http://stateless.co/hal_specification.html)
    - [JSON](http://www.json.org/)
    - [XML](http://www.w3.org/XML/)
    - [YAML](http://yaml.org/)
    - [CSV](http://tools.ietf.org/html/rfc4180)
    - [HTML](http://whatwg.org/)
- [JSON-RPC](http://www.jsonrpc.org/specification)

export
------

[](#export)

The web application is able to export it's data to your desktop:

- [CSV](http://en.wikipedia.org/wiki/Comma-separated_values)
- [vCard](http://en.wikipedia.org/wiki/VCard) as an extended(\*) Writer
- [JSON](http://en.wikipedia.org/wiki/JSON)
- [Microsoft Excel](http://en.wikipedia.org/wiki/Microsoft_Excel#File_formats)
- [XML](http://en.wikipedia.org/wiki/XML)

\*) The extended Writer is part of this project and still [Proof of concept (PoC)](http://en.wikipedia.org/wiki/Proof_of_concept).

Security
--------

[](#security)

The application uses various security measures:

- [Security at GitHub](http://github.com/security)
- [Symfony Security Monitoring](http://security.symfony.com)
- [Structured Query Language (SQL) injection](http://en.wikipedia.org/wiki/SQL_injection) protection
- [Cross-site request forgery (CSRF)](http://en.wikipedia.org/wiki/Cross-site_request_forgery) protection
- [bcrypt](http://en.wikipedia.org/wiki/Bcrypt) password hashing
- [Two-factor authentication (2FA)](http://en.wikipedia.org/wiki/Multi-factor_authentication) using [Google Authenticator App](http://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2)
- [Bearer Authentication](http://swagger.io/docs/specification/authentication/bearer-authentication) for JSON-RPC API server
- [JWT Authentication](http://jwt.io/) for RESTful API server
- Use [Cross-Origin Resource Sharing (CORS)](http://enable-cors.org) headers for RESTful API server

Provisioning
------------

[](#provisioning)

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
```

Generating
----------

[](#generating)

We generate large part of the application:

1. JSON to JSON [Table Schema](http://frictionlessdata.io/specs/table-schema) using [PHP](http://php.net)
2. JSON [Table Schema](http://frictionlessdata.io/specs/table-schema) to Database Schema using [tableschema-sql-js](http://github.com/frictionlessdata/tableschema-sql-js)
3. [Generate Models](http://symfony.com/doc/current/doctrine/reverse_engineering.html) with an extended(\*) [Doctrine Object Relational Mapper (ORM)](http://www.doctrine-project.org/projects/orm.html) ImportMapping Command
4. [Generate Views](http://symfony.com/doc/master/bundles/SonataAdminBundle/reference/console.html#make-sonata-admin) with an extended(\*) [SONATA PROJECT](http://sonata-project.org/)s [AdminMaker Command](http://symfony.com/doc/master/bundles/SonataAdminBundle/reference/console.html#make-sonata-admin) using the [Symfony MakerBundle](http://symfony.com/doc/current/bundles/SymfonyMakerBundle)

\*) The extended code generators are part of this project and still [Proof of concept (PoC)](http://en.wikipedia.org/wiki/Proof_of_concept).

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
