SlideShare a Scribd company logo
OPTIMISING YOUR
FRONT END
WORKFLOW
MATTHEW
DAVIS
@mdavis1982
PhpSpec

phpspec/nyan-formatters
PhpSpec

R!
WW
AW
R
phpspec/nyan-formatters
Terrible at jokes
Terrible at jokes

Sorry!
Advances in back end code
D
DD

COM
POSI
TION
ENICS
STH
CALI

Advances in back end code
Y
R
D

TDD

PSR

ES
FAC
TER
IN

SOLID
COMPOSER
When we look at front end code…
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Cool tools for front end code
BOWER

S
S
LE
SASS

ANGULAR

GRU

NT
I PT
R for front end code
SC
E tools
Cool
FFE
CO
IG
W
GU
T
LP
N
MA
EO
Y
REQUI
RE JS
* more
And a GAZILLION
* more
And a GAZILLION

*approximately
Lack of practical examples
😢
Let’s change that!
😄
Example Project

https://github.com/mdavis1982/workflow
Example Project
Simple Article Management

https://github.com/mdavis1982/workflow
Example Project
Simple Article Management
Administration Area
https://github.com/mdavis1982/workflow
Twig
Insanely powerful
Insanely powerful
Compiled and cached
Insanely powerful
Compiled and cached
Often overlooked
Translate all the things
Translations are notoriously
messy
But it’s easy to keep them
organised
config.yml

framework:

translator:

{ fallback: "%locale%" }
Article.php
/**

* The title of the Article

*

* @var string

*

* @ORMColumn(type="string", length=255)

*

* @AssertNotBlank(message="article.title.not_blank")

* @AssertLength(

*
max=255,

*
maxMessage="article.title.length.max"

* )

*/

protected $title;
validators.en.yml
article:

title:

not_blank: You must enter a title

length:

max: The title cannot be longer than {{ limit }}
characters



content:

not_blank: You must enter some content

ArticleType.php
$builder

->add(

'title',

'text',

[

'label' => 'article.label.title'

]

)
ArticleType.php
$builder

->add(

'title',

'text',

[

'label' => 'article.label.title'

]

)	

For all properties in the form
forms.en.yml
article:

label:

title: Title

content: Content

submit: Save

forms.en.yml?!
ArticleType.php
/**

* {@inheritdoc}

*/

public function setDefaultOptions(OptionsResolverInterface $resolver)

{

$resolver->setDefaults([

'data_class'
=> 'MDEntityArticle',

'translation_domain' => 'forms'

]);

}
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
When your translations don’t
work…
CLEAR THE CACHE!
CLEAR THE CACHE!

Even in the dev environment
Translate everything
Translate everything
All titles, actions, single words
Translate everything
All titles, actions, single words
Translations per ‘section’
admin.en.yml
article:

title:

list: All Articles

create: Add a New Article



action:

create: Add New

cancel: Cancel

list.html.twig
{% block body %}

<h1>{{ 'article.title.list'|trans({}, 'admin') }}</h1>

{% if articles %}

<ul class="articles">

{% for article in articles %}

<li>{{ article.title }}</li>

{% endfor %}

</ul>

{% endif %}



<a href="{{ path('admin.article.create') }}”>	
{{ 'article.action.create'|trans({}, 'admin') }}	
</a>

{% endblock body %}
Messy
Template Inheritance
Default base template
base.html.twig
<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8" />

<title>{% block title %}Welcome!{% endblock %}</title>

{% block stylesheets %}{% endblock %}

<link rel="icon" type="image/x-icon"
href="{{ asset('favicon.ico') }}" />

</head>

<body>

{% block body %}{% endblock %}

{% block javascripts %}{% endblock %}

</body>

</html>
Doesn’t promote great code
base.html.twig
<!doctype html>



<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6 lt-ie9 lt-ie8 lt-ie7"> <![endif]-->

<!--[if IE 7 ]>
<html lang="en" class="no-js ie7 lt-ie9 lt-ie8"> <![endif]-->

<!--[if IE 8 ]>
<html lang="en" class="no-js ie8 lt-ie9"> <![endif]-->

<!--[if IE 9 ]>
<html lang="en" class="no-js ie9"> <![endif]-->

<!--[if (gt IE 9)|!(IE)]><!-->

<html lang="en" class="no-js"><!--<![endif]-->

<head>

<meta charset="utf-8" />

<title>{% block title %}{% endblock title %}</title>



<!-- Set up mobile viewport for responsive design -->

