We are Airsequel, your one-stop platform for hosting SQLite databases. For every database we automatically generate a GraphQL API, a user-friendly spreadsheet interface, an SQL workbench, and a dashboard builder. Moreover, we are continuously looking for ways to enhance the capabilities of SQLite.

Recently I had to write a file synchronization script for a WebDAV server. While I had heard of WebDAV before, I didn't know how it worked and I expected some complicated, archaic "enterprise" protocol. I was pleasantly surprised when I found out that WebDAV is actually a quite simple protocol based on our good old friend HTTP.

It extends the usual GET, POST, โ€ฆ methods with a few new ones like COPY, MKCOL, PROPFIND, and LOCK. This means: To implement a WebDAV server, you only need to implement handlers for the HTTP methods and you can use any HTTP server library you like. Accessing it afterwards is even simpler as you either simply fetch URLs with PROPFIND (file-information) and GET (file-content) requests or use one of the many webdav clients.

Here you can see macOS Finder accessing a WebDAV server:

Screenshot of macOS finder accessing WebDAV server

This made me think:

If it's so easy to set up a file system view with WebDAV, what non-obvious data access patterns could you implement with it?

How about accessing our favorite database with it? WebDAV for SQLite!

Which brings us to today's news:

I'm excited to announce the release of SQLiteDAV, a WebDAV server for SQLite databases.

SQLiteDAV allows you to access your SQLite databases over the WebDAV protocol by mapping tables, rows, and columns to files and folders in following way:

This SQL schema:

CREATE TABLE "colors" (
  "name"  TEXT,
  "rgb_tuple"  TEXT
);

CREATE TABLE "users" (
  "name"  TEXT,
  "email"  TEXT,
  "height"  INTEGER,
  "photo"  BLOB
)

โ€ฆ will yield following file view:

This, however, is only one possible way to represent the database. Maybe for another use-case it would be better to create one JSON file per row. Reach out to us on ๐• if you have suggestions on how to enhance its functionality or potential applications!

The code is open source and available on GiHub.

Right now it is still missing some features like write, move, delete support, and proper file extensions for BLOBS. Check out the full list on GitHub. We'd be happy about any contributions!

While this first release only scratches the surface, we're quite excited about the possibilites for future improvements and applications. Let us know what you think!