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 ## Design and implementation
The server is built using Node.js. I designed a basic GraphQL schema and 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) used [Apollo's GraphQL implementation](https://www.apollographql.com/docs/apollo-server/getting-started) to bring it to life.
to bring it to life.
In GraphQL, data is represented using a schema, which is then fulfilled with 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 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 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.
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 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.
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.