<meta name="viewport" content="width=device-width" />



{% block stylesheets %}{% endblock stylesheets %}

</head>

<body>

{% block content %}{% endblock content %}

{% block javascripts %}{% endblock javascripts %}

</body>

</html>

Gives us a better foundation
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
The same HTML structure and
assets per ‘section’?
New ‘Layouts’ Directory
Directory Structure
admin.html.twig
{% extends "::base.html.twig" %}



{% block title %}	
{{ 'defaults.title'|trans({}, 'admin') }}	
{% endblock title %}



{% block content %}

{% block body %}{% endblock body %}

{% endblock content %}

frontend.html.twig
{% extends "::base.html.twig" %}



{% block title %}{{ 'defaults.title'|trans }}{% endblock title %}



{% block content %}

{% block header %}{% endblock header %}

{% block body %}{% endblock body %}

{% block footer %}{% endblock footer %}

{% endblock content %}
What?!
Change the extends
list.html.twig
{% extends "MDMainBundle:Layouts:admin.html.twig" %}



{% block body %}

<h1>{{ 'article.title.list'|trans({}, 'admin') }}</h1>

{% if articles %}

<ul class="articles">

{% for article in articles %}

<li>{{ article.title }}</li>

{% endfor %}

</ul>

{% endif %}



<a href="{{ path('admin.article.create') }}”>	
{{ 'article.action.create'|trans({}, 'admin') }}	
</a>

{% endblock body %}

Given ourselves flexible base
Given ourselves flexible base
All boilerplate code is DRY
Given ourselves flexible base
All boilerplate code is DRY
Defaults per ‘section’
trans_default_domain
list.html.twig
{% extends "MDMainBundle:Layouts:admin.html.twig" %}



{% trans_default_domain "admin" %}



{% block body %}

<h1>{{ 'article.title.list'|trans }}</h1>

{% if articles %}

<ul class="articles">

{% for article in articles %}

<li>{{ article.title }}</li>

{% endfor %}

</ul>

{% endif %}



<a href="{{ path('admin.article.create') }}”>	
{{ 'article.action.create'|trans }}	
</a>

{% endblock body %}

But wait!
admin.html.twig

{% trans_default_domain "admin" %}
NOPE
And it won’t be fixed
Node.js

http://nodejs.org
Node.js
Server-side JavaScript

http://nodejs.org
Node.js
Server-side JavaScript
Adds extra functionality
http://nodejs.org
npm
npm
Composer for node
npm
Composer for node
Install globally or into project
OMG!!1!
Bower

http://bower.io
Demo:
Installing Bower With No Sudo - Eek!
👎
Demo:
Installing Bower Successfully - Yay!
👍
Getting stuff into your project
Find dependencies
Demo:
Using Bower To Search For Packages - Modernizr
Install dependencies
Demo:
Using Bower To Install Packages - Modernizr
We can do better
.bowerrc
Demo:
Using .bowerrc To Customise Installation Directory
Better
Better
Save dependencies
bower.json
Demo:
Using Bower To Save Dependencies To bower.json
Don’t forget .gitignore
Easy to reference assets
Easy to reference assets
{% block javascripts %}
<script src="{{ asset('/vendor/modernizr/modernizr.js') }}"></script>
{% endblock javascripts %}
Easy to reference assets
{% block javascripts %}
<script src="{{ asset('/vendor/modernizr/modernizr.js') }}"></script>
{% endblock javascripts %}

Globally or per ‘section’
Different locations?
Non-standard install
Non-standard install
Make it clear
Non-standard install
Make it clear
Potentially more flexibility
Gulp

http://gulpjs.com
Build tool
“

Every week someone who doesn’t
understand Make writes a new build
system in JavaScript.
#gruntjs #gearjs #gulpjs #broccolijs.
Laugh or cry?
https://twitter.com/aslak_hellesoy/status/435506106496851968
Streaming
Plugin architecture
Demo:
Installing Gulp Globally With npm
One extra step
Demo:
Installing Gulp and Gulp-Util Into A Project With npm
Don’t forget .gitignore
Minify JavaScript
Demo:
Using Gulp To Minify JavaScript
Use it in our project
frontend.html.twig

{% block javascripts %}

<script src="{{ asset('/web/js/vendor/modernizr.js') }}"></script>

{% endblock javascripts %}
ITCHY NOSE!!!
We have 2 copies in web/
We have 2 copies in web/
Bower install to /assets/vendor
We have 2 copies in web/
Bower install to /assets/vendor
Prevents source being public
(S)CSS
Normal SCSS workflow
frontend.scss
@import "assets/vendor/normalize-scss/normalize";



