Skip to main content

Introducing Field Orchestrator: The Intelligence Layer for Financial Audit.

Learn More

Introducing Field Orchestrator: The Intelligence Layer for Financial Audit.

Learn More

EPD Learning Group: Real-Time Collaboration

Fieldguide Team
Fieldguide Team
1 min read

Learning and development is an essential part of our EPD (Engineering, Product, and Design) team culture at Fieldguide. We meet every few weeks as a team to discuss new features, software design principles, and emerging technology.

In this post, we'll showcase a recent learning group presentation that showcased the architecture of our multiplayer feature, called "Live Updates", which enables real-time collaboration in our product.

update image
At some point in the evolution of the learning group we decided that this was the place to show off our powerpoint skills. Now almost every learning group comes with a spectacular set of slides, sometimes meme-based, sometimes themed, always delightful.
Websockets image
While the majority of our engineering staff was already familiar with websockets, we try our best to make each presentation approachable to technical and non-technical folks here at Fieldguide.
Implementation
Our Live Updates service and how it interacts with other parts of Fieldguide.
Socket io
We chose Socket.io as our API for interacting with websockets. They have a large amount of community support (200+ contributors, and ~3.7 million users), fantastic documentation and a ton of out of the box features like, automatic reconnection, rooms, and a massive variety of event emitters.
What is socket io
Overview of a socket within the context of our application.
Rooms image
While Socket.io allows for a socket to join as many rooms as needed, we structured our rooms so that a socket can only join one at a time. This makes it easier for us to manage the join/leave events for each socket.
Event types image
Overview of event types.
Connect and disconnect image
Overview of connect and disconnect events.
Client events image
Overview of the different types of client side events that Socket.io has built in, as well as the client side events we emit.
Server events
Socket.io has a large amount of built in server side events. We spent time here diving into the Socket.io documentation on their website.
API
Our API definition and how to update it.
Frontend
Overview of our React contexts. Separating the two contexts allows us to keep the socket connection logic abstracted from specific interaction logic within a feature. This also sets us up to use it in other areas of the application.
Hasura subs
We weighed numerous options for live updating data and real time display. Ultimately we landed on Hasura Subscriptions, which play nicely with other parts of our product that use Hasura as a unified GraphQL API.
RCA
We love learning from our mistakes. We went over blameless postmortem reports written by our team members from working on this feature.
THE BUG
If an update you made feels too easy, it probably is!

Thanks for reading! If you like what you see here and want to join our team, we're hiring!

Fieldguide Team

Fieldguide Team

Insights and stories from the team building Fieldguide, the AI-native platform for audit and advisory firms