Build Your Own Tools
One of my biggest frustrations has always been how hard it is to find software tools that do exactly what I want. Sometimes a use case is too specific for an off-the-shelf product. When you do find a good product, it often gets updated to remove good features or add bloat. There are UI/UX issues or workflow problems that make things frustrating to use. And I've started approximately 1024 projects to build myself something useful, and completed maybe two of them. But we've hit the point where an AI with strong human guidance can create the tools you need surprisingly quickly.
One of my biggest frustrations has always been how hard it is to find software tools that do exactly what I want. Sometimes a use case is too specific for an off-the-shelf product. When you do find a good product, it often gets updated to remove good features or add bloat. There are UI/UX issues or workflow problems that make things frustrating to use. And I've started approximately 1024 projects to build myself something useful, and completed maybe two of them. But we've hit the point where an AI with strong human guidance can create the tools you need surprisingly quickly.
I've been using SQLite for a few projects lately, but I never loved any of the solutions for inspecting the contents of a SQLite database. Querying from the command line is annoying and it's hard to parse the output. Some of the installable SQLite editors seem overly complex, and others don't look professional enough to trust running their code on my machine. Online options claim to do everything locally with no upload to a server, but I still refuse to upload my database to a foreign website.
So I decided to build my own. The criteria was simple:
- Open a SQLite database file
- Allow creating tables, and creating, reading, updating, and deleting rows
- Save a SQLite file
I used one of the major coding AI platforms (they're not paying me to advertise so I won't specify which one, but I think you can get similar results with any of them) and chose to make a Next.js web app. I didn't add any formal design system, and I used typescript which I'd never shipped a product with before.
Over the course of a few hours of work, spread out across several days, I had a completely working prototype. I could upload a database file, render the tables and data in each table, make changes, and download the updated file.
As I was working on it, more ideas came up. What if we could just point it at files and live edit them? It was trivially easy to add an option to allow specified local files to open in the editor. Cloudflare, that my team uses for some projects, provides their D1 datastore which is basically fancy cloud-hosted SQLite. What if I could edit those too? In about two hours I added a modal that let me input my cloudflare connection info and browse a D1 database.
I also added unit test coverage, which is currently sitting around 60% as I keep playing with the project, but will by back at 90% with a few commands and some manual code review. I even added the beginning of an end-to-end test suite with Playwright, enough to confirm that the app loads correctly in a browser. This is already much better test coverage than my just-for-fun projects usually get, and a great way to make sure I can keep this thing working as I make changes.
This project could theoretically be installed on a server the way phpMyAdmin was, to provide easy access to a live database, although it would need an entire layer of authentication, user roles, and permissions added. I'm just amazed I was able to get so far with it in so little time. I only minimally worked with typescript, and to have a complete working project with reasonable architecture and test coverage is amazing. Currently it looks like this:
I did make an attempt to use local LLMs through llama.cpp and LM Studio. Both Codellama and Qwen3 were not quite up to the task, but still more impressive than local models a year ago. I found they'd need extremely small and specific goals, and even then would do things like write Jest unit tests in a project that used vitest. I think a lot of it comes down to prompting, and one of my next projects might be to better at writing prompts for a specific local model, then try to get a full development cycle going with it.
You can find the current work in progress at https://github.com/DormouseSays/tiny-db-browser but remember it's a personal project, and as the MIT License says, it's provided "as is" without warranty of any kind.
Would I ship this to production? Not without a lot of review, from at least one other human. But I don't need to ship this for anyone else to use. This was made to live on my machine and let me do a few simple tasks. It wouldn't fit every general use case for a database browser, and that's ok. We've now hit the point where it's completely possible for everyone to create their own bespoke tools. I hope you find a reason to create something useful for yourself. Drop me a line and tell me about if if you do something cool.
I've intentionally chosen not to support comments on this site. If you feel a strong need to discuss something, you can use the social sharing links above to write your own comment. If this post has sparked any big ideas, either positive or negative, I encourage you to write your own post and share it on your own website. Feel free to drop me a link in the contact section, and I'll add links here to interesting responses.