$body-width: 60% !default;



body

{

width: $body-width;

margin: 0 auto;

}

gulpfile.js
var scss = require('gulp-sass');	
!
!
gulp.task('scss', function() {

return gulp.src('assets/scss/*.scss')

.pipe(scss())

.pipe(gulp.dest('web/css'));

});
frontend.html.twig

{% block stylesheets %}

<link rel="stylesheet" href="{{ asset('/css/frontend.css') }}" />

{% endblock stylesheets %}
matt at Chloe in ~/Sites/workflow.dev on dev *	
🍔 $ gulp scss	
[gulp] Using file /Users/matt/Sites/workflow.dev/gulpfile.js	
[gulp] Working directory changed to /Users/matt/Sites/workflow.dev	
[gulp] Running 'scss'...	
[gulp] Finished 'scss' in 11 ms
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Running commands manually
gets old real fast
Watching!
gulpfile.js

gulp.task('watch', function() {

gulp.watch('assets/scss/**/*.scss', ['scss']);

});
Demo:
Gulp Watch In Action
Awesomesauce!
Only scratching the surface!
Gulp plugins
TESTS

T
IN
L

CONCAT
ONS plugins
ATIGulp
IFIC
OT
N
IG
W
T
SE
I
TIM
BROW
P
O
SERIF
Y

RENAME

COP
Y

GI

T
Custom actions are easy
Setting up a project can be
tedious
Can be taken much further!
GAZILLIONS of tools available
GAZILLIONS of tools available
Don’t use all of them!
Plan it!
Plan it!

**groan**
Questions?
Thanks!
@mdavis1982

More Related Content

DOCX
Askep cva
Mamanda Poernomo
 
PPTX
Kematian Pada Sel
nadhiraadelina safitri
 
DOCX
SAK Ca. Recti.docx
BayuIlhamRelinKh
 
PDF
Pemeriksaan status mental
PikaLubis
 
PPT
Penatalaksanaan gg-jiwa
Tedylesmana Pribadi
 
PPTX
Anatomi fisiologi dalam sistem hematologi
Warnet Raha
 
DOCX
Penyakit sistem musculoskeletal pasa
Septian Muna Barakati
 
Askep cva
Mamanda Poernomo
 
Kematian Pada Sel
nadhiraadelina safitri
 
SAK Ca. Recti.docx
BayuIlhamRelinKh
 
Pemeriksaan status mental
PikaLubis
 
Penatalaksanaan gg-jiwa
Tedylesmana Pribadi
 
Anatomi fisiologi dalam sistem hematologi
Warnet Raha
 
Penyakit sistem musculoskeletal pasa
Septian Muna Barakati
 

What's hot (20)

DOCX
Askep pada pasien hipertensi
Warnet Raha
 
PDF
Resusitasi cairan
Wahyu Purnama
 
PPTX
Dasar dasar nyeri akut, neuropatik dan kronik
Department of Anesthesiology, Faculty of Medicine Hasanuddin University
 
PPTX
Triage Intra Hospital & Initial Assesment.pptx
ssuser8c26251
 
PDF
Pedoman diagnostik ppdgj iii
IrgiPutra
 
PDF
LAPORAN PENDAHULUAN DIABETES MELITUS
Menanti Senja
 
PDF
RPS GERONTIK (1).pdf
PutriPamungkas8
 
PDF
Assessment psikiatri
Azimatul Karimah
 
PPTX
Konsep Keperawatan Kesehatan Masyarakat (Ilmu dasar Keperawatan VII)
Herlin Nuraeni Wijaya
 
PPT
Stroke non hemoragik
Eezna Scarlett
 
PPT
Pengkajian umum sistim endokrin
widipta
 
DOCX
Gagal ginjal akut
Yabniel Lit Jingga
 
PPTX
Kelompok 2 usus buntu.pptx
Fhomeshop
 
DOCX
Askep hipertensi
Danang Novandhori
 
PPTX
2. mekanisme adaptasi sel
Operator Warnet Vast Raha
 
PPTX
Severe Malaria
Soroy Lardo
 
PPTX
Askep waham
Rini Safitri
 
PPTX
contoh soal kasus uji kompetensi KMB III.pptx
NandaMaisyuri1
 
PPT
TERAPI OKSIGEN.ppt
TYASLARASATI
 
