SlideShare a Scribd company logo
24.08.2014 - Page 1
Département
OfficeApp::AutoCRUD
An application for searching and
manipulating data in relational
databases
YAPC::EU::2014
laurent.dami@justice.ge.ch
Etat de Genève, Pouvoir Judiciaire
Département
Office
Agenda
• Introduction
• Overview (screenshots)
• Getting started
• Architecture
• Extensibility
• Conclusion
24.08.2014 - Page 1
Département
Office
Introduction
Business need : tool for the support team
Regular
Users
database
Regular
App
Database
Admins
Admin
Tools
Support
Team
? ? ?
Data access for support team
Needs
• Browse DB schema
• CRUD on all data
• Navigate
– Follow relationships
– Optimize for most common
tables and colums
Solutions
• Program an admin GUI
–  too much work !
• Give them DBA tools
–  too low-level
–  no customization
 Need a CRUD app !
CRUD landscape
Admin tools
Oracle SQLDeveloper
SQLite Sqliteman
Postgres pgadmin
phpMyAdmin
...
Ready
to use
Needs
programming
Fixed
features
Customizable
Scaffolding tools
Ruby on Rails
Catalyst
CatalystX::CRUD
...
AutoCRUD apps
Catalyst::Plugin::AutoCRUD (2011)
App::AutoCRUD (Jan 2014)
RapidApp (Feb 2014)
[ WebAPI::DBIC ] (Jul 2014)
Interchange TableEditor (2013??)
App::AutoCRUD main features
• Powerful search syntax
• Distinctive URL for every resource
–  no session, all information in URL
–  easy admin links from the "real App"
• Joins as hyperlinks
• Bulk update / delete operations
• Customizable table order / column order
• Navigation through tree navigator
24.08.2014 - Page 1
Département
Office
Quick overview
To run the demo :
cd examples
perl download_db.pl
plackup
Homepage
Specified in
config file
http://chinookdatabase.codeplex.com/
https://code.google.com/p/sakila-sample-database-ports/
Demo: free
sample
databases
Datasource entry point
Auto-generated
datamodel
Grouping, order & comments
from config file
Table description
Grouping, order & comments
from config file
Hyperlinks to foreign tables
from DB schema
Search form
Multiple values (OR)
LIKE
Multiple views
Choose
columns
BETWEEN
Results from search
Hyperlinks to foreign records or lists
Only show non-null columns
Also navigate through
LEFT/RIGHT arrow keys
Excel output
YAML output
Bulk update (selective)
2) Call the update form
1) Check records to be modified
Update form
Keys of selected records
Bulk update (from WHERE criteria)
Call the update form
Update form
Criteria for the update
Fields to update
± RESTful URLs
• /Chinook/table/Track/search?GenreId=1,3&Name=Ab*
– GET  display pre-filled search form
– POST  redirect to list
• /Chinook/table/Track/list?GenreId=1,3&Name=Ab*
–  search results
• /Chinook/table/Track/id/399
–  single record
• /Chinook/table/Track/delete?where_pk.TrackId=399
– GET  display pre-filled delete form
– POST  database operation
Note : browser-oriented, not API-oriented
 No use of HTTP methods PUT and DELETE
