Oh My GHaaD: Git Hosting as a Database

Bookmark
Rate this content

If you squint your eyes enough, git is a multiplayer database. Squint a little more and git hosting providers fill out even more of the needs of a backend for your applications. GitHub and most other providers allow authentication via OAUTH. They provide permissions to make sure only authorized users can modify the data. By leveraging the git provider’s API you can make what is essentially a serverless application. You probably wouldn’t want to host apps on a massive scale this way, but this kind of app is pretty compelling when you are building internal tools. This talk will dig into how such an app can be built and will hopefully inspire developers and companies to build more with less overhead.

This talk has been presented at React Summit US 2025, check out the latest edition of this React Conference.

FAQ

"Oh My God" is a side project that treats Git hosting as a database, aiming to inspire creative thinking about backend structures and application development.

The project was created by Chris Griffin, a software developer with around ten years of experience, who is also a developer advocate at GitKraken and a Twitch programming streamer.

The key components of a backend are data, authentication, and authorization.

"Oh My God" uses these platforms by storing data as JSON files in repositories, using OAuth for authentication, and leveraging existing permission systems for authorization.

Advantages include easy backups via Git clone, a serverless architecture where you don't manage the servers, and the ability to host data in public or private repositories.

Limitations include rate limiting on platforms like GitHub, manual management of permissions for collaborators, and potential organizational-level permissions issues.

Adapters are used to handle differences between REST APIs of different platforms like GitHub and GitLab, smoothing over these differences for consistent functionality.

You can build small applications, like a CFP tracker for conferences, using JSON files in a Git repository as the backend.

The primary purpose is to inspire thought about unconventional backend solutions and to demonstrate how Git hosting platforms can serve as backends for client-side applications.

You can connect with Chris Griffin on social media by scanning the QR code provided during his presentation, or by finding him on Twitch where he streams programming content.

Chris Griffing
Chris Griffing
11 min
21 Nov, 2025

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Chris Griffin discusses the innovative concept of Git Hosting as a Database, emphasizing the importance of data, authentication, and authorization in backend development. The utilization of file-based databases like parket files and the simplicity of authentication and authorization in building platforms similar to GitHub stand out. The architecture of a Git-based backend offers flexibility in backups, privacy features, and serverless advantages. Integrating with frontend frameworks through custom hooks and considering rate limiting issues on platforms like GitHub and GitLab are key points in application development with a backend-free approach using GitHub and GitLab.

1. Exploring Git Hosting as a Database

Short description:

Chris Griffin discusses his project Oh My God, explaining the concept of Git Hosting as a Database. He encourages thinking creatively about backend development and application building, highlighting the importance of data, authentication, and authorization in backends.

Hey, everyone. My name is Chris Griffin, and today I'm going to be talking about a side project I made called Oh My God, which is Git Hosting as a Database. Now, you might not understand what that means yet, but by the end of this, it might make a little more sense. The goal of this is not to have you use my project. It's more to just get you thinking outside the box and think about some fun projects you could do that reimagine how you see what a backend might be and how applications can be built.

So first, a little bit about me. I've been a software dev for around ten years. I'm a developer advocate at GitKraken, and I'm a Twitch programming streamer. If you want to connect with me on social media, just scan this QR code. It's prerecorded, so you can just rewind this when it's published finally. But, yeah, connect with me and let's chat. But let's get to it. I don't have much time.

First off, what is a backend? It's going to be important to recognize what makes a backend to our applications function, because then we can start reimagining where that backend can live. Your backend is just data, authentication, and authorization. Data can be your MySQL database or a Postgres database. It could even be in Mongo or CouchDB or DynamoDB or all sorts of places in NoSQL. But increasingly these days, we see that data can be file-based. You can just have files living on S3 and query them with Athena. You can also query files with Presto or Hive. There are even ways to query parquet files with, I think, Snowflake or things like that. The idea of just querying files that live somewhere instead of querying this live connection database that you can write to and do all sorts of stuff, yeah, file-based databases are actually increasingly more common, and that was my inspiration for building Oh My God.

2. Utilizing File-based Databases for Backend

Short description:

The concept of querying file-based databases like parket files and the simplicity of authentication and authorization are key inspirations for building Oh My God. GitHub, GitLab, and Bitbucket can serve as a backend with JSON data in repos and OAuth authentication. Combining authentication, authorization, and data management can lead to platforms resembling GitHub.

There are even ways to query parket files with, I think, Snowflake or things like that. I'm not too versed in that stuff. But the idea of just querying files that live somewhere instead of querying this live connection database that you can write to and do all sorts of stuff, yeah, file-based databases are actually increasingly more common, and that was my inspiration for building Oh My God.