Askep pada pasien hipertensi
Warnet Raha
 
Resusitasi cairan
Wahyu Purnama
 
Dasar dasar nyeri akut, neuropatik dan kronik
Department of Anesthesiology, Faculty of Medicine Hasanuddin University
 
Triage Intra Hospital & Initial Assesment.pptx
ssuser8c26251
 
Pedoman diagnostik ppdgj iii
IrgiPutra
 
LAPORAN PENDAHULUAN DIABETES MELITUS
Menanti Senja
 
RPS GERONTIK (1).pdf
PutriPamungkas8
 
Assessment psikiatri
Azimatul Karimah
 
Konsep Keperawatan Kesehatan Masyarakat (Ilmu dasar Keperawatan VII)
Herlin Nuraeni Wijaya
 
Stroke non hemoragik
Eezna Scarlett
 
Pengkajian umum sistim endokrin
widipta
 
Gagal ginjal akut
Yabniel Lit Jingga
 
Kelompok 2 usus buntu.pptx
Fhomeshop
 
Askep hipertensi
Danang Novandhori
 
2. mekanisme adaptasi sel
Operator Warnet Vast Raha
 
Severe Malaria
Soroy Lardo
 
Askep waham
Rini Safitri
 
contoh soal kasus uji kompetensi KMB III.pptx
NandaMaisyuri1
 
TERAPI OKSIGEN.ppt
TYASLARASATI
 
Ad

Viewers also liked (20)

PDF
Automating Large Applications on Modular and Structured Form with Gulp
Anderson Aguiar
 
PDF
Twig tips and tricks
Javier Eguiluz
 
KEY
Front-end style guides - fronteers @ WHITE (30/08/12)
Stijn Janssen
 
PDF
Love Twig
Antonio Peric-Mazar
 
PPT
Managing packages with Bower and NuGet in ASP.NET Core
Philip Domingo
 
PDF
Frontend asset management with Bower and Gulp.js
Renan Gonçalves
 
PDF
Async navigation with a lightweight ES6 framework
sparkfabrik
 
PDF
Introduction to Twig
markstory
 
KEY
Front end engineering, YUI Gallery, and your future
Luke Smith
 
PPTX
Front-End Intelligence
Judy T Raj
 
PPTX
Workflow User Interfaces Patterns
Jean Vanderdonckt
 
PPTX
Unit testing of java script and angularjs application using Karma Jasmine Fra...
Samyak Bhalerao
 
PPTX
Joget Workflow v5 Training Slides - Module 18 - Integrating with External System
Joget Workflow
 
PDF
Introduction to Express and Grunt
Peter deHaan
 
PDF
Insights on Protractor testing
Dejan Toteff
 
PPTX
Workflows im Unternehmenseinsatz - Am Beispiel des Onboarding-Prozesses / Ein...
busitec GmbH
 
PPTX
DIGIT Noe 2016 - Overview of front end development today
Bojan Veljanovski
 
PDF
React + Flux (Alt)
Cezar Luiz
 
PDF
Drupal 8: frontend development
sparkfabrik
 
PDF
Fast Prototyping Strategies for UI design
Luis Daniel Rodriguez
 
Automating Large Applications on Modular and Structured Form with Gulp
Anderson Aguiar
 
Twig tips and tricks
Javier Eguiluz
 
Front-end style guides - fronteers @ WHITE (30/08/12)
Stijn Janssen
 
Managing packages with Bower and NuGet in ASP.NET Core
Philip Domingo
 
Frontend asset management with Bower and Gulp.js
Renan Gonçalves
 
Async navigation with a lightweight ES6 framework
sparkfabrik
 
Introduction to Twig
markstory
 
Front end engineering, YUI Gallery, and your future
Luke Smith
 
Front-End Intelligence
Judy T Raj
 
Workflow User Interfaces Patterns
Jean Vanderdonckt
 
Unit testing of java script and angularjs application using Karma Jasmine Fra...
Samyak Bhalerao
 
Joget Workflow v5 Training Slides - Module 18 - Integrating with External System
Joget Workflow
 
Introduction to Express and Grunt
Peter deHaan
 
Insights on Protractor testing
Dejan Toteff
 
Workflows im Unternehmenseinsatz - Am Beispiel des Onboarding-Prozesses / Ein...
busitec GmbH
 
DIGIT Noe 2016 - Overview of front end development today
Bojan Veljanovski
 
React + Flux (Alt)
Cezar Luiz
 
Drupal 8: frontend development
sparkfabrik
 
