lupapiste an interactive service for citizens with html 5 ... · lupapiste – an interactive...

Post on 21-Sep-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Lupapiste – an interactive service for citizens

with HTML 5 JS + Clojure + MongoDB

Nääsvillen oliopäivät 13.12.2012

Senior Software Designer

Timo Lehtonen timo.lehtonen@solita.fi

Top 100-list of Javala:

Gamification - apply game-like features to a (often boring) non-game thing.

Solita – an ICT company from Nääsville

2012

Finlayson 1962: Thousands of people in manufacturing business

Copyright: Tampereen kaupungin kuva-arkisto

Finlayson 2012: 200 people manufacturing Online businesses, BI solutions, ERP systems, …

Solita has one value: Care

Source: levikintarkastus.fi

ERP

Customer: environmental administration (Ympäristöministeriö) Released: in march 2013.

Aloitus

Aloitus Aamulehti 23.8.2012

Lupapiste handles 16 permit types in 20 pilot municipalities in the first phase

Keynote by Cockburn at Oliopäivät 2008

Haikala, I., and J. Märijärvi. "Ohjelmistotuotanto. 11. p." Jyväskylä: Gummerrus Kirjapaino Oy (2006).

Haikala, I., and J. Märijärvi. "Ohjelmistotuotanto. 11. p." Jyväskylä: Gummerrus Kirjapaino Oy (2006).

Pekka Abrahams-son at Oliopäivät 2012: ”Be ready to fail. Create a theory.”

Pasi Kovanen, Jarkko Järvenpää, Vincit at Oliopäivät 2012: try, measure and learn, try again

A similar circle of ”do, make a theory, do (fail?) again!”

Keynote by Cockburn at Oliopäivät 2008

Keynote by Cockburn at Oliopäivät 2008

MongoDB

Clojure back-end

POST /rest/command: {”command”: ”add-comment”

”applicationId”: ”123”

”text”: ”Autotallin räys…”}

Command

MongoDB

Application Architecture

Clojure back-end

POST /rest/command: {”command”: ”add-comment”

”applicationId”: ”123”

”text”: ”Autotallin räys…”}

Command

MongoDB

Application Architecture

Clojure back-end

POST /rest/command: {”command”: ”add-comment”

”applicationId”: ”123”

”text”: ”Autotallin räys…”}

Command

MongoDB

Application Architecture

{”ok”: ”true”}

Clojure back-end

POST /rest/command: {”command”: ”add-comment”

”applicationId”: ”123”

”text”: ”Autotallin räys…”}

Command

MongoDB

Application Architecture

{”ok”: ”true”}

GET /rest/application

Clojure back-end

POST /rest/command: {”command”: ”add-comment”

”applicationId”: ”123”

”text”: ”Autotallin räys…”}

Command

MongoDB

Application Architecture

{”ok”: ”true”}

GET /rest/application

Clojure back-end

POST /rest/command: {”command”: ”add-comment”

”applicationId”: ”123”

”text”: ”Autotallin räys…”}

Command

MongoDB

Application Architecture

{”ok”: ”true”}

GET /rest/application

Clojure back-end

POST /rest/command: {”command”: ”add-comment”

”applicationId”: ”123”

”text”: ”Autotallin räys…”}

Command

MongoDB

Application Architecture

{”ok”: ”true”}

GET /rest/application

4

Be slow – design the schema first. Design it using a UI demo.

A new foundation added at Oliopäivät 2012.

Be slow - schema first

Schema - Greek word skhēma - shape, diagram, or more generally plan.

Source: Uusi sivistyssanakirja freely translated

4

Be slow – design the schema first. Design it using a UI demo.

Be slow - schema first

Schema - Greek word skhēma - shape, diagram, or more generally plan.

Source: Uusi sivistyssanakirja freely translated

Plan 1. Lupapiste data model diagram

4

Be slow – design the schema first. Design it using a UI demo.

Be slow - Proof the schema with real data

Plan 1b. Data model with explanation.

Schema - Greek word skhēma - shape, diagram, or more generally plan.

Source: Uusi sivistyssanakirja freely translated

4

Be slow – design the schema first. Design it using a UI demo.

Database schema is a service interface. The only specification that matters.

Big Data

1. Design the schema first.

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Clojure back-end

REST API

JSON

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Clojure back-end

REST API

JSON

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Clojure back-end

REST API

JSON

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Clojure back-end

REST API

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Clojure back-end

REST API

JSON

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Clojure back-end

REST API

JSON

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Clojure back-end

REST API

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Clojure back-end

REST API

JSON

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Int 1 Int 2

BI

Int 3

Clojure back-end

REST API

JSON

REST API

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Integration 1

Clojure back-end

REST API

JSON Integration 2

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Integration 1 Integration 3

Clojure back-end

REST API

JSON

REST API

Integration 2

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Integration 1 Integration 3

Clojure back-end

REST API

JSON

REST API

Integration 2

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Integration 1 Integration 3

Clojure back-end

REST API

JSON

REST API

Integration 2

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Integration 1 Integration 3

Clojure back-end

REST API

JSON

REST API

Integration 2

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Integration 1 Integration 3

Clojure back-end

REST API

JSON

REST API

Integration 2

BI

Big Data

Then build an app on top of it

HTML 5 JS SPA UI

Clojure back-end

REST API

JSON

BI

Integration 1 Integration 3

REST API

Integration 2

Database

HTML 5 JS SPA UI

Clojure back-end

REST API

JSON

BI

Integration 1 Integration 3

REST API

Integration 2 Then build an app on top of it

Relational database has a schema. It has a plan with constraints.

Database

HTML 5 JS SPA UI

Clojure back-end

REST API

JSON

BI

Integration 1 Integration 3

REST API

Integration 2 Then build an app on top of it

Relational database has a schema. It has a plan with constraints.

Database

HTML 5 JS SPA UI

Clojure back-end

REST API

JSON

BI

Integration 1 Integration 3

REST API

Integration 2 Then build an app on top of it

Relational database has a schema. It has a plan with constraints.

Database

HTML 5 JS SPA UI

Clojure back-end

REST API

JSON

BI

Integration 1 Integration 3

REST API

Integration 2 Then build an app on top of it

Relational database has a schema. It has a plan with constraints.

4

Be slow – design the schema first. Design it using a UI demo.

1. The society has constraints, because people make errors

• You can not build a sauna everywhere, because its unsafe of would ruin the beautiful lake scenes

2. Use database schema with constraints, because people make errors

• You cannot refactor data model field names easily, so use a schema and a validator to prevent future errors

3. Then build an app on top of it

Choose any technology to get from A to B - cycle or sail …. or swim :)

A

B

Thank you

› Questions, comments?

› Feedback: timo.lehtonen@solita.fi

top related