SlideShare a Scribd company logo
Building Multi-Tenant
and SaaS products in PHP
What	
  is	
  Innoma,c?	
  
2
First of all: what is NOT Innomatic?
Innomatic is NOT a framework like Laravel or Symfony
– in fact, we are progressively migrating to a system
based on Symfony components!
3
So, what really is Innomatic?
Innomatic is an open source platform for:
developing, deploying and managing
Multi-Tenant and SaaS web applications in PHP
4
Building multi-tenant apps
and SaaS products in
Innomatic
5
Building new SaaS: Classic vs Innomatic approach
6Innomatic Platform
Go	
  live!	
  
Classic	
  life	
  cycle	
  
Innoma,c	
  life	
  cycle	
  
Learn	
  and	
  
configure	
  
Innoma4c	
  
+	
  4me	
  
+	
  budget	
  
to	
  develop	
  &	
  market	
  the	
  app	
  
Innomatic Platform
Go	
  live!	
  
(late…)	
  
Develop	
  infrastructure	
  
(mul4	
  tenancy,	
  build	
  system,	
  
billing	
  tools,	
  CRM,	
  etc.)	
  
-­‐	
  Time	
  
-­‐	
  budget	
  
to	
  develop	
  &	
  market	
  the	
  app	
  
Opt.:	
  Innomedia	
  CMF	
  for	
  web	
  sites	
  
+	
  Innowork	
  BAF	
  for	
  intranets	
  
Innomatic Layers
7Innomatic Platform
Debug	
  
Tenant	
  Web	
  Apps	
  
HTTP	
  Kernel	
   File	
  system	
   Rou4ng	
  
Cache	
   Localiza4on	
   Logging	
   Web	
  services	
  Symfony	
  
Components	
  based	
  
deploy	
  and	
  tasks	
  
AppCentral	
  
Root	
  Desktop	
   Tenant	
  Desktop	
  
Panels	
  /	
  Web	
  User	
  
Interface	
  
Dependency	
  
Injec4on	
  
Database	
  /	
  ORM	
   Templa4ng	
   Class	
  Loader	
  
Mul4	
  tenancy	
   Applica4ons	
  container	
   Tenant	
  Users	
  /	
  RBAC	
  
Packages	
  Composer	
  
Innoma4c	
  
Innomedia	
  CMF	
   Innowork	
  BAF	
   SaaS	
  tools	
  
(billing,	
  CRM,	
  4ckets,	
  …)	
  
Other	
  major	
  
Frameworks	
  
and	
  tools	
  
PLATFORM	
  
Multi-Tenancy in Innomatic
8Innomatic Platform
Innoma4c	
  strategy:	
  
Mul,-­‐Tenant	
  code	
  	
  +	
  	
  Single	
  Tenant	
  databases	
  
Frustrated Sysadmin/Developer
9Innomatic Platform
Innomatic = Innovation + AUTOMATIC
Innomatic handles this for you
Deployment and update tasks are
automatized by Innomatic for each tenant
10Innomatic Platform
An Innomatic application is a set of components of the types supported
by Innomatic or other Innomatic based applications:
•  PHP classes,
•  database tables,
•  catalogues of localization strings,
•  dashboard widgets,
•  desktop UI elements,
•  traybar items,
•  maintenance tasks,
•  etc.
Structure of an Innomatic application
11Innomatic Platform
This is the core of Innomatic automation at runtime.
Each component type defines the operation to be executed
in the following phases:
Innomatic components operations
Innomatic Platform 12
Application:
•  Deploy inside Innomatic
•  Upgrade
•  Undeploy
Tenant:
•  Enable component to the tenant
•  Upgrade component in the tenant
•  Disable component from the
tenant
<?xml version='1.0'?>
<application>
<definition>
<idname>example-basic-app</idname>
<release>
<version>1.0.0</version>
<date>2014/10/07</date>
<changesfile>CHANGES</changesfile>
</release>
<description>Innomatic example: basic application</description>
<category>examples</category>
<iconfile></iconfile>
<dependencies>
<dependency>innomatic[6.4.0]</dependency>
</dependencies>
<options>
<!-- <option></option> -->
</options>
The application.xml file 1/3 – Meta data part 1
Innomatic Platform 13
<legal>
<author>
<name>Innomatic Company</name>
<email>info@innomatic.io</email>
<web>http://www.innomatic.io/</web>
</author>
<copyright>Copyright (c) 2014 Innomatic Company</copyright>
<license>New BSD</license>
<licensefile>LICENSE</licensefile>
</legal>
<support>
<supportemail>support@innomatic.io</supportemail>
<bugsemail>bugs@innomatic.io</bugsemail>
<maintainer>
<name>Alex Pagnoni</name>
<email>alex.pagnoni@innomatic.io</email>
</maintainer>
</support>
</definition>
The application.xml file 2/3 – Meta data part 2
Innomatic Platform 14
<components>
<tempdir name="example-basic-app" />
<domaingroup name="examples"
catalog="example-basic-app::misc" />
<domaintable name="example_basic_table"
file="example_basic_table.xml" />
<domainpanel name="basicapp"
catalog="example-basic-app::misc" category="examples" />
<catalog name="example-basic-app" />
<class name="examples/basic/BasicClass.php" />
</components>
</application>
The application.xml file 3/3 – Components
Innomatic Platform 15
You	
  can	
  also	
  use	
  
Composer	
  for	
  your	
  classes	
  