Fast Prototyping Strategies for UI design
Luis Daniel Rodriguez
 
Ad

Similar to Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp (20)

PDF
[Bristol WordPress] Supercharging WordPress Development
Adam Tomat
 
PDF
Using HTML5 sensibly
Christian Heilmann
 
PDF
Going web native
Marcus Hellberg
 
PPT
Please dont touch-3.6-jsday
Francesco Fullone
 
PDF
Modern Web Application Development Workflow - EclipseCon France 2014
Stéphane Bégaudeau
 
PDF
Html5 intro
Kevin DeRudder
 
KEY
It's a Mod World - A Practical Guide to Rocking Modernizr
Michael Enslow
 
PDF
Desenvolvimento web com Ruby on Rails (parte 2)
Joao Lucas Santana
 
PDF
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
PDF
Front End Development for Back End Developers - Devoxx UK 2017
Matt Raible
 
PDF
Profiling PHP with Xdebug / Webgrind
Sam Keen
 
PDF
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Sadaaki HIRAI
 
KEY
Geek Moot '09 -- Smarty 101
Ted Kulp
 
PPTX
Introduction to HTML and CSS
danpaquette
 
PDF
Use Web Skills To Build Mobile Apps
Nathan Smith
 
KEY
Intro To Django
Udi Bauman
 
PDF
How to Webpack your Django!
David Gibbons
 
ODP
Introduce Django
Chui-Wen Chiu
 
PDF
[convergese] Adaptive Images in Responsive Web Design
Christopher Schmitt
 
[Bristol WordPress] Supercharging WordPress Development
Adam Tomat
 
Using HTML5 sensibly
Christian Heilmann
 
Going web native
Marcus Hellberg
 
Please dont touch-3.6-jsday
Francesco Fullone
 
Modern Web Application Development Workflow - EclipseCon France 2014
Stéphane Bégaudeau
 
Html5 intro
Kevin DeRudder
 
It's a Mod World - A Practical Guide to Rocking Modernizr
Michael Enslow
 
Desenvolvimento web com Ruby on Rails (parte 2)
Joao Lucas Santana
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
Front End Development for Back End Developers - Devoxx UK 2017
Matt Raible
 
Profiling PHP with Xdebug / Webgrind
Sam Keen
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Sadaaki HIRAI
 
Geek Moot '09 -- Smarty 101
Ted Kulp
 
Introduction to HTML and CSS
danpaquette
 
Use Web Skills To Build Mobile Apps
Nathan Smith
 
Intro To Django
Udi Bauman
 
How to Webpack your Django!
David Gibbons
 
Introduce Django
Chui-Wen Chiu
 
[convergese] Adaptive Images in Responsive Web Design
Christopher Schmitt
 

Recently uploaded (20)

PDF
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
Captain IT
 
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
AVTRON Technologies LLC
 
DOCX
Top AI API Alternatives to OpenAI: A Side-by-Side Breakdown
vilush
 
PPTX
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
Google’s NotebookLM Unveils Video Overviews
SOFTTECHHUB
 
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
AbdullahSani29
 
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
PPTX
The Power of IoT Sensor Integration in Smart Infrastructure and Automation.pptx
Rejig Digital
 
PDF
madgavkar20181017ppt McKinsey Presentation.pdf
georgschmitzdoerner
 
PDF
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PDF
CIFDAQ's Token Spotlight: SKY - A Forgotten Giant's Comeback?
CIFDAQ
 
PDF
agentic-ai-and-the-future-of-autonomous-systems.pdf
siddharthnetsavvies
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PDF
NewMind AI Monthly Chronicles - July 2025
NewMind AI
 
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
Captain IT
 
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
AVTRON Technologies LLC
 
Top AI API Alternatives to OpenAI: A Side-by-Side Breakdown
vilush
 
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
Doc9.....................................
SofiaCollazos
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
Google’s NotebookLM Unveils Video Overviews
SOFTTECHHUB
 
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
AbdullahSani29
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
The Power of IoT Sensor Integration in Smart Infrastructure and Automation.pptx
Rejig Digital
 
madgavkar20181017ppt McKinsey Presentation.pdf
georgschmitzdoerner
 
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
CIFDAQ's Token Spotlight: SKY - A Forgotten Giant's Comeback?
CIFDAQ
 
agentic-ai-and-the-future-of-autonomous-systems.pdf
siddharthnetsavvies
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
NewMind AI Monthly Chronicles - July 2025
NewMind AI
 

Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp