SlideShare a Scribd company logo
Admin UI
Tools and development setup
Xavier Butty
Software Engineer
for the open minded
First name, Last name
Position
for the open mindedfor the open minded
How did we
develop the new
Admin UI?
01
– for the open minded
Development process
Design UI and
API
Integration
API
Backend
implementation
MocksFrontend
implementation
JS
First name, Last name
Position
for the open mindedfor the open minded
02
The right tools
for the job
– for the open minded
Code quality checker
CSS extension / compiler
Javascript framework
Task runner
Testing framework
Lightweight http server - Mocks
Test runner
Minification
Template pre-compilation
Compress img
– for the open minded
Code quality
The checkstyle tool for Javascript
Adaptable to code convention
Much more flexible than JSLint
JS Hint
– for the open minded
Demo JSHint
http://jshint.com/
– for the open minded
CSS extension
Enhance the stylesheet creation
Reusable component

Cascading

Mixins
LESS is currently used in the new Admin UI, 

but an update to SASS coming soon
Better scalability
Larger community
More resources available
– for the open minded
Demo Less
http://less2css.org/
– for the open minded
Javascript Framework
Most popular javascript MVW framework actually
Widely used
Large community supporting it
Powered by Google
Lots of valuable resources available online
Scalable
Short introduction coming at 11h30
– for the open minded
Testing frameworks
Behaviour driven unit tests frameworks
Most popular unit test solution for AngularJS
ngMocks AngularJS Module provides mocking for
the tests
– for the open minded
Test runner
Spawn a web server which loads your application's
source code and executes your tests
Highly configurable
De facto test runner for AngularJS
Existing Adapter for Jasmine
– for the open minded
Lightweight HTTP server
Connect
Extensible HTTP server framework
Used for development
Allow to use middleware for mocking the REST
endpoints.
Livereload
– for the open minded
Task runner
Javascript Task runner working on Node.js
Large choice of plugins for all the popular frontend
tools
The “Gruntfile” is what the “pom” is to Maven
GRUNT
First name, Last name
Position
for the open mindedfor the open minded
03
Automate the tasks
– for the open minded
What has to be automated?
Refresh page
Run unit tests
Check 

code quality
Start 

web server
Compile CSS
Copy source
to web server
Copy sources
to target folder
When developing? When building?
– for the open minded
Creating profiles
JSHint Code quality
CSS compilation
Development profile
Copy src to WEBAPP
Build profile
Create/Clean WEBAPP folder
Webserver
WatchJS
JSHint Code quality
Copy src to WEBAPP
WatchCSS
Karma: unit tests
CSS compilation
Copy src to WEBAPP
CSS compilation
JSHint Code quality
Karma: unit tests
Copy to target folder
with 

skipTests option
– for the open minded
Integration in Maven
pom.xml
Install
Dependancies
Run build profile
First name, Last name
Position
for the open mindedfor the open minded
Setup
04
– for the open minded
Module files structure
Web app sources
Tests sources + Mock files
Grunt profiles
Grunt
dependancies
– for the open minded
Web app files structure
Components
used in different context
Components related 

to specific pages
– for the open minded
Tools configuration
JSHint
Convention > jshint.json
Grunt
Profiles > Gruntfile.js
Dependancies > package.json
Karma
Configuration > src/tests/resources/karma.conf.js
First name, Last name
Position
for the open mindedfor the open minded
05
Some practice
– for the open minded
Prerequisites
Only Grunt… that itself requires:
> Node.js and its package manager npm
> Install project dependencies:



cd $MATTERHORN_HOME/modules/matterhorn-admin-ui-ng/

npm install
> Ready!
– for the open minded
Let’s run it
Css compilation
Code qualityJSHint
Copy
Web server
Test runner
Unit tests
– for the open minded
Creating Mocks
Mock files are located in:
/src/test/resources/[GET/POST/PUT/
DELETE]
The connect web server + a middleware to redirect
request to it.
Need to mock /info/me.json for GET request?
Simply add a file called me.json in 

/src/test/resources/GET/info/me.json
First name, Last name
Position
for the open mindedfor the open minded
06
Next steps
– for the open minded
What’s next
e2e tests with Protractor
Compilation of the whole as an AngularJS app
use Bower for Javascript dependencies
Define Javascript convention for the community
thanks for you attention
Xavier Butty
Software Engineer
for the open minded
Questions?

http://entwinemedia.com
@entwinemedia

More Related Content

PPTX
SharePoint Development with the SharePoint Framework
PDF
Introduction to azure web applications for office and share point developers
PDF
Serverless Delivery
PPTX
Application Lifecycle Management for Office 365 development
PPTX
Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)
PDF
Continuous Delivery for Front-End Engineers
PPTX
Top10 Characteristics of Awesome Apps
PDF
Exposing Salesforce REST Services Using Swagger
SharePoint Development with the SharePoint Framework
Introduction to azure web applications for office and share point developers
Serverless Delivery
Application Lifecycle Management for Office 365 development
Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)
Continuous Delivery for Front-End Engineers
Top10 Characteristics of Awesome Apps
Exposing Salesforce REST Services Using Swagger

What's hot (20)

PPTX
Next level of Appium
PDF
DEVELOPING SHAREPOINT FRAMEWORK SOLUTIONS FOR THE ENTERPRISE
PPTX
Build 2017 - B8083 - The future of Visual Studio
PPTX
COB - Azure Functions for Office 365 developers
PPTX
Alfresco Process Services REST API - Alfresco DevCon 2018
PPTX
Chris OBrien - Weaving Enterprise Solutions into Office Products
PDF
Serverless Architecture Patterns - Manoj Ganapathi
PPTX
ASP.NET 5 & Unit Testing
PPTX
Chris O'Brien - Modern SharePoint sites and the SharePoint Framework - reference
PPT
Streamlined Geek Talk
PPTX
Alfresco Development Framework Basic
PDF
Lambdaless and AWS CDK
PDF
Firebase hosting
PPTX
ASP.NET 5 Overview for Apex Systems
PDF
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
PDF
Using CI for continuous delivery Part 1
PPTX
Automated Testing for Websites With Selenium IDE
PDF
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
PDF
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
PDF
Five Ways to Scale your API Without Touching Your Code
Next level of Appium
DEVELOPING SHAREPOINT FRAMEWORK SOLUTIONS FOR THE ENTERPRISE
Build 2017 - B8083 - The future of Visual Studio
COB - Azure Functions for Office 365 developers
Alfresco Process Services REST API - Alfresco DevCon 2018
Chris OBrien - Weaving Enterprise Solutions into Office Products
Serverless Architecture Patterns - Manoj Ganapathi
ASP.NET 5 & Unit Testing
Chris O'Brien - Modern SharePoint sites and the SharePoint Framework - reference
Streamlined Geek Talk
Alfresco Development Framework Basic
Lambdaless and AWS CDK
Firebase hosting
ASP.NET 5 Overview for Apex Systems
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Using CI for continuous delivery Part 1
Automated Testing for Websites With Selenium IDE
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Five Ways to Scale your API Without Touching Your Code
Ad

Viewers also liked (9)

PPTX
Presentation1
PPTX
Anoop's birthday
PPTX
Ikt udruzenje Pk FBiH - 02-12-2014 - jahorina
PPTX
GV1244 - Learner Strategies
PPTX
Tutorial eclipse
PPTX
How Teddy Roosevelt Became President
PPT
Info ars google drive
PPTX
Portman International
PPTX
Social networking in my everyday life (facebook)
Presentation1
Anoop's birthday
Ikt udruzenje Pk FBiH - 02-12-2014 - jahorina
GV1244 - Learner Strategies
Tutorial eclipse
How Teddy Roosevelt Became President
Info ars google drive
Portman International
Social networking in my everyday life (facebook)
Ad

Similar to Opencast Admin UI - Tools and development setup (20)

PPTX
Grunt Continuous Development of the Front End Tier
PPTX
Improving Workflows With Grunt.js - Big D Design 2014 - Dallas Texas
PDF
Grunt.js and Yeoman, Continous Integration
PDF
Front End Development Automation with Grunt
PDF
JLPDevs - Optimization Tooling for Modern Web App Development
PPTX
The front end toolkit
PDF
Ustream vs Legacy, It's never too late to start your fight! #Jsist 2014
PDF
Extending Build to the Client: A Maven User's Guide to Grunt.js
PPTX
Reusability is the goal
PDF
Modern Web Application Development Workflow - EclipseCon France 2014
PDF
High productivity web development workflow - JavaScript Meetup Saigon 2014
PDF
High Productivity Web Development Workflow
PDF
Automate your WordPress Workflow with Grunt.js
PDF
Front-end development automation with Grunt
PDF
Modern UI Development With Node.js
PDF
The Javascript Toolkit 2.0
PDF
GruntJS
PDF
Modern Web Application Development Workflow - EclipseCon Europe 2014
PDF
Javascript toolkit
PDF
Javascript toolkit
Grunt Continuous Development of the Front End Tier
Improving Workflows With Grunt.js - Big D Design 2014 - Dallas Texas
Grunt.js and Yeoman, Continous Integration
Front End Development Automation with Grunt
JLPDevs - Optimization Tooling for Modern Web App Development
The front end toolkit
Ustream vs Legacy, It's never too late to start your fight! #Jsist 2014
Extending Build to the Client: A Maven User's Guide to Grunt.js
Reusability is the goal
Modern Web Application Development Workflow - EclipseCon France 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014
High Productivity Web Development Workflow
Automate your WordPress Workflow with Grunt.js
Front-end development automation with Grunt
Modern UI Development With Node.js
The Javascript Toolkit 2.0
GruntJS
Modern Web Application Development Workflow - EclipseCon Europe 2014
Javascript toolkit
Javascript toolkit

Recently uploaded (20)

PPTX
Machine Learning_overview_presentation.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
sap open course for s4hana steps from ECC to s4
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PPTX
Cloud computing and distributed systems.
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Spectroscopy.pptx food analysis technology
PPT
Teaching material agriculture food technology
PDF
Electronic commerce courselecture one. Pdf
PDF
Encapsulation theory and applications.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
Machine Learning_overview_presentation.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
Chapter 3 Spatial Domain Image Processing.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
sap open course for s4hana steps from ECC to s4
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Cloud computing and distributed systems.
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Spectroscopy.pptx food analysis technology
Teaching material agriculture food technology
Electronic commerce courselecture one. Pdf
Encapsulation theory and applications.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
The AUB Centre for AI in Media Proposal.docx
A comparative analysis of optical character recognition models for extracting...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
MYSQL Presentation for SQL database connectivity
Building Integrated photovoltaic BIPV_UPV.pdf

Opencast Admin UI - Tools and development setup

  • 1. Admin UI Tools and development setup Xavier Butty Software Engineer for the open minded
  • 2. First name, Last name Position for the open mindedfor the open minded How did we develop the new Admin UI? 01
  • 3. – for the open minded Development process Design UI and API Integration API Backend implementation MocksFrontend implementation JS
  • 4. First name, Last name Position for the open mindedfor the open minded 02 The right tools for the job
  • 5. – for the open minded Code quality checker CSS extension / compiler Javascript framework Task runner Testing framework Lightweight http server - Mocks Test runner Minification Template pre-compilation Compress img
  • 6. – for the open minded Code quality The checkstyle tool for Javascript Adaptable to code convention Much more flexible than JSLint JS Hint
  • 7. – for the open minded Demo JSHint http://jshint.com/
  • 8. – for the open minded CSS extension Enhance the stylesheet creation Reusable component
 Cascading
 Mixins LESS is currently used in the new Admin UI, 
 but an update to SASS coming soon Better scalability Larger community More resources available
  • 9. – for the open minded Demo Less http://less2css.org/
  • 10. – for the open minded Javascript Framework Most popular javascript MVW framework actually Widely used Large community supporting it Powered by Google Lots of valuable resources available online Scalable Short introduction coming at 11h30
  • 11. – for the open minded Testing frameworks Behaviour driven unit tests frameworks Most popular unit test solution for AngularJS ngMocks AngularJS Module provides mocking for the tests
  • 12. – for the open minded Test runner Spawn a web server which loads your application's source code and executes your tests Highly configurable De facto test runner for AngularJS Existing Adapter for Jasmine
  • 13. – for the open minded Lightweight HTTP server Connect Extensible HTTP server framework Used for development Allow to use middleware for mocking the REST endpoints. Livereload
  • 14. – for the open minded Task runner Javascript Task runner working on Node.js Large choice of plugins for all the popular frontend tools The “Gruntfile” is what the “pom” is to Maven GRUNT
  • 15. First name, Last name Position for the open mindedfor the open minded 03 Automate the tasks
  • 16. – for the open minded What has to be automated? Refresh page Run unit tests Check 
 code quality Start 
 web server Compile CSS Copy source to web server Copy sources to target folder When developing? When building?
  • 17. – for the open minded Creating profiles JSHint Code quality CSS compilation Development profile Copy src to WEBAPP Build profile Create/Clean WEBAPP folder Webserver WatchJS JSHint Code quality Copy src to WEBAPP WatchCSS Karma: unit tests CSS compilation Copy src to WEBAPP CSS compilation JSHint Code quality Karma: unit tests Copy to target folder with 
 skipTests option
  • 18. – for the open minded Integration in Maven pom.xml Install Dependancies Run build profile
  • 19. First name, Last name Position for the open mindedfor the open minded Setup 04
  • 20. – for the open minded Module files structure Web app sources Tests sources + Mock files Grunt profiles Grunt dependancies
  • 21. – for the open minded Web app files structure Components used in different context Components related 
 to specific pages
  • 22. – for the open minded Tools configuration JSHint Convention > jshint.json Grunt Profiles > Gruntfile.js Dependancies > package.json Karma Configuration > src/tests/resources/karma.conf.js
  • 23. First name, Last name Position for the open mindedfor the open minded 05 Some practice
  • 24. – for the open minded Prerequisites Only Grunt… that itself requires: > Node.js and its package manager npm > Install project dependencies:
 
 cd $MATTERHORN_HOME/modules/matterhorn-admin-ui-ng/
 npm install > Ready!
  • 25. – for the open minded Let’s run it Css compilation Code qualityJSHint Copy Web server Test runner Unit tests
  • 26. – for the open minded Creating Mocks Mock files are located in: /src/test/resources/[GET/POST/PUT/ DELETE] The connect web server + a middleware to redirect request to it. Need to mock /info/me.json for GET request? Simply add a file called me.json in 
 /src/test/resources/GET/info/me.json
  • 27. First name, Last name Position for the open mindedfor the open minded 06 Next steps
  • 28. – for the open minded What’s next e2e tests with Protractor Compilation of the whole as an AngularJS app use Bower for Javascript dependencies Define Javascript convention for the community
  • 29. thanks for you attention Xavier Butty Software Engineer for the open minded Questions?
 http://entwinemedia.com @entwinemedia