templates/Doc/index.html.twig line 1

Open in your IDE?
  1. {% extends 'Layouts/Doc/default.html.twig' %}
  2. {% block title %}{{ 'app.documentation.menu.architecture.overview'|trans }}{% endblock %}
  3. {% block headerPageTitle %}{{ 'app.documentation.menu.architecture.overview'|trans|upper }}{% endblock %}
  4. {% block body %}
  5.     <div class="card mb-12">
  6.         <div class="card-body flex-column p-5">
  7.             <div class="d-flex align-items-center h-lg-200px p-5 p-lg-15">
  8.                 <div class="row">
  9.                     <div class="col-md-12 pt-5 scroll-y">
  10.                         <h1 class="fw-bold fs-4 fs-lg-1 text-gray-800 mb-3">Architectural drivers</h1>
  11.                         <div class="position-relative w-100 text-gray-800">
  12.                             <p>All architectural decisions need to be backed by a valid reason. The fundamental signposts we use to take such choices, are explained in <a href="{{ path('foxorders_documentation_architectural_drivers') }}"><strong>Architectural Drivers section</strong></a>.</p>
  13.                         </div>
  14.                     </div>
  15.                 </div>
  16.             </div>
  17.             <div class="d-flex align-items-center p-lg-15">
  18.                 <div class="row">
  19.                     <div class="col-md-12 pt-5 scroll-y">
  20.                         <h1 class="fw-bold fs-4 fs-lg-1 text-gray-800 mb-3">Architecture</h1>
  21.                         <div class="position-relative w-100 text-gray-800">
  22.                             <p>On the below image you can see the symbolic representation of Popina Order architecture.</p>
  23.                             <img alt="Architecture" class="mt-10" src="{{ foxorders_doc ~ 'foxorders-architecure.jpeg' }}" style="width: 400px; height: 600px; margin: auto;display: block;"/>
  24.                             <p class="mt-10">Keep on reading this chapter to learn more about each of its parts: Admin, Shop, Cash register, API, Core and Bundles.</p>
  25.                         </div>
  26.                     </div>
  27.                 </div>
  28.             </div>
  29.             <div class="d-flex align-items-center p-lg-15">
  30.                 <div class="row">
  31.                     <div class="col-md-12 pt-5 scroll-y">
  32.                         <h1 class="fw-bold fs-4 fs-lg-1 text-gray-800 mb-3">Division into Core, Admin, Shop, Cash register and API</h1>
  33.                         <h2 class="fs-3 mt-10">Core</h2>
  34.                         <p>The <strong>Core</strong> is another component that integrates all the other components. The <strong>Core component</strong> is where all the logic and implementations that are useful for our project's operations are gathered.</p>
  35.                         <p><strong>Popina Order</strong> has here a fully integrated concept of everything that is needed to run a webshop.</p>
  36.                         <h2 class="fs-3 mt-10">Admin</h2>
  37.                         <p>In every system with the security layer the functionalities of system administration need to be restricted to only some users with a certain roles:</p>
  38.                         <ul>
  39.                             <li><strong>Administrator:</strong> Full access to configure the project ang global options, and access to all franchises and shops.</li>
  40.                             <li><strong>Support:</strong> Read access only to all franchises and shops to help our clients.</li>
  41.                             <li><strong>Manager:</strong> Full access to configure his franchises and shops.</li>
  42.                             <li><strong>Shop owner:</strong> Full access to configure his shop.</li>
  43.                         </ul>
  44.                         <h2 class="fs-3 mt-10">Shop</h2>
  45.                         <p>Our <strong>ShopBundle</strong> and <strong>FranchiseBundle</strong> is basically a standard B2C interface for everything that happens in the webshop's system, where the clients can make and pay their orders. Also here views have been built using the <strong>ReactJS</strong>.</p>
  46.                         <h2 class="fs-3 mt-10">Cash register</h2>
  47.                         <p>When enabled, all orders made from the webshop are send to the cash <strong>registers existing</strong> in the <strong>physical shop(s)</strong>.</p>
  48.                         <h2 class="fs-3 mt-10">API</h2>
  49.                         <p>When we created our API based on API Platform framework we have done everything to offer API as easy as possible to use by developer. The most important features of our API:</p>
  50.                         <ul>
  51.                             <li>All operations are grouped by <strong>shop owner</strong>, <strong>manager</strong> and <strong>admin</strong> context (three prefixes).</li>
  52.                             <li>We create all endpoints implementing the REST principles and we are using http verbs (<strong>POST</strong>, <strong>GET</strong>, <strong>PUT</strong>, <strong>PATCH</strong>, <strong>DELETE</strong>).</li>
  53.                             <li>Returned responses contain minimal information (developer should extend serialization if need more data).</li>
  54.                             <li>Entire business logic is separated from API - if it necessary we dispatch command instead mixing API logic with business logic.</li>
  55.                         </ul>
  56.                     </div>
  57.                 </div>
  58.             </div>
  59.         </div>
  60.     </div>
  61. {% endblock %}