estate group, including a forest property management providing services and solutions also to other companies In-house development –strategic choice: owning the applications –development HQ in Berlin
KLOC Java/Spring Boot/K8s/neo4j APIs for ~ 15 internal systems Source of truth for property master data Wraps ERP systems from different vendors in different countries –US, CA, GB (Yardi Voyager) –DK, DE, SE (Bolig, Incit Xpand, Immotion) –SE (ArcGIS, with forest data) –FR, CY (residential, replaced other ERPs!) All photos under CC0 public domain license
this application failed! • Time to market an issue! Frontend policies: • SPAs required: Angular or React • No central frontend integration strategy • frontend developers in high demand internally
devs (HTML/CSS, jQuery, Bootstrap, templating engines, …) 2 mid-level/junior devs Project focus: • integrating and harmonizing data models internationally • Data imports and synchronization • Internal APIs for applications • DB performance, multi-tenancy, data quality…
some time to learn Angular • Full control, no external dependency • But: quality and time-to-market? Or off-load to the central “portal app” team? • would deliver quickly • concentrate design expertise in the front-end team • But: introduce coupling and depend on another team’s priorities? Which option is easier to revert later?
plans need synchronization • many internal API endpoints need to be published and documented • front-end developers need to be involved even for small tasks • back-end data model details might „leak“ into the front-end
publishes • Java annotations on DTO classes as declarations • Reflection to generate and publish the schema GET /ui-schema?type=apartment „Portal application“ • consumes and renders • Implements a mapper JSON schema → Formly (~1KLOC + config)
Navigation: entry point „property list“ • Actions: embedded links to GET & POST endpoints advice about permissions • structure: detail views, expandable sections, tables • content: ordered attributes in groups or in table columns labels and translations core concepts
little maintenance effort Some preconditions, however… • data model is relatively stable • UI style is minimalistic Restrictions • Completely new UI features cannot be done without extending schema concepts • Some visibility constraints are currently hard-wired in annotations conclusion
right place can allow a back-end team to • avoid playing politics just to ensure capacity • Deliver features without waiting for front-end changes • Isolate from frontend library wars, UI/UX discussions, and style guide changes Take-aways