Dogfooding. Using Basedash to build Basedash

March 10, 2022

Jeremy Sarchet
Full Stack Developer

At Basedash, we are users of our own product.

Our product, Basedash, has the following architecture, fairly typical for a web app:

  1. Server (running Node and Express, written in TypeScript)
  2. Client for browser or desktop (written in TypeScript)
  3. Database (PostgreSQL)

And what does our product do? It facilitates database management.

Recall, we ourselves have a database to manage (see item 3 above). So, naturally, we use Basedash to manage Basedash.

Basedash connects to our customers’ databases allowing our customers (teams of technical and non-technical users) to read and write to their own databases with a high quality user interface with thoughtful collaboration and access controls.

And we ourselves are one of our own customers. Those connections, those affordances for reading and writing to one’s own database, are themselves backed by tables and records in our production database (item 3 above).

For example, our production database has certain tables along the lines of “user”, “workspace”, “database”, “schema”, “table”, “column”, and “edit” (paraphrased), in order to keep track of users’ own transactions with their own databases.

Example: looking up a user

Imagine we have a customer that reaches out to us for support. We’d like to pull up that “user” record, to see things like what plan they’re on, what workspaces they are a member of, what databases they’ve connected in order to manage them with Basedash.

Doing things the manual way would look something like this, a developer querying the database with the command-line interface:

But it’s not always preferable to do things the manual way. Many people use a database administration tool like Postico, or TablePlus to make this kind of thing more approachable and convenient. But we like to use the very database administration tool we are building. So, here’s how we might look up a user in Basedash, by simply searching for that user’s email in our “user” table:

Summary

This situation of being one’s own customer is known in the industry as “dogfooding”, or “eating your own dogfood”, and it’s something we embrace. We’re using Basedash for Basedash at Basedash.

What is Basedash?

Ship your product faster.
Worry about internal tools less.

No credit card required.

More posts like this