Changelog November 24

It’s been over a month since our last post but we’ve been busy behind the scenes working on our web application and working with collaborators around the world to test it out. 

Our focus in October and November has been on developing tighter integrations between our components and core utilities resulting in a more dynamic and interactive experience to create data maps and landscape archives.

Here is the changelog of developments we’ve made to our web application in the past months:

 
 

Backend development:

  • Refactored login - We refactored our login process to make better use of sessions and support group collaboration on projects - this has involved developing an improved debugging system that can alert us to potential login errors experienced by collaborators

  • Sensor ingest - we have begun work on rewriting our integration with the Thingsboard API starting with refactoring our sensor ingest node

 

Commit history of application frontend on GitHub

Frontend development:

  • Reworking our UI to provide more consistent styling for IoT sensor data. We plan on investing much more energy in this area in the coming months so watch this space!

  • SvelteKit Routing - we moved our application over from a single page web app to make fuller use of SvelteKit’s routing systems. It necessitated a lot of code rewrites and refactoring of core components such as our sidebar. This has been worth it as we can now produce dynamic routes to projects and other data sources, providing shareable links for greater collaboration.

  • Cesium.js - moving over to SvelteKit prompted us to refactor how we integrate Cesium into our application and we now have a better method for exposing functions that take advantage of Cesium's geospatial capabilities across our application.

  • Forms and Data Validation - we were already using and building our own forms on the application but the move to SvelteKit coincided with adopting Shadcn Svelte and making use of underlying form libraries Superforms and Formsnap - this provides many advantages such as accessibility for screen readers. We have also integrated Zod schemas to support data validation of our form schemas. This  will support users with helpful error messages, resulting in a cleaner database and greater interoperability.

  • UUIDs - we have integrated the use of UUIDs across the platform to identify data sources


Problem solving:

As with any programming tasks there are moments where documentation runs out of road or you are working to integrate libraries without any documentation to go off! A few of the issues and their solutions we encountered in the last month:

  • HTML Inputs and validating latitude and longitude data: we required that users entered valid positive or negative floats for coordinates but couldn’t seem to get past coercion errors that forced entries to whole integers - after trawling through documentation for Zod, Superforms and Shadcn to no avail we encountered the “step=”any”” attribute, which magically solved our problems!

  • SvelteKit server issues - due to SvelteKit’s structure being designed around being a full stack web app, working with Zod and Superforms Submit events relies on the SvelteKit backend to submit form data. This causes a new session to be created for that request, which is therefore not authenticated and not able to submit data to our database. Eventually we solved this issue and with further development, it would be good to move the form action logic to our api server.

Next
Next

September: Slide Decks and Satellites