Authentication is basically telling the server who you are, right? It could be in a cookie or a token, but it's just a way of authenticating with the server and it constantly knowing who is making this request to it so it knows what to do and all that. So really, pretty simple. And then authorization is what you can do with that cookie or token. So that might be your read permissions, your write permissions, your ability to do admin things. All of this stuff is just kind of separate from the authentication part, but they go hand-in-hand. When you combine all those things together, right, if you squint your eyes and blur your vision just a bit, you might see through this magic eye, and with a little bit of help, because I was always bad at these, with a little bit of help, you might start to see something like GitHub.

I used Oh My God as a framework. I built an application with this similar architecture before, but I decided I wanted to build something that was a framework that I could use to build other smaller applications in the future, and it was just kind of a fun. Let's think about GitHub, GitLab, and Bitbucket. How could they be a back end? Well, data can just be JSON in a repo. Authentication can just be OAuth, right? It's just, you know, login with GitHub and you are OAuthed, and then you have access to all of your repos, even private repos, etc. from your organization. And then finally, authorization, well, yeah, we all have ways of inviting collaborators and giving them specific permissions of read-only or write-only or even admin-level access. But yeah, combined together, GitHub, GitLab, Bitbucket, etc. can be a back end to your application.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

You Don’t Know How to SSR
DevOps.js Conf 2024DevOps.js Conf 2024
23 min
You Don’t Know How to SSR
Top Content
The Talk covers the speaker's personal journey into server-side rendering (SSR) and the evolution of web development frameworks. It explores the use of jQuery for animations in SSR, the challenges faced in integrating React with Umbraco, and the creation of a custom SSR framework. The Talk also discusses the benefits of Next.js and the use of serverless artifacts for deployment. Finally, it highlights the features of Astro, including its function per route capability.
AWS Lambda under the hood
Node Congress 2023Node Congress 2023
22 min
AWS Lambda under the hood
Top Content
In this Talk, key characteristics of AWS Lambda functions are covered, including service architecture, composition, and optimization of Node.js code. The two operational models of Lambda, asynchronous and synchronous invocation, are explained, highlighting the scalability and availability of the service. The features of Lambda functions, such as retries and event source mapping, are discussed, along with the micro VM lifecycle and the three stages of a Lambda function. Code optimization techniques, including reducing bundle size and using caching options, are explained, and tools like webpack and Lambda Power Tuning are recommended for optimization. Overall, Lambda is a powerful service for handling scalability and traffic spikes while enabling developers to focus on business logic.
Advanced GraphQL Architectures: Serverless Event Sourcing and CQRS
React Summit 2023React Summit 2023
28 min
Advanced GraphQL Architectures: Serverless Event Sourcing and CQRS
Top Content
Watch video: Advanced GraphQL Architectures: Serverless Event Sourcing and CQRS
GraphQL is a strongly typed, version-free query language that allows you to ask for specific data and get it in JSON format. It simplifies data retrieval and modification by allowing the server to handle all necessary operations. Serverless architectures, such as AWS Lambda, are scalable, cost-effective, and good for event-driven applications. Event sourcing and CQRS are techniques that ensure consistency and separate reading and writing parts of an application. Building a GraphQL API with commands and queries can be achieved using AWS AppSync and DynamoDB. This approach offers low latency, scalability, and supports multiple languages. Challenges include application complexity, data modeling, and tracing, but starting with simplicity and making something work first can lead to success.
Building Dapps with React
React Advanced 2021React Advanced 2021
30 min
Building Dapps with React
The Talk discusses building decentralized applications (DApps) with React and explores the benefits of smart contract technology. It highlights the characteristics and infrastructure of Web 3 applications, including decentralized indexing, off-chain data storage, and decentralized file storage. The Talk also covers identity in Web 3, with a focus on self-sovereign identity and the use of blockchain for identity verification. The process of building a DApp with React and Hard Hat is explained, along with deploying contracts and interacting with them. Overall, the Talk provides insights into the world of DApps and the technologies involved.
Serverless for Frontends
DevOps.js Conf 2022DevOps.js Conf 2022
8 min
Serverless for Frontends
Premium
Welcome to my session on Serverless for Front-ends. Serverless functions eliminate the need for a runtime and handle orchestration for you. Microfrontends require a runtime and orchestration, but side-less UIs provide a runtime-free solution. In the demo, a new team adds functionality to an application and publishes it easily. Building and deploying applications is quick and easy with micro apps and PowerCLI, offering true loose coupling and instant availability without a runtime.
Writing Testable Serverless Apps Using Hexagonal Architecture
TestJS Summit - January, 2021TestJS Summit - January, 2021
28 min
Writing Testable Serverless Apps Using Hexagonal Architecture
The scariest thing about serverless is the fear of vendor lock-in and losing control. Planning, good architecture, and deployment procedures help keep switching costs reasonable. Hexagonal architecture is a useful approach for writing testable serverless apps. Integration testing is crucial for serverless apps, and hexagonal architecture helps fight vendor lock-in and reduce switching costs. Docker is used for testing serverless functions, and the practicality of hexagonal architecture remains a question.

