Reorganize implementation notes on Interchange

This commit is contained in:
2026-02-09 16:55:23 -08:00
parent cde993fc9f
commit a1343f815f

View File

@@ -18,17 +18,11 @@ GraphQL, with Redis as a primary storage mechanism.
## Design and implementation
The server is built using Node.js. I designed a basic GraphQL schema and
used [Apollo's GraphQL implementation](https://www.apollographql.com/docs/apollo-server/getting-started)
to bring it to life.
used [Apollo's GraphQL implementation](https://www.apollographql.com/docs/apollo-server/getting-started) to bring it to life.
In GraphQL, data is represented using a schema, which is then fulfilled with
resolvers defined in code. Each resolver function gets some information like the
parent object, arguments, and a server-defined shared context. Seeing the dependency injection
that you could do with this context, I decided on an object-oriented approach consisting
of **loaders**, **repositories**, and **systems**. Loaders load data from an external source,
repositories store data, and systems are composed from a set of both loaders and repositories.
parent object, arguments, and a server-defined shared context. Seeing the dependency injection that you could do with this context, I decided on an object-oriented approach consisting of **loaders**, **repositories**, and **systems**. Loaders load data from an external source, repositories store data, and systems are composed from a set of both loaders and repositories.
I then applied an event-driven pattern to implement the iOS notification sender, listening
to updates on the shuttle repository. I would eventually reuse this pattern to implement
**a custom ETA system** that could run independently of an external data source.
I then applied an event-driven pattern to implement the iOS notification sender, listening to updates on the shuttle repository. I would eventually reuse this pattern to implement an ETA prediction system that could run independently of an external data source.