24.08.2014 - Page 1
Département
Office
Getting Started
YAML Config : connection parameters
app:
name: Test AutoCRUD
datasources :
Source1 :
dbh:
connect:
- dbi:SQLite:dbname=some_file
- "" # user
- "" # password
- RaiseError : 1
sqlite_unicode: 1
Config : specifying table grouping / ordering
tablegroups :
- name: Music
descr: Tables describing music content
node: open
tables :
- Artist
- Album
- Track
- name: Playlist
...
Config : specifying col grouping / ordering
Employee:
colgroups:
- name: keys
columns:
- name: EmployeeId
descr: primary key
- name: ReportsTo
descr: foreign key to the manager
- name: Employee details
columns:
- name: Title
- name: FirstName
- name: LastName
"crud.psgi" startup file
use App::AutoCRUD;
use YAML qw/LoadFile/;
my $config = LoadFile "/path/to/config.yaml";
my $crud = App::AutoCRUD->new(config => $config);
my $app = $crud->to_app;
Start the application
• From the command line
plackup crud.psgi
• Within Apache
<Location /crud>
SetHandler perl-script
PerlResponseHandler Plack::Handler::Apache2
PerlSetVar psgi_app /path/to/crud.psgi
</Location>
• Other possibilities : see L<Plack>
24.08.2014 - Page 1
Département
Office
Architecture : external modules
External modules : Global view
Template
Toolkit
Alien:
:GvaScript
Prototype.js
Excel::Writer:
:XLSX
View
DBIx::DataModel
DBI
SQL::Abstract:
:More
Model
Plack
CGI::Expand
SQL::Abstract:
:FromQuery
Controller
Infrastructure
Moose Data::DomainYAML
Infrastructure modules
• Moose for OO
– Modern Perl OO framework
• YAML for config data
– Human-readable
– Support for directed acyclic graph (DAG)  reusable subtrees
– But can be replaced by JSON, XML, Config::General or Perl source code
• Data::Domain for data validation
Controller modules
• Plack for HTTP support
– Abstraction over various engines
– Many middleware options
• CGI::Expand for transforming form inputs
– <input name="foo.1.bar" value=1234>
–  { foo => [ {...}, { bar => 1234 } ] }
• SQL::Abstract::FromQuery for parsing user queries
– HTML form  SQL::Abstract::More  SQL
– Parses booleans, < > !=, LIKE, BETWEEN, etc.
Model modules
• DBI for database independance
– Perl standard for databases
• DBIx::DataModel for object-relational mapping
– Why not DBIC ? See
http://www.slideshare.net/ldami/dbixclass-vs-
dbixdatamodel
• SQL::Abstract::More for SQL generation
– Emit SQL from Perl datastructures
View modules
• Template Toolkit for HTML generation
• Alien::GvaScript for widgets
– Tree::Navigator
• Prototype.js for Javascript abstraction
– Navigator abstraction, OO programming, etc.
• Excel::Writer::XLSX for generating Excel worksheets
–
24.08.2014 - Page 1
Département
Office
Architecture : internal structure
Internal structure : global view
AutoCRUD
AutoCRUD:
:View
AutoCRUD:
:Controller
AutoCRUD:
:Context
AutoCRUD:
:DataSource
Plack::Component Moose::Object
Controller:
:Table
Controller:
:Schema
View::XLSXView::TT ...
App::AutoCRUD
• Entry point
• Autodiscovers component subclasses
• isa Plack::Component
• Has
– Name
– Config
– Datasources
App::AutoCRUD::DataSource
• Encapsulates DBIx::DataModel schema
– Autogenerate Perl code if not already present
• Gathers and merges metadata
– From the DB schema
• Tables, columns, foreign keys
– From config
• Table groups, column groups, ordering, display parameters
App::AutoCRUD::Context
• Gathers contextual information for the current request
– Plack::Request object
– Datasource object
– View to apply
– Parameters for the view (for example TT template name)
Controller::Schema
• Lists table groups & tables
• Publishes the DBIx::DataModel schema
Controller::Table
• Implements CRUD operations
• Methods
– Descr
– List
– Id
– Search
– Update
– Delete
– Insert
View::*
• Render results
– TT
– XLSX
– YAML
– JSON
– ...
24.08.2014 - Page 1
Département
Office
Extensibility
Regular subclassing
• Extend the app
package My::Private::AutoCRUD;
use Moose;
extends 'App::AutoCRUD';
• Subclass and redefine existing methods
– Automatic subclass discovery
– Good candidates :
• DataSource::prepare_for_request
• DataSource::_query_parser
Adding URLs
• New controllers
– Crud/<db_name>/<controller_name>/....
• New methods in existing controllers
– Crud/<db_name>/table/<table_name>/<method>/...
Adding Views
• Create View/XYZ.pm with "render" method
– Serves /path/to/resource.xyz?p1=v1&p2=v2&...
Relooking
• Override CSS
– My/Private/AutoCRUD/share/static/css/styles.css
• Override TT templates
– My/Private/AutoCRUD/share/templates/src/table/list.tt
24.08.2014 - Page 1
Département
Office
Conclusion
Status
• Still young, lots of TODO
• Already in production at Geneva Justice
• Has some original features not seen other CRUD apps
• Could be useful for many people
– Also outside the Perl community 
•  Perl marketing needs general-purpose apps
– Needs stabilization & doc
– Needs marketing
– You can help !

