This section provides an overview of Syntapse supported technologies and are recommended for any new project. Please contact us if you have specific requirements not met with these tools.
Full stack development bootstrapping 1st class industry standard frameworks delivering data securely between your servers and to responsive displays on any device.
Symfony powered servers
All Syntapse's PHP server expertise is based around Symfony components to enable knowledge and skills to be easily transferred between projects
Symfony is fast becoming the de-facto standard for complex server development due to loosely coupled components which work together seamlessly to provide an field-proven framework for most applications.
Symfony PHP framework
Due to its reputation, widespread use and high reliability, Syntapse supports Symfony systems and components built upon it: Drupal, Laravel, Silex, and a host of others. Symfony is a complete framework constructed from a set of individual reusable components.
Symfony consists of:
- A toolbox - a set of prefabricated, rapidly integratable software components. This means that you will have to write less code, with less risk of error. This also means greater productivity and the ability to devote more time to doing those things which provide greater added value, such as managing guiding principles, side effects, etc.
- A methodology – an “assembly diagram” for applications. A structured approach may seem constraining at first. But in reality it allows developers to work both efficiently and effectively on the most complex aspects of a task, and the use of Best Practices guarantees the stability, maintainability and upgradeability of the applications you develop.
Drupal 8 is an object oriented content management framework built upon the foundations Symfony php components and provides tight integration throughout its architecture. Previous incarnations of Drupal were easy to modify due to its aspect oriented approach (which remains available to this day) but hard to manage in larger groups. Adoption of Symfony components has made modifiying Drupal a much easier task and the code is of a much higher quality than Drupal 7. This will likely only improve with time. According to Symfony's own website, Drupal uses the following Symfony Components and this list is likely to increase over iterations of Drupal:
Symfony Components used by Drupal 8:
Laravel PHP framework
Laravel is another framework built on Symfony components but lends itself to rapid applications development, simple file and code organisation, ORM, unit testing support and a lot of ready to use functionality. It ships with Artisan a great command line interface for scaffolding and managing projects. It offers first class cacheing and a solid security system. It is simpler to use and quite opinionated on its project structure, but is slower than Symfony on which it is built. Like Symfony it offers a first class unit test system. According to Symfony's own website, Laravel also uses a significant Symfony components (estimated at around 30% of its code base), and masks its complexity through its elegant simple interfaces:
Symfony Components used by Laravel
Silex PHP Microframework
Silex is a PHP microframework built upon Symfony and Pimple (dependency injection) and inspired by Sinatra (Ruby) framework. A microframework provides the guts for building simple single-file apps. Silex aims to be: concise (it exposes an intuitive and concise API), extensible (it has an extension system based around the Pimple micro service-container that makes it even easier to tie in third party libraries) and testable (it uses Symfony's HttpKernel, which abstracts request and response and simplifies app testing).
According to Symfony's own website, Silex uses a significant number of Symfony components and like Laravel masks its complexity and flexibitly through a simple interface to enable rapid prototype and simple single page application development.
Symfony components used by Silex:
Reactive, sleek, intuitive client UX design
We can develop software to meet your specific requirements by building on existing software
Full stack isomorphic stack development delivers a single code base rendered on client or server to speed up content delivery to any device.
It is a complete framework facilitating component templating, template and reactive driven forms, service definitions with dependency injection, a well defined module and component framework and first class project scaffolding via its ng commandline utility.
It enables the programmer to extend the HTML specification to define and use webcomponents in any HTML code. HTML can be extended with both structural and attribute directives and filters can be easily defined and assigned to all elements using pipes. Angular is relies heavily on ReactiveX (RXJS) and has deep integration with RXJS observables for simplified event stream handling and a variety of PubSub implementations.
React is a blazingly fast component based render layer for client UI's and uses shadow DOM to achieve its high render speeds. It is a library not a framework and requires agreement of a stack on which to operate. There are a number of established stacks to choose from based around Flux or Redux implementations for state management.
React uses one-way data flow, so only changes to the data result in changes to the UI. By using a Redux library, you change data in a global app store, and the components listen for changes there. The benefits of having all the app state in one place is having one source of truth. Another benefit is it makes it easier to inspect changes in the app and captures the different states of the app. This helps when trying to reproduce errors and enables debug "time travel" to forward and reverse over state changes to see their effect.
Development is on short release cycles with a large number of contributers which can often lead to breakages on larger projects. where development and change management will not be easy to establish as is the case for more complete frameworks such as Angular or Drupal.
Drupal 8 (js)
Drupal has contributed modules that allow Angular, React and Vue applications to be embedded as blocks directly within a Drupal site and accessed through its standard routing mechanisms. These are known as Progressively Decoupled Blocks and enable a gradual integration of Drupal and market leading client front-end frameworks and libraries. Drupal is evolving fast and future versions will most likely provide full integration with the React Component library.
Vue is a lightweight framework alternative to angular. It a very simple templating system that's easy to start using and is designed to enable incremental adoption of a full client stack. It can be compared against Angular both offering a complete full stack solution (React is a front end library and requires additional elements to make a complete stack). However as an alternative to those market leaders it provides a rapid switching period from other frameworks to Vue.js because of the similarity with Angular and React in terms of design and architecture. Vue.js is a preferred choice for proof of concepts, prototypes and minimum viable products of for use with new teams due do its ease of use and simplicity.
- Vue.js can be used for both building single-page applications and more difficult web interfaces of apps. The main thing is that smaller interactive parts can be easily integrated into the existing infrastructure with no negative effect on the entire system.
- Vue.js can help to develop pretty large reusable templates that can be made with no extra time allocated for that according to its simple structure.
- Vue.js is tiny weighing in around 20KB keeping its speed and flexibility that allows reaching much better performance in comparison to other frameworks.
We Automate Everything
Provisioning, Orchestrating, Automating server environments
This includes your builds, testing, development, linting, rebuilding documentation etc.
Ansible is a tool for provisioning and orchestration automation. It can be used to document and execute changes and updates from a single machine to simultaneous secure reliable updates on an entire network. It does so via execution of modules and scripts via playbooks which are essentially recipes for configuring your machine, replacing your command line input. Documentation is excellent and a wide variety of modules exist to cover most configuration scenarios.
Docker is an open-source project for automating the deployment of applications as portable, self-sufficient containers that can run virtually anywhere on any type of server. Docker serves as a lightweight alternative to full machine which needs its own operating system, but with Docker, applications operate inside a container that resides on a single host operating system that can serve many different containers.
Jenkins (Blue Ocean)
Jenkins and Blue Ocean offers a vastly simplified way to set up a continuous integration or continuous delivery environment for almost any combination of languages and source code repositories using pipelines, as well as automating other routine and monotonous development tasks. While Jenkins doesn’t eliminate the need to create scripts for individual steps, it does give you a faster and more robust way to integrate your entire chain of build, test, and deployment tools than you can easily build yourself.
Vagrant is a tool for building and managing virtual machine environments in a single workflow. With an easy-to-use workflow and focus on automation, Vagrant lowers development environment setup time, increases production parity, and makes the "works on my machine" excuse a relic of the past. Vagrant provides easy to configure, reproducible, and portable work environments built on top of industry-standard technology and controlled by a single consistent workflow to help maximize the productivity and flexibility of you and your team. It is more heavyweight than docker but can be used to host docker containers for a fully portable solution.
Database and file storage management
Picking the right file formats to future-proof your data assets
Mongodb is one of the most popular nosql database solutions available and comes with many advantages over relational SQL databases. When compared against relational databases, NoSQL databases are more scalable and provide superior performance, and their data model addresses several shortcomings of the the relational model. The advantages of NoSQL include being able to handle: large volumes of structured, semi-structured, and unstructured data, agile sprints, quick iteration, and frequent code pushes, object-oriented programming that is easy to use and flexible, and efficient, scale-out architecture instead of expensive, monolithic architecture
Redis is an ultra fast in memory key-value and data structure store which shines as a session cache, full page cache, data queue, and a full featured high performance pub/sub system with a multitude of uses. Because it stores all of its data in memory, the performance speed of Redis is unmatched. Although MongoDB faster than MysSQL the benchmarks for Redis are clearly faster than other solutions. Best used to speed up your applications running with either mongodb or mysql, or a combination of both.
mysql and phpmyadmin
MySQL is a free, robust database solution and is usually available on shared hosting packages and can be easily set up in a Linux, Unix or Windows environment. It is also very easy to set up and confiture in a VM or docker environment and scaled accordingly. If a web application requires more than database, requires load balancing or sharding, it is easy to set up maybe instances of the database requiring only the hardware costs, as opposed to commercial databases that would require a single license for each instance.
File and data formats
Migrating, transmitting, receiving, importing and exporting data in variety of supported file formats including XML, YAML, JSON, HTTP, REST, GraphQL using a variety of supported tools including. Syntapse management of file data includes session data both on the client and server, server file storage, and transmission across the network using json, yaml, csv, http and REST formats. Contact Syntapse for a full list of supported data formats for both storage and network transmission
Explore how Syntapse can assist your business and software development. Contact us for further assistance or general enquiries.
We can offer a range of services from half day consultancy, assessment reports, and troubleshooting to long term greenfield project involvement
As your technology partners we are happy to hear from schools and local authorities, communities and charities, engineers and scientists, startups and institutions