<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Stefan Ostermayr</title>
    <description>The latest articles on Forem by Stefan Ostermayr (@steve_oh).</description>
    <link>https://forem.com/steve_oh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F645961%2F6c08bf56-c298-4c07-ad3f-77371a2d8a32.png</url>
      <title>Forem: Stefan Ostermayr</title>
      <link>https://forem.com/steve_oh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/steve_oh"/>
    <language>en</language>
    <item>
      <title>Elm at Treefin</title>
      <dc:creator>Stefan Ostermayr</dc:creator>
      <pubDate>Mon, 14 Jun 2021 10:33:27 +0000</pubDate>
      <link>https://forem.com/steve_oh/elm-at-treefin-2k20</link>
      <guid>https://forem.com/steve_oh/elm-at-treefin-2k20</guid>
      <description>&lt;p&gt;Hello lovely &lt;strong&gt;Elm-Community&lt;/strong&gt;! We at treefin (Munich, Germany) love Elm and want to share our story along with some exciting news with you!&lt;/p&gt;

&lt;p&gt;As a short intro: Treefin is a digital assistant for all of your financial matters. It allows you to keep  your bank accounts, insurances and investments in one place, providing you with helpful insights and a 360° overview of your spendings.&lt;/p&gt;

&lt;p&gt;A few years back we have made the decision to &lt;strong&gt;rewrite our codebase&lt;/strong&gt;. With treefin being a finance app, our users’ trust has always been our primary concern. Stability and a high standard of quality were therefore of great importance when it came to choosing the frontend tools. TL;DR: &lt;strong&gt;We chose Elm!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our approach is to gradually migrate chunks of our old &lt;strong&gt;AngularJS&lt;/strong&gt;-frontend to a new codebase using Elm. We keep those two codebases strictly separated. To enforce this (also on CSS level) the new app is integrated into the old one using an iFrame, with the option of making it a custom element with shadow DOM in the future. The two components are packaged using Webpack. The app is finally shipped as &lt;strong&gt;Cordova&lt;/strong&gt; Hybrid app which helps us to easily target web browsers as well as Google and Apple Phones.&lt;/p&gt;

&lt;p&gt;While implementing the new app, we adhered to community standards for writing &lt;strong&gt;SPAs in Elm&lt;/strong&gt;: We keep a Main.elm as a central unit, managing state, rendering all views and handling commands and subscriptions.&lt;/p&gt;

&lt;p&gt;Our &lt;strong&gt;Elm caching layer&lt;/strong&gt; is a robust and scalable solution for complex single page applications. With a Cache.elm we keep all communication to the outer world and our application’s global state in one place. Any data required by a Page is expressed as a Need, which abstracts requests to cache (read more).&lt;/p&gt;

&lt;p&gt;With a new app comes a fresh UI design, too! We follow the &lt;strong&gt;Material Design guidelines&lt;/strong&gt; and use Material Components from the &lt;a href="https://package.elm-lang.org/packages/aforemny/material-components-web-elm/"&gt;aforemny/material-components-web-elm&lt;/a&gt; package as much as possible. Additionally, all of our CSS is following the &lt;strong&gt;BEM&lt;/strong&gt; methodology. To enforce this, we have implemented helper functions in a Utils.Bem module and use those for displaying any part of the UI. To make the navigation between the old and new areas of the app as seamless as possible, huge efforts were put into styling on both sides of the code.&lt;/p&gt;

&lt;p&gt;If you would like to test out the treefin app, you can use one of our &lt;strong&gt;demo bank accounts&lt;/strong&gt;! You can find the &lt;a href="https://app.treefin.com"&gt;web app here&lt;/a&gt; or download the mobile version both from Play Store and App Store. After registration, you can add a dummy bank connection through searching for “Demo Provider” in the list of bank providers. The demo account names and credentials are displayed on screen, however, demo2/demo has to most data in it, so we would advise you to go for this one!&lt;/p&gt;

&lt;p&gt;That's all folks.&lt;/p&gt;

</description>
      <category>elm</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
