• Operating in 40+ countries • 500+ employees • Growing rapidly • Engineering based in Amsterdam and London • Firm believer in Open Source https://travix.com
Modular JavaScript framework • Consisting of multiple packages in a monorepo • Built primarily for the needs of Travix • Generic enough to be used anywhere (browser, server, CLI, outside of Travix) • Focused on providing minimum set of building blocks • Stable since v1.0 release, and already in production Site: https://frint.js.org GitHub: https://github.com/Travix-International/frint
creating Apps • frint-react: React bindings and for rendering • frint-react-server: Server side rendering for Apps • frint-store: Reactice store for state management with actions and reducers • frint-model: Object-like data structures • frint-test-utils: Common reusable code for unit tests • frint-compat: Backwards compatibility support • frint-cli: CLI tool for FrintJS apps, with a pluggable system Coming soon: • frint-router: Services for streaming HTML5 history API, matching routes, etc • frint-router-react: React components for making SPAs • frint-data: Reactice Models and Collections, with Validation support
development across all teams • Everyone building Apps the same way • Gives us control over what we allow and NOT allow to external developers • Ultimately gives us a foundation to build upon • Allows us to predictably keep backwards compatibility every quarter • Open Source & well maintained documentation for all • Code splitting
complements React (or any other functional rendering library) • The framework itself is very decoupled, and core is not directly tied to React • React is treated just as a rendering library by us • Frint takes care of the overall structure of your application • AngularJS is a full featured framework of its own • We needed to build on top of existing frontend (which is based on React) progressively • Starting from scratch in frontend was not an option
way (with `createApp` function) • Root is rendered to DOM directly • Child is always registered to Root • Regions take care of rendering Child • There is always only one single Root App • No limit on number of Child apps
be scoped by the Child App that is consuming it? • Meaning, the value of the provider being cascaded, need to be computed again, and this time with the Child app as the value of `app` dependency
be streamed • Actions: Payloads of plain objects • Reducers: Functions taking in payloads and current state, returning new state • Combine multiple reducers into one single root reducer • Apps have their own Stores • Docs: https://frint.js.org/docs/packages/frint-store/
a few days Under consideration: • frint-data: for Models and Collections based data structures, with Schema and Validation support • frint-intl: for localization needs • frint-store: improved further with Epics
project • Everything is done out in the open You can: • Submit well explained bug reports • Help out others in Issues • Improve documentation • Send Pull Requests for bug fixes • Ask questions • Propose new features and directions • Spread the word