More Related Content

PPT
Sql abstract from_query
PPTX
Sqlite virtual-tables written in Perl
PPTX
Yapceu2015 geneva courts
PPTX
U-SQL Reading & Writing Files (SQLBits 2016)
PPTX
Killer Scenarios with Data Lake in Azure with U-SQL
PPTX
Using existing language skillsets to create large-scale, cloud-based analytics
PDF
Python business intelligence (PyData 2012 talk)
PPTX
U-SQL Meta Data Catalog (SQLBits 2016)
Sql abstract from_query
Sqlite virtual-tables written in Perl
Yapceu2015 geneva courts
U-SQL Reading & Writing Files (SQLBits 2016)
Killer Scenarios with Data Lake in Azure with U-SQL
Using existing language skillsets to create large-scale, cloud-based analytics
Python business intelligence (PyData 2012 talk)
U-SQL Meta Data Catalog (SQLBits 2016)

What's hot (20)

PPTX
U-SQL User-Defined Operators (UDOs) (SQLBits 2016)
PPTX
U-SQL Intro (SQLBits 2016)
PPTX
U-SQL Killer Scenarios: Custom Processing, Big Cognition, Image and JSON Proc...
PPTX
The Road to U-SQL: Experiences in Language Design (SQL Konferenz 2017 Keynote)
PPTX
Ingesting and Manipulating Data with JavaScript
PDF
Bubbles – Virtual Data Objects
PPTX
Amp and higher computing science
PPTX
Using C# with U-SQL (SQLBits 2016)
PDF
Introduction to Apache Hive | Big Data Hadoop Spark Tutorial | CloudxLab
PDF
Cassandra 3 new features @ Geecon Krakow 2016
PPTX
Introduction to Azure Data Lake and U-SQL for SQL users (SQL Saturday 635)
PPT
Database2011 MySQL Sharding
PPT
Hadoop World 2011: Building Web Analytics Processing on Hadoop at CBS Interac...
PPTX
Hive @ Bucharest Java User Group
PPTX
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...
PPTX
Taming the Data Science Monster with A New ‘Sword’ – U-SQL
PPTX
U-SQL Killer Scenarios: Taming the Data Science Monster with U-SQL and Big Co...
PDF
Airbnb Search Architecture: Presented by Maxim Charkov, Airbnb
PPTX
ADL/U-SQL Introduction (SQLBits 2016)
PPTX
U-SQL Query Execution and Performance Tuning
U-SQL User-Defined Operators (UDOs) (SQLBits 2016)
U-SQL Intro (SQLBits 2016)
U-SQL Killer Scenarios: Custom Processing, Big Cognition, Image and JSON Proc...
The Road to U-SQL: Experiences in Language Design (SQL Konferenz 2017 Keynote)
Ingesting and Manipulating Data with JavaScript
Bubbles – Virtual Data Objects
Amp and higher computing science
Using C# with U-SQL (SQLBits 2016)
Introduction to Apache Hive | Big Data Hadoop Spark Tutorial | CloudxLab
Cassandra 3 new features @ Geecon Krakow 2016
Introduction to Azure Data Lake and U-SQL for SQL users (SQL Saturday 635)
Database2011 MySQL Sharding
Hadoop World 2011: Building Web Analytics Processing on Hadoop at CBS Interac...
Hive @ Bucharest Java User Group
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...
Taming the Data Science Monster with A New ‘Sword’ – U-SQL
U-SQL Killer Scenarios: Taming the Data Science Monster with U-SQL and Big Co...
Airbnb Search Architecture: Presented by Maxim Charkov, Airbnb
ADL/U-SQL Introduction (SQLBits 2016)
U-SQL Query Execution and Performance Tuning
Ad

