Reading and Writing a Private Google Sheet Programmatically

Google Sheets is amazing — a free, publicly accessible spreadsheet available to anyone with an Internet connection. With its expressive (if a bit obtuse) formula programming language and its ease of distribution, it’s not surprising that Google Sheets is a favorite component of many cloud automations. Even here at Atomic, where we have easy access […]

Scrollable Grid with Just-in-Time Data Loading – Part 5: Hooking Up the Database

Our GraphQL endpoint currently generates faked-out employee data. Once we update our GraphQL resolver to query the Employee table in our database, we will have a truly full-stack implementation of just-in-time data loading (finally!). Wondering how we got here? The first four posts in this series describe how to: Fetch data in batches with react-window’s […]

The Single-Valued Type Pattern for TypeScript

We’ve been using TypeScript heavily over the last few years at Atomic, and a pattern has emerged for how we deal with cases where we want flexible, composable APIs for dealing with statically-known concerns about an application. Our Wish List Whether it’s data repositories, CMS content types, GraphQL queries, or background jobs, situations regularly arise […]

Getting Create React App & Express to Share Code Without Ejecting (Using Webpack & Typescript)

On a recent project, we used Create React App (CRA) as a starting point. It provides a lot of features out of the box that make starting a new React project a breeze, and it has a community-driven update path. I also wanted to share Typescript code between the front end and back end, something […]

Scrollable Grid with Just-in-Time Data Loading – Part 4: Fetching Data with Apollo Client and GraphQL

Today I’ll explain how to use Apollo Client to fetch data in batches from a GraphQL endpoint and hook that data up to Infinite Loader. By the end of this post, you’ll have an (almost!) full-stack, just-in-time loading list. How did we get here? In my last few posts, I’ve explained how to: Fetch data […]