Workshops on related topic

AI on Demand: Serverless AI
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
AI on Demand: Serverless AI
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
In this workshop, we discuss the merits of serverless architecture and how it can be applied to the AI space. We'll explore options around building serverless RAG applications for a more lambda-esque approach to AI. Next, we'll get hands on and build a sample CRUD app that allows you to store information and query it using an LLM with Workers AI, Vectorize, D1, and Cloudflare Workers.
Building Serverless Applications on AWS with TypeScript
Node Congress 2021Node Congress 2021
245 min
Building Serverless Applications on AWS with TypeScript
Workshop
Slobodan Stojanović
Slobodan Stojanović
This workshop teaches you the basics of serverless application development with TypeScript. We'll start with a simple Lambda function, set up the project and the infrastructure-as-a-code (AWS CDK), and learn how to organize, test, and debug a more complex serverless application.
Table of contents:        - How to set up a serverless project with TypeScript and CDK        - How to write a testable Lambda function with hexagonal architecture        - How to connect a function to a DynamoDB table        - How to create a serverless API        - How to debug and test a serverless function        - How to organize and grow a serverless application


Materials referred to in the workshop:
https://excalidraw.com/#room=57b84e0df9bdb7ea5675,HYgVepLIpfxrK4EQNclQ9w
DynamoDB blog Alex DeBrie: https://www.dynamodbguide.com/
Excellent book for the DynamoDB: https://www.dynamodbbook.com/
https://slobodan.me/workshops/nodecongress/prerequisites.html
Serverless for React Developers
React Summit 2022React Summit 2022
107 min
Serverless for React Developers
Workshop
Tejas Kumar
Tejas Kumar
Intro to serverlessPrior Art: Docker, Containers, and KubernetesActivity: Build a Dockerized application and deploy it to a cloud providerAnalysis: What is good/bad about this approach?Why Serverless is Needed/BetterActivity: Build the same application with serverlessAnalysis: What is good/bad about this approach?
Building a GraphQL-native serverless backend with Fauna
GraphQL Galaxy 2021GraphQL Galaxy 2021
143 min
Building a GraphQL-native serverless backend with Fauna
Workshop
Rob Sutter
Shadid Haque
2 authors
Welcome to Fauna! This workshop helps GraphQL developers build performant applications with Fauna that scale to any size userbase. You start with the basics, using only the GraphQL playground in the Fauna dashboard, then build a complete full-stack application with Next.js, adding functionality as you go along.

In the first section, Getting started with Fauna, you learn how Fauna automatically creates queries, mutations, and other resources based on your GraphQL schema. You learn how to accomplish common tasks with GraphQL, how to use the Fauna Query Language (FQL) to perform more advanced tasks.

In the second section, Building with Fauna, you learn how Fauna automatically creates queries, mutations, and other resources based on your GraphQL schema. You learn how to accomplish common tasks with GraphQL, how to use the Fauna Query Language (FQL) to perform more advanced tasks.
Scaling Databases For Global Serverless Applications
Node Congress 2022Node Congress 2022
83 min
Scaling Databases For Global Serverless Applications
Workshop
Ben Hagan
Ben Hagan
This workshop discusses the challenges Enterprises are facing when scaling the data tier to support multi-region deployments and serverless environments. Serverless edge functions and lightweight container orchestration enables applications and business logic to be easily deployed globally, often leaving the database as the latency and scaling bottleneck.
Join us to understand how PolyScale.ai solves these scaling challenges intelligently caching database data at the edge, without sacrificing transactionality or consistency. Get hands on with PolyScale for implementation, query observability and global latency testing with edge functions.
Table of contents- Introduction to PolyScale.ai- Enterprise Data Gravity- Why data scaling is hard- Options for Scaling the data tier- Database Observability- Cache Management AI- Hands on with PolyScale.ai
Live e2e test debugging for a distributed serverless application
TestJS Summit 2021TestJS Summit 2021
146 min
Live e2e test debugging for a distributed serverless application
Workshop
Serkan Ozal
Oguzhan Ozdemir
2 authors
In this workshop, we will be building a testing environment for a pre-built application, then we will write and automate end-to-end tests for our serverless application. And in the final step, we will demonstrate how easy it is to understand the root cause of an erroneous test using distributed testing and how to debug it in our CI/CD pipeline with Thundra Foresight.

Table of contents:
- How to set up and test your cloud infrastructure
- How to write and automate end-to-end tests for your serverless workloads
- How to debug, trace, and troubleshot test failures with Thundra Foresight in your CI/CD pipelines