Similar to App auto crud (20)

PPTX
Running Airflow Workflows as ETL Processes on Hadoop
PDF
DMann-SQLDeveloper4Reporting
PPTX
Introduction to real time big data with Apache Spark
PPTX
SQL to NoSQL: Top 6 Questions
PPTX
Frame - Feature Management for Productive Machine Learning
PDF
TechEvent 2019: Oracle to PostgreSQL - a Travel Guide from Practice; Roland S...
PDF
Introduction to Apache Amaterasu (Incubating): CD Framework For Your Big Data...
PPTX
airflowpresentation1-180717183432.pptx
PDF
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
PDF
Android gradle-build-system-overview
PPTX
With Automated ML, is Everyone an ML Engineer?
PPTX
airflow web UI and CLI.pptx
PDF
Lessons learned while building Omroep.nl
PPTX
Apache Ambari BOF - APIs - Hadoop Summit 2013
PDF
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
PPTX
Web Ninja
PDF
Open event presentation.3 2
PPTX
Day 1 - Technical Bootcamp azure synapse analytics
PPT
DBIx::Class vs. DBix::DataModel
PPTX
Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"
Running Airflow Workflows as ETL Processes on Hadoop
DMann-SQLDeveloper4Reporting
Introduction to real time big data with Apache Spark
SQL to NoSQL: Top 6 Questions
Frame - Feature Management for Productive Machine Learning
TechEvent 2019: Oracle to PostgreSQL - a Travel Guide from Practice; Roland S...
Introduction to Apache Amaterasu (Incubating): CD Framework For Your Big Data...
airflowpresentation1-180717183432.pptx
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Android gradle-build-system-overview
With Automated ML, is Everyone an ML Engineer?
airflow web UI and CLI.pptx
Lessons learned while building Omroep.nl
Apache Ambari BOF - APIs - Hadoop Summit 2013
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
Web Ninja
Open event presentation.3 2
Day 1 - Technical Bootcamp azure synapse analytics
DBIx::Class vs. DBix::DataModel
Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"
Ad

More from Laurent Dami (7)

PPTX
PowerPivot_model_Geneva_Justice_20230531.pptx
PPTX
Studying geneva real estate prices using perl grammars
PPT
DBIx-DataModel v2.0 in detail
PPT
Gestion documentaire pour les tribunaux genevois
PPT
Working with databases in Perl
PPT
Emacs, a performant IDE for Perl
PDF
Managing Geneva's law courts, from Cobol to Perl
PowerPivot_model_Geneva_Justice_20230531.pptx
Studying geneva real estate prices using perl grammars
DBIx-DataModel v2.0 in detail
Gestion documentaire pour les tribunaux genevois
Working with databases in Perl
Emacs, a performant IDE for Perl
Managing Geneva's law courts, from Cobol to Perl

Recently uploaded (20)

