Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Launching into Orbit.js
Search
Sibiu Web Meetup
November 23, 2019
Programming
70
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Launching into Orbit.js
Sibiu Web Meetup
November 23, 2019
More Decks by Sibiu Web Meetup
See All by Sibiu Web Meetup
DevSecOps: Develop Fast & Stay Secure
sibiuwebmeetup
0
48
Git commit messages and PR etiquette
sibiuwebmeetup
0
45
Introduction to Cypress
sibiuwebmeetup
0
40
Web Application Security
sibiuwebmeetup
0
120
Zero Coupled Microservices
sibiuwebmeetup
0
24
Ethereum: Quick & Dirty
sibiuwebmeetup
0
91
Automation in Code Reviews
sibiuwebmeetup
0
130
useState(props.title)
sibiuwebmeetup
0
100
Introduction into ClojureScript
sibiuwebmeetup
0
53
Other Decks in Programming
See All in Programming
Claude Team Plan導入・ガイド
tk3fftk
0
210
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
0
230
継続モナドとリアクティブプログラミング
yukikurage
3
610
AIエージェントで 変わるAndroid開発環境
takahirom
2
680
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
510
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
470
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
330
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
110
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
190
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
800
symfony/aiとlaravel/boost
77web
0
130
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
350
The Curse of the Amulet
leimatthew05
2
13k
The Spectacular Lies of Maps
axbom
PRO
1
860
Site-Speed That Sticks
csswizardry
13
1.3k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
BBQ
matthewcrist
89
10k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
460
Optimizing for Happiness
mojombo
378
71k
Code Reviewing Like a Champion
maltzj
528
40k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Transcript
LAUNCHING INTO ORBIT.JS
mercury ABOUT ME Stamate Cosmin @monovertex
venus ABOUT ORBIT.JS • Overcharged ORM • Framework for interacting
with and synchronizing various data sources • Offline/online transitions
earth INSPIRATION • “Ember in Orbit - Building apps for
Outer Space Connectivity” • Miguel Camba @cibernox • Ember{{fest}} 2019 • https://youtu.be/ b7-VegI-WX8
mars ORBIT.JS PHILOSOPHY • Everything is interchangeable • Incremental complexity
• Easy wiring • Glue APIs and strategies together with minimal friction
jupiter MAIN DIRECTIVES
io (jupiter) GOALS • Optimistic/pessimistic strategies • Plug n’ play
• Client-first • Branching/merging • Change tracking => undo/redo support
europa (jupiter) CONSTRAINTS • Disparate data sources • Compatible interfaces
• Normalized data • Notifications and change tracking
saturn PRIMITIVES
mimas (saturn) RECORD • Data in normalized form • Has
an id • Has a type • It can include other attributes or relationships
enceladus (saturn) SCHEMA • The entirety of Models • Models
describe a record type • Think of Models as classes, records as instances and of schema as domain/project
dione (saturn) SOURCE • Sources are providers and managers of
data • Each source understands how data of any given schema should be stored in their corresponding backend
tethys (saturn) TRANSFORM • A set of Operations • Operations
describe a mutation on a record • Transforms are atomic • E.g. a new record, an attribute update, a relationship deletion
rhea (saturn) QUERY • An expression to retrieve specific data
• Same meaning as in traditional database systems • Query builder
iapetus (saturn) LOG TASK BUCKET • Log: history of transforms
• Task: handle actions in async or synchronous manners • Bucket: a database backup for database state; holds transient information
hyperion (saturn) COORDINATOR • Higher order component • The Coordinator
dictates strategies • Handles wiring between a set of sources • Declarative
uranus DATA SOURCES
ariel (uranus) MEMORY • @orbit/memory • Tab-specific • Lives in
memory allocated for the JS process • Immutable data structures • Cheap forking/merging
miranda (uranus) JSONAPI • @orbit/jsonapi • JSON:API is a set
of conventions for building APIs with data formatted as JSON objects • Modern standard that allows for better integration
umbriel (uranus) INDEXEDDB • @orbit/indexeddb • Client-side database • Provides
a persistent, domain-specific structured storage solution • Especially useful for PWAs, if available
titania (uranus) LOCAL STORAGE • @orbit/local-storage • Synchronous storage •
Designed for smaller amounts of data • Can be a fallback from indexeddb, but performance can be impacted
oberon (uranus) OTHER SOURCES • Adapters for other sources can
be easily implemented • Custom REST APIs • orbitdb/orbit-db - peer-to-peer database • Google Drive - a spreadsheet or a JSON file • Local file system (nodejs/native apps)
neptune Q&A
pluto THANK YOU!