You can also declare your dependencies to external packages
using Composer: you only have to add your composer.json
inside your application package.
Since Innomatic is a platform and you deploy applications at
runtime, Innomatic provides a recursive Composers
dependencies feature with multiple composer.json from different
Innomatic applications.
Including classes and packages with Composer
Innomatic Platform 16
Applications may also define their own component types that can be used by
other applications.
Extending Component Types
Innomatic Platform 17
Normally Innomatic desktop applications are built up
of various panels which provide an USER
INTERFACE inside the Innomatic desktop.
Panels & Panel Groups
Innomatic Platform 18
Declaring a Panel inside application.xml
Innomatic Platform 19
<tempdir name="example-basic-app" />
<domaingroup name="examples"
catalog="example-basic-app::misc" />
<domaintable name="example_basic_table"
file="example_basic_table.xml" />
<domainpanel name="basicapp"
catalog="example-basic-app::misc" category="examples" />
<catalog name="example-basic-app" />
<class name="examples/basic/BasicClass.php" />
class BasicappPanelViews extends InnomaticDesktopPanelPanelViews
{
public function update($observable, $arg = '’) {}
public function beginHelper() {}
public function endHelper() {}
public function viewDefault($eventData)
{
$this->tpl->set(’title', ‘Panel title’);
}
}
Panel views – View code example
Innomatic Platform 20
class BasicappPanelActions extends InnomaticDesktopPanelPanelActions {
public function __construct(InnomaticDesktopPanelPanelController $controller) {
parent::__construct($controller);
}
public function beginHelper() {}
public function endHelper() {}
public function executeDeleteItem($eventData) {
$this->dataAccess->execute(‘DELETE FROM my_items WHERE ID=‘.$eventData[‘id’]);
}
}
Panel actions – Code example
Innomatic Platform 21
<form>
<name>item</name>
<args>
<action><?=$editAction?></action>
</args>
<children>
<grid>
<children>
<label row="0" col="0" halign="right">
<args>
<label><?=$nameLabel?></label>
</args>
</label>
<string row="0" col="1">
<name>name</name>
<args>
<disp>action</disp>
<size>30</size>
<value><?=$nameValue?></value>
</args>
</string>
Web User Interface (WUI)
Innomatic Platform 22
Web User Interface example
Innomatic Platform 23
Some Real Life Tenant
Applications
24
Tenant Desktops and Web Apps
Tenants have 2 types of interfaces:
Tenant Desktop
A web desktop with a standard GUI for backoffice applications accessible via a
login panel.
e.g. intranet, enterprise applications
Web App
An interface for external web applications with a chained router
e.g. public web sites, extranets
The Tenant Desktop and the Web App share the same database and can interact
(e.g. you may have a CMS inside the Desktop for managing the Web App
content).
25Innomatic Platform
Tenant Desktop Dashboard
26Innomatic Platform
Some applications built with Innowork: Tasks
27Innomatic Platform
Tickets
28Innomatic Platform
Kanban
29Innomatic Platform
A CMS built with Innomedia CMF- 1/3
30Innomatic Platform
Innomedia – 2/3
31Innomatic Platform
Innomedia – 3/3
32Innomatic Platform
Multi-Tenant deployable web sites with Innomedia
An example: Winenot
33Innomatic Platform
Winenot SaaS provider: applications
34Innomatic Platform
Winenot tenants examples
35Innomatic Platform
Winenot tenants with different web site themes
36Innomatic Platform
Customizing look for SaaS providers:
Desktop Themes
Innomatic Platform 37
<wuitheme name="flattheme" file="flattheme_wuitheme.ini"
catalog="innomatic::flattheme" />
<wuicolorsset name="flattheme"
file="flattheme_wuicolorsset.ini”
catalog="innomatic::flattheme" />
<wuistyle name="flattheme" file="flattheme_wuistyle.ini"
catalog="innomatic::flattheme" />
<wuiiconsset name="subway" file="subway_wuiiconsset.ini"
catalog="innomatic::flattheme" />
Declaring new themes in application.xml
Innomatic Platform 38
Customizing look: Saas Provider settings
Innomatic Platform 39
Simple customization example
Innomatic Platform 40
Another desktop customization example
Innomatic Platform 41
Managing Tenants
and Applications
from the Root Desktop
42
Managing Tenants
43Innomatic Platform
Creating a Tenant
44Innomatic Platform
Managing Applications
45Innomatic Platform
Enabling an application to a tenant
46Innomatic Platform
Updating / Downgrading Applications
47Innomatic Platform
You can also do it inside PHP and CLI scripts
Creating a tenant from CLI:
php core/scripts/tenant.php create <tenant_name>
<description> <admin_password>
Deploying an application from CLI:
php core/scripts/application.php deploy
<application_archive.tgz>
Enabling an application to a tenant from CLI:
php core/scripts/tenant.php appenable <tenantname>
<appname>
48Innomatic Platform
Thanks!
Free Innomatic
Basic Developer
training slides for
Cloud Conf
attendees here:
49Innomatic Platform
http://cloudconf.innomatic.io
Ad

More Related Content

What's hot (20)

The eBay Architecture: Striking a Balance between Site Stability, Feature Ve...
The eBay Architecture:  Striking a Balance between Site Stability, Feature Ve...The eBay Architecture:  Striking a Balance between Site Stability, Feature Ve...
The eBay Architecture: Striking a Balance between Site Stability, Feature Ve...
Randy Shoup
 
Portfolio Web Developer
Portfolio Web DeveloperPortfolio Web Developer
Portfolio Web Developer
Sergio Enrique
 
Improvement in Rogue Access Points - SensePost Defcon 22
Improvement in Rogue Access Points - SensePost Defcon 22Improvement in Rogue Access Points - SensePost Defcon 22
Improvement in Rogue Access Points - SensePost Defcon 22
SensePost
 
Java SpringBoot Book Build+Your+API+with+Spring.pdf
Java SpringBoot Book Build+Your+API+with+Spring.pdfJava SpringBoot Book Build+Your+API+with+Spring.pdf
Java SpringBoot Book Build+Your+API+with+Spring.pdf
mewajok782
 
API Maturity Model (Webcast with Accenture)
API Maturity Model (Webcast with Accenture)API Maturity Model (Webcast with Accenture)
API Maturity Model (Webcast with Accenture)
Apigee | Google Cloud
 
Mobile App Screen Prototypes Designing Proposal PowerPoint Presentation Slides
Mobile App Screen Prototypes Designing Proposal PowerPoint Presentation SlidesMobile App Screen Prototypes Designing Proposal PowerPoint Presentation Slides
Mobile App Screen Prototypes Designing Proposal PowerPoint Presentation Slides
SlideTeam
 
INTERFACE by apidays_Recommendations for API Governance and an API Economy Ce...
INTERFACE by apidays_Recommendations for API Governance and an API Economy Ce...INTERFACE by apidays_Recommendations for API Governance and an API Economy Ce...
INTERFACE by apidays_Recommendations for API Governance and an API Economy Ce...
apidays
 
REST vs. SOAP
REST vs. SOAPREST vs. SOAP
REST vs. SOAP
Murat Çakal
 
Low code development platform
Low code development platformLow code development platform
Low code development platform
Ehsan Hakimi
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
DNG Consulting
 
MOLOCH: Search for Full Packet Capture (OA Cyber Summit)
MOLOCH: Search for Full Packet Capture (OA Cyber Summit)MOLOCH: Search for Full Packet Capture (OA Cyber Summit)
MOLOCH: Search for Full Packet Capture (OA Cyber Summit)
Open Analytics
 
API Management Within a Microservices Architecture
API Management Within a Microservices Architecture API Management Within a Microservices Architecture
API Management Within a Microservices Architecture
Nadeesha Gamage
 
Repository and Unit Of Work Design Patterns
Repository and Unit Of Work Design PatternsRepository and Unit Of Work Design Patterns
Repository and Unit Of Work Design Patterns
Hatim Hakeel
 
Adopting a Canonical Data Model - how to apply to an existing environment wit...
Adopting a Canonical Data Model - how to apply to an existing environment wit...Adopting a Canonical Data Model - how to apply to an existing environment wit...
Adopting a Canonical Data Model - how to apply to an existing environment wit...
Phil Wilkins
 
Mendix Platform
Mendix PlatformMendix Platform
Mendix Platform
SAKTHIVEL PERIYASAMY
 
Apply MLOps at Scale by H&M
Apply MLOps at Scale by H&MApply MLOps at Scale by H&M
Apply MLOps at Scale by H&M
Databricks
 
Cross platform mobile development
Cross platform mobile developmentCross platform mobile development
Cross platform mobile development
Peter Friese
 
DevOps Transformation at Dynatrace and with Dynatrace
DevOps Transformation at Dynatrace and with DynatraceDevOps Transformation at Dynatrace and with Dynatrace
DevOps Transformation at Dynatrace and with Dynatrace
Andreas Grabner
 
AppDynamics Administration - AppSphere16
AppDynamics Administration - AppSphere16AppDynamics Administration - AppSphere16
AppDynamics Administration - AppSphere16
AppDynamics
 
Low Code Platforms - Ebook
Low Code Platforms - EbookLow Code Platforms - Ebook
Low Code Platforms - Ebook
WaveMaker, Inc.
 
The eBay Architecture: Striking a Balance between Site Stability, Feature Ve...
The eBay Architecture:  Striking a Balance between Site Stability, Feature Ve...The eBay Architecture:  Striking a Balance between Site Stability, Feature Ve...
The eBay Architecture: Striking a Balance between Site Stability, Feature Ve...
Randy Shoup
 
Portfolio Web Developer
Portfolio Web DeveloperPortfolio Web Developer
Portfolio Web Developer
Sergio Enrique
 
Improvement in Rogue Access Points - SensePost Defcon 22
Improvement in Rogue Access Points - SensePost Defcon 22Improvement in Rogue Access Points - SensePost Defcon 22
Improvement in Rogue Access Points - SensePost Defcon 22
SensePost
 
Java SpringBoot Book Build+Your+API+with+Spring.pdf
Java SpringBoot Book Build+Your+API+with+Spring.pdfJava SpringBoot Book Build+Your+API+with+Spring.pdf
Java SpringBoot Book Build+Your+API+with+Spring.pdf
mewajok782
 
API Maturity Model (Webcast with Accenture)
API Maturity Model (Webcast with Accenture)API Maturity Model (Webcast with Accenture)
API Maturity Model (Webcast with Accenture)
Apigee | Google Cloud
 
Mobile App Screen Prototypes Designing Proposal PowerPoint Presentation Slides
Mobile App Screen Prototypes Designing Proposal PowerPoint Presentation SlidesMobile App Screen Prototypes Designing Proposal PowerPoint Presentation Slides
Mobile App Screen Prototypes Designing Proposal PowerPoint Presentation Slides
SlideTeam
 
INTERFACE by apidays_Recommendations for API Governance and an API Economy Ce...
INTERFACE by apidays_Recommendations for API Governance and an API Economy Ce...INTERFACE by apidays_Recommendations for API Governance and an API Economy Ce...
INTERFACE by apidays_Recommendations for API Governance and an API Economy Ce...
apidays
 
Low code development platform
Low code development platformLow code development platform
Low code development platform
Ehsan Hakimi
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
DNG Consulting
 
MOLOCH: Search for Full Packet Capture (OA Cyber Summit)
MOLOCH: Search for Full Packet Capture (OA Cyber Summit)MOLOCH: Search for Full Packet Capture (OA Cyber Summit)
MOLOCH: Search for Full Packet Capture (OA Cyber Summit)
Open Analytics
 
API Management Within a Microservices Architecture
API Management Within a Microservices Architecture API Management Within a Microservices Architecture
API Management Within a Microservices Architecture
Nadeesha Gamage
 
Repository and Unit Of Work Design Patterns
Repository and Unit Of Work Design PatternsRepository and Unit Of Work Design Patterns
Repository and Unit Of Work Design Patterns
Hatim Hakeel
 
Adopting a Canonical Data Model - how to apply to an existing environment wit...
Adopting a Canonical Data Model - how to apply to an existing environment wit...Adopting a Canonical Data Model - how to apply to an existing environment wit...
Adopting a Canonical Data Model - how to apply to an existing environment wit...
Phil Wilkins
 
Apply MLOps at Scale by H&M
Apply MLOps at Scale by H&MApply MLOps at Scale by H&M
Apply MLOps at Scale by H&M
Databricks
 
Cross platform mobile development
Cross platform mobile developmentCross platform mobile development
Cross platform mobile development
Peter Friese
 
DevOps Transformation at Dynatrace and with Dynatrace
DevOps Transformation at Dynatrace and with DynatraceDevOps Transformation at Dynatrace and with Dynatrace
DevOps Transformation at Dynatrace and with Dynatrace
Andreas Grabner
 
AppDynamics Administration - AppSphere16
AppDynamics Administration - AppSphere16AppDynamics Administration - AppSphere16
AppDynamics Administration - AppSphere16
AppDynamics
 
Low Code Platforms - Ebook
Low Code Platforms - EbookLow Code Platforms - Ebook
Low Code Platforms - Ebook
WaveMaker, Inc.
 

Similar to Building Multi-Tenant and SaaS products in PHP - CloudConf 2015 (20)

Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic
Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con InnomaticCostruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic
Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic
Innoteam Srl
 
The fundamental problems of GUI applications and why people choose React
The fundamental problems of GUI applications and why people choose ReactThe fundamental problems of GUI applications and why people choose React
The fundamental problems of GUI applications and why people choose React
Oliver N
 
Android 3.0 Portland Java User Group 2011-03-15
Android 3.0 Portland Java User Group 2011-03-15Android 3.0 Portland Java User Group 2011-03-15
Android 3.0 Portland Java User Group 2011-03-15
sullis
 
Android 3.1 - Portland Code Camp 2011
Android 3.1 - Portland Code Camp 2011Android 3.1 - Portland Code Camp 2011
Android 3.1 - Portland Code Camp 2011
sullis
 
Introduction to interactive data visualisation using R Shiny
Introduction to interactive data visualisation using R ShinyIntroduction to interactive data visualisation using R Shiny
Introduction to interactive data visualisation using R Shiny
anamarisaguedes
 
Pragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecture
Piotr Pelczar
 
SenchaCon 2016: Enterprise Applications, Role Based Access Controls (RBAC) an...
SenchaCon 2016: Enterprise Applications, Role Based Access Controls (RBAC) an...SenchaCon 2016: Enterprise Applications, Role Based Access Controls (RBAC) an...
SenchaCon 2016: Enterprise Applications, Role Based Access Controls (RBAC) an...
Sencha
 
Rits Brown Bag - Salesforce Lightning
Rits Brown Bag - Salesforce LightningRits Brown Bag - Salesforce Lightning
Rits Brown Bag - Salesforce Lightning
Right IT Services
 
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Juliano Martins
 
Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics
Eliran Eliassy
 
Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010
Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010
Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010
Heiko Behrens
 
Client Actions In Odoo 17 - Odoo 17 Slides
Client Actions In Odoo 17 - Odoo 17 SlidesClient Actions In Odoo 17 - Odoo 17 Slides
Client Actions In Odoo 17 - Odoo 17 Slides
Celine George
 
Clean Architecture @ Taxibeat
Clean Architecture @ TaxibeatClean Architecture @ Taxibeat
Clean Architecture @ Taxibeat
Michael Bakogiannis
 
An Introduction to Web Components
An Introduction to Web ComponentsAn Introduction to Web Components
An Introduction to Web Components
Red Pill Now
 
Practical Dynamic Actions - Intro
Practical Dynamic Actions - IntroPractical Dynamic Actions - Intro
Practical Dynamic Actions - Intro
Jorge Rimblas
 
Bootstrapping an App for Launch
Bootstrapping an App for LaunchBootstrapping an App for Launch
Bootstrapping an App for Launch
Craig Phares
 
Take Your XPages Development to the Next Level
Take Your XPages Development to the Next LevelTake Your XPages Development to the Next Level
Take Your XPages Development to the Next Level
balassaitis
 
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript AppsBusy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
JAX London
 
Android apps development
Android apps developmentAndroid apps development
Android apps development
Monir Zzaman
 
Android - Open Source Bridge 2011
Android - Open Source Bridge 2011Android - Open Source Bridge 2011
Android - Open Source Bridge 2011
sullis
 
Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic
Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con InnomaticCostruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic
Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic
Innoteam Srl
 
The fundamental problems of GUI applications and why people choose React
The fundamental problems of GUI applications and why people choose ReactThe fundamental problems of GUI applications and why people choose React
The fundamental problems of GUI applications and why people choose React
Oliver N
 
Android 3.0 Portland Java User Group 2011-03-15
Android 3.0 Portland Java User Group 2011-03-15Android 3.0 Portland Java User Group 2011-03-15
Android 3.0 Portland Java User Group 2011-03-15
sullis
 
Android 3.1 - Portland Code Camp 2011
Android 3.1 - Portland Code Camp 2011Android 3.1 - Portland Code Camp 2011
Android 3.1 - Portland Code Camp 2011
sullis
 
Introduction to interactive data visualisation using R Shiny
Introduction to interactive data visualisation using R ShinyIntroduction to interactive data visualisation using R Shiny
Introduction to interactive data visualisation using R Shiny
anamarisaguedes
 
Pragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecture
Piotr Pelczar
 
SenchaCon 2016: Enterprise Applications, Role Based Access Controls (RBAC) an...
SenchaCon 2016: Enterprise Applications, Role Based Access Controls (RBAC) an...SenchaCon 2016: Enterprise Applications, Role Based Access Controls (RBAC) an...
SenchaCon 2016: Enterprise Applications, Role Based Access Controls (RBAC) an...
Sencha
 
Rits Brown Bag - Salesforce Lightning
Rits Brown Bag - Salesforce LightningRits Brown Bag - Salesforce Lightning
Rits Brown Bag - Salesforce Lightning
Right IT Services
 
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Juliano Martins
 
Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics
Eliran Eliassy
 
Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010
Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010
Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010
Heiko Behrens
 
Client Actions In Odoo 17 - Odoo 17 Slides
Client Actions In Odoo 17 - Odoo 17 SlidesClient Actions In Odoo 17 - Odoo 17 Slides
Client Actions In Odoo 17 - Odoo 17 Slides
Celine George
 
An Introduction to Web Components
An Introduction to Web ComponentsAn Introduction to Web Components
An Introduction to Web Components
Red Pill Now
 
Practical Dynamic Actions - Intro
Practical Dynamic Actions - IntroPractical Dynamic Actions - Intro
Practical Dynamic Actions - Intro
Jorge Rimblas
 
Bootstrapping an App for Launch
Bootstrapping an App for LaunchBootstrapping an App for Launch
Bootstrapping an App for Launch
Craig Phares
 
Take Your XPages Development to the Next Level
Take Your XPages Development to the Next LevelTake Your XPages Development to the Next Level
Take Your XPages Development to the Next Level
balassaitis
 
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript AppsBusy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
JAX London
 
Android apps development
Android apps developmentAndroid apps development
Android apps development
Monir Zzaman
 
Android - Open Source Bridge 2011
Android - Open Source Bridge 2011Android - Open Source Bridge 2011
Android - Open Source Bridge 2011
sullis
 
Ad

Recently uploaded (20)

Agentic AI Use Cases using GenAI LLM models
Agentic AI Use Cases using GenAI LLM modelsAgentic AI Use Cases using GenAI LLM models
Agentic AI Use Cases using GenAI LLM models
Manish Chopra
 
Shift Left using Lean for Agile Software Development
Shift Left using Lean for Agile Software DevelopmentShift Left using Lean for Agile Software Development
Shift Left using Lean for Agile Software Development
SathyaShankar6
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Salesforce Aged Complex Org Revitalization Process .pdf
Salesforce Aged Complex Org Revitalization Process .pdfSalesforce Aged Complex Org Revitalization Process .pdf
Salesforce Aged Complex Org Revitalization Process .pdf
SRINIVASARAO PUSULURI
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
Adobe Illustrator Crack | Free Download & Install Illustrator
Adobe Illustrator Crack | Free Download & Install IllustratorAdobe Illustrator Crack | Free Download & Install Illustrator
Adobe Illustrator Crack | Free Download & Install Illustrator
usmanhidray
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Mastering OOP: Understanding the Four Core Pillars
Mastering OOP: Understanding the Four Core PillarsMastering OOP: Understanding the Four Core Pillars
Mastering OOP: Understanding the Four Core Pillars
Marcel David
 
Agentic AI Use Cases using GenAI LLM models
Agentic AI Use Cases using GenAI LLM modelsAgentic AI Use Cases using GenAI LLM models
Agentic AI Use Cases using GenAI LLM models
Manish Chopra
 
Shift Left using Lean for Agile Software Development
Shift Left using Lean for Agile Software DevelopmentShift Left using Lean for Agile Software Development
Shift Left using Lean for Agile Software Development
SathyaShankar6
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Salesforce Aged Complex Org Revitalization Process .pdf
Salesforce Aged Complex Org Revitalization Process .pdfSalesforce Aged Complex Org Revitalization Process .pdf
Salesforce Aged Complex Org Revitalization Process .pdf
SRINIVASARAO PUSULURI
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
Adobe Illustrator Crack | Free Download & Install Illustrator
Adobe Illustrator Crack | Free Download & Install IllustratorAdobe Illustrator Crack | Free Download & Install Illustrator
Adobe Illustrator Crack | Free Download & Install Illustrator
usmanhidray
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Mastering OOP: Understanding the Four Core Pillars
Mastering OOP: Understanding the Four Core PillarsMastering OOP: Understanding the Four Core Pillars
Mastering OOP: Understanding the Four Core Pillars
Marcel David
 
Ad

Building Multi-Tenant and SaaS products in PHP - CloudConf 2015