PDF
Understanding Forklifts - TECH EHS Solution
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
System and Network Administration Chapter 2
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
System and Network Administraation Chapter 3
PPTX
history of c programming in notes for students .pptx
PDF
Digital Strategies for Manufacturing Companies
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
medical staffing services at VALiNTRY
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
Nekopoi APK 2025 free lastest update
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
AI in Product Development-omnex systems
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
How Creative Agencies Leverage Project Management Software.pdf
PPTX
Essential Infomation Tech presentation.pptx
Understanding Forklifts - TECH EHS Solution
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
System and Network Administration Chapter 2
Internet Downloader Manager (IDM) Crack 6.42 Build 41
System and Network Administraation Chapter 3
history of c programming in notes for students .pptx
Digital Strategies for Manufacturing Companies
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
medical staffing services at VALiNTRY
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Nekopoi APK 2025 free lastest update
Wondershare Filmora 15 Crack With Activation Key [2025
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
AI in Product Development-omnex systems
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Operating system designcfffgfgggggggvggggggggg
How Creative Agencies Leverage Project Management Software.pdf
Essential Infomation Tech presentation.pptx

App auto crud

  • 1. 24.08.2014 - Page 1 Département OfficeApp::AutoCRUD An application for searching and manipulating data in relational databases YAPC::EU::2014 laurent.dami@justice.ge.ch Etat de Genève, Pouvoir Judiciaire Département Office
  • 2. Agenda • Introduction • Overview (screenshots) • Getting started • Architecture • Extensibility • Conclusion
  • 3. 24.08.2014 - Page 1 Département Office Introduction
  • 4. Business need : tool for the support team Regular Users database Regular App Database Admins Admin Tools Support Team ? ? ?
  • 5. Data access for support team Needs • Browse DB schema • CRUD on all data • Navigate – Follow relationships – Optimize for most common tables and colums Solutions • Program an admin GUI –  too much work ! • Give them DBA tools –  too low-level –  no customization  Need a CRUD app !
  • 6. CRUD landscape Admin tools Oracle SQLDeveloper SQLite Sqliteman Postgres pgadmin phpMyAdmin ... Ready to use Needs programming Fixed features Customizable Scaffolding tools Ruby on Rails Catalyst CatalystX::CRUD ... AutoCRUD apps Catalyst::Plugin::AutoCRUD (2011) App::AutoCRUD (Jan 2014) RapidApp (Feb 2014) [ WebAPI::DBIC ] (Jul 2014) Interchange TableEditor (2013??)
  • 7. App::AutoCRUD main features • Powerful search syntax • Distinctive URL for every resource –  no session, all information in URL –  easy admin links from the "real App" • Joins as hyperlinks • Bulk update / delete operations • Customizable table order / column order • Navigation through tree navigator
  • 8. 24.08.2014 - Page 1 Département Office Quick overview To run the demo : cd examples perl download_db.pl plackup
  • 11. Table description Grouping, order & comments from config file Hyperlinks to foreign tables from DB schema
  • 12. Search form Multiple values (OR) LIKE Multiple views Choose columns BETWEEN
  • 13. Results from search Hyperlinks to foreign records or lists Only show non-null columns Also navigate through LEFT/RIGHT arrow keys
  • 16. Bulk update (selective) 2) Call the update form 1) Check records to be modified
  • 17. Update form Keys of selected records
  • 18. Bulk update (from WHERE criteria) Call the update form
  • 19. Update form Criteria for the update Fields to update
  • 20. ± RESTful URLs • /Chinook/table/Track/search?GenreId=1,3&Name=Ab* – GET  display pre-filled search form – POST  redirect to list • /Chinook/table/Track/list?GenreId=1,3&Name=Ab* –  search results • /Chinook/table/Track/id/399 –  single record • /Chinook/table/Track/delete?where_pk.TrackId=399 – GET  display pre-filled delete form – POST  database operation Note : browser-oriented, not API-oriented  No use of HTTP methods PUT and DELETE
  • 21. 24.08.2014 - Page 1 Département Office Getting Started
  • 22. YAML Config : connection parameters app: name: Test AutoCRUD datasources : Source1 : dbh: connect: - dbi:SQLite:dbname=some_file - "" # user - "" # password - RaiseError : 1 sqlite_unicode: 1
  • 23. Config : specifying table grouping / ordering tablegroups : - name: Music descr: Tables describing music content node: open tables : - Artist - Album - Track - name: Playlist ...
  • 24. Config : specifying col grouping / ordering Employee: colgroups: - name: keys columns: - name: EmployeeId descr: primary key - name: ReportsTo descr: foreign key to the manager - name: Employee details columns: - name: Title - name: FirstName - name: LastName
  • 25. "crud.psgi" startup file use App::AutoCRUD; use YAML qw/LoadFile/; my $config = LoadFile "/path/to/config.yaml"; my $crud = App::AutoCRUD->new(config => $config); my $app = $crud->to_app;
  • 26. Start the application • From the command line plackup crud.psgi • Within Apache <Location /crud> SetHandler perl-script PerlResponseHandler Plack::Handler::Apache2 PerlSetVar psgi_app /path/to/crud.psgi </Location> • Other possibilities : see L<Plack>
  • 27. 24.08.2014 - Page 1 Département Office Architecture : external modules
  • 28. External modules : Global view Template Toolkit Alien: :GvaScript Prototype.js Excel::Writer: :XLSX View DBIx::DataModel DBI SQL::Abstract: :More Model Plack CGI::Expand SQL::Abstract: :FromQuery Controller Infrastructure Moose Data::DomainYAML
  • 29. Infrastructure modules • Moose for OO – Modern Perl OO framework • YAML for config data – Human-readable – Support for directed acyclic graph (DAG)  reusable subtrees – But can be replaced by JSON, XML, Config::General or Perl source code • Data::Domain for data validation
  • 30. Controller modules • Plack for HTTP support – Abstraction over various engines – Many middleware options • CGI::Expand for transforming form inputs – <input name="foo.1.bar" value=1234> –  { foo => [ {...}, { bar => 1234 } ] } • SQL::Abstract::FromQuery for parsing user queries – HTML form  SQL::Abstract::More  SQL – Parses booleans, < > !=, LIKE, BETWEEN, etc.
  • 31. Model modules • DBI for database independance – Perl standard for databases • DBIx::DataModel for object-relational mapping – Why not DBIC ? See http://www.slideshare.net/ldami/dbixclass-vs- dbixdatamodel • SQL::Abstract::More for SQL generation – Emit SQL from Perl datastructures
  • 32. View modules • Template Toolkit for HTML generation • Alien::GvaScript for widgets – Tree::Navigator • Prototype.js for Javascript abstraction – Navigator abstraction, OO programming, etc. • Excel::Writer::XLSX for generating Excel worksheets –
  • 33. 24.08.2014 - Page 1 Département Office Architecture : internal structure
  • 34. Internal structure : global view AutoCRUD AutoCRUD: :View AutoCRUD: :Controller AutoCRUD: :Context AutoCRUD: :DataSource Plack::Component Moose::Object Controller: :Table Controller: :Schema View::XLSXView::TT ...
  • 35. App::AutoCRUD • Entry point • Autodiscovers component subclasses • isa Plack::Component • Has – Name – Config – Datasources
  • 36. App::AutoCRUD::DataSource • Encapsulates DBIx::DataModel schema – Autogenerate Perl code if not already present • Gathers and merges metadata – From the DB schema • Tables, columns, foreign keys – From config • Table groups, column groups, ordering, display parameters
  • 37. App::AutoCRUD::Context • Gathers contextual information for the current request – Plack::Request object – Datasource object – View to apply – Parameters for the view (for example TT template name)
  • 38. Controller::Schema • Lists table groups & tables • Publishes the DBIx::DataModel schema
  • 39. Controller::Table • Implements CRUD operations • Methods – Descr – List – Id – Search – Update – Delete – Insert
  • 40. View::* • Render results – TT – XLSX – YAML – JSON – ...
  • 41. 24.08.2014 - Page 1 Département Office Extensibility
  • 42. Regular subclassing • Extend the app package My::Private::AutoCRUD; use Moose; extends 'App::AutoCRUD'; • Subclass and redefine existing methods – Automatic subclass discovery – Good candidates : • DataSource::prepare_for_request • DataSource::_query_parser
  • 43. Adding URLs • New controllers – Crud/<db_name>/<controller_name>/.... • New methods in existing controllers – Crud/<db_name>/table/<table_name>/<method>/...
  • 44. Adding Views • Create View/XYZ.pm with "render" method – Serves /path/to/resource.xyz?p1=v1&p2=v2&...
  • 45. Relooking • Override CSS – My/Private/AutoCRUD/share/static/css/styles.css • Override TT templates – My/Private/AutoCRUD/share/templates/src/table/list.tt
  • 46. 24.08.2014 - Page 1 Département Office Conclusion
  • 47. Status • Still young, lots of TODO • Already in production at Geneva Justice • Has some original features not seen other CRUD apps • Could be useful for many people – Also outside the Perl community  •  Perl marketing needs general-purpose apps – Needs stabilization & doc – Needs marketing – You can help !