__bb - 5d
I recently released v3 of Base, my SQLite editor for macOS.
The goal of this app is to provide a comfortable native GUI for SQLite, without it turning into a massive IDE-style app.
The coolest features are
- That it can handle full altering of tables, which is quite finicky to do manually with SQLite.
- It has a more detailed display of column constraints than most editors. Each constraint is shown as an icon if active, with full details available on clicking the icon.
This update also adds support for attaching databases, which is a bit fiddly with macOS sandboxing.
I'd love to hear any feedback or answer any questions.
I've been using Base for [checks... considers retirement] about 15 years!? It's ALWAYS been great, AND has improved over time.
Useful comment because I always assume these "Show HN" products are minimally viable... whereas, it's good to know it's been battle tested for at least 15 years.
I assume they must be new too. Nice to see a project that’s been around for a while get posted and reach number 1.
So apparently this has been around for 15 years? I would have bought this years ago, but it never showed up on any of my searches... google, reddit, producthunt, alternativeto... feel like I just shifted into another dimension where this has apparently... always existed?
The name chosen probably didn't help here. “Base” is a very generic term.
It's also the name of the database application in LibreOffice, confusingly.
And its development got really quiet for a few years, I think.
That may well be the main reason, actually.
That's why marketing/distribution/sales is very important. As a developer most of us think if we build a good product everyone will start using it, which is very wrong in 99% of the cases.
I feel the same way. I've searched for sqlite guis many times and this has never come up.
I love this model of software development, which I think of as "artisanal", as opposed to open-source or enterprise. A small team, maybe just one person, who invests deep effort into a product that does one thing very well.
The question is, does it actually earn enough money for the person to live off?
In this case, no. It would be nice if it did though.
World would be a slightly better place if those who can afford (or put it on company) would support these indie developers.
This is exactly was my first thought. Having good paid product which at least covers the expenses of the developer is much better than having a product for just a love of it.
It's an open question in these times, though there's a cohort of "artisanal" devs trying hard.
It would be amazing if it could display UUIDs. SQlite doesn't support them natively, but many people store them as binary blobs.
Jetbrains products realize that these binary values are UUIDs and let me edit them easily.
Thanks, I'll make a note of that. It's not a behaviour I've seen before.
I work a lot with syncing code for mobile apps, and use sqlite for local dbs on the app, which I guess is fairly standard. UUIDs make sync protocols much easier to write.
I see that this software is available for direct sale, the Mac App Store, and through Set App. What is your revenue breakdown from each if you don’t mind sharing?
It's a bit too soon to tell reliably, since I've shipped v3 as a new app and it hasn't settled down yet. For v2 it used to be 60% App Store and the remainder direct/Setapp. So far for v3 it is approximately 60% direct, 25% App Store and 15% Setapp.
This is a bit of a shift, but the numbers aren't really stable yet so it's hard to tell if it'll stay there.
Thanks for offering this app outside of the App Store too. Why don't you support older versions of macOS though? Does this app really rely on any new macOS APIs that it has to be built only for macOS 15+?
One of the things I found limiting in previous versions was supporting older versions of macOS. I’ve decided this time round to only try to support the latest and previous versions. Since the release of Tahoe is probably quite soon, I’m starting with just macOS 15 and will support that and macOS 26 to start.
From what I have observed, apps built for macOS Mojave (64-bits) or macOS Catalina all work fine on the latest versions of macOS. So I guess you must be hampered with App Store requirements ...
Apple frequently introduces new APIs that enable new functionality or make things easier and more maintainable. Also, testing software on older operating systems creates additional work. Unlike other OSes, macOS puts several limitations on running it under a VM, so in some cases you have to boot the OS up on real hardware. If you don't have 5 or 6 old Macs laying around this means setting up multi boot. There are also limitations on which versions the latest Xcode can target.
I understand. In this particular case, I am making an assumption that they aren't really using any new OS API's (this is, after all, a reasonably simple app) in which case they could just build and test on macOS Mojave or Catalina (the minimum OS version) and the latest macOS Whatever (the maximum OS version, for the APP store). As I highlighted, most older apps run without issue on newer macOS versions, and so that is a reasonable assumption to make and forego testing on all versions. Then, only if you get some bug report on some particular version, you can test for that ... (as you pointed out, the best approach - testing on all versions - can be very resource intensive, and this can be a practical middle-way approach for an independent developer).
I didnt know there are dozens of us! When I saw the lack of native support i decided to use binary blobs. I mean, why waste many bytes if few bytes do trick? In the SQLite studio app im using its garbled and annoying to browse.
Too bad this is mac only. I mean, im a mac user (among other things) but i don't want to depend on platform specific tooling.
See, I would be terrified of doing that because different RDBMSs and languages store and sort UUIDs differently. A UUID is not just a number. It's a structured data format.
Both MariaDB and SQL Server have dedicated data types for UUIDs, and they sort in an unexpected order if you're unfamiliar with the structure of a UUID or the endianness of certain portions of it. Oracle assumes it's going to be binary, but the generating function SYS_GUID() has some endianness issues you can run into. Meanwhile, PostgreSQL kist sorts them like a string!
Similarly, if you're using .Net to generate a native GUID type and passing that through your RDBMS provider, it may arrive and be stored differently due to that endianness problem.
Expecting that every SQLite database is going to be storing UUIDs in an identical manner seems insane to me.
Is it incorrect to simply sort the alphanumeric version of UUIDs? I am unsure if UUIDs have special sorting rules like Unicode.
It's not really about that.
It's the fact that, as the Base author, you don't really know how a given application might present a 16-byte binary version of a UUID to the database. If you don't know that, how can you reverse it to display the correct string representation? There are complications with byte groups potentially being in different places, and even the potential of mixed byte ordering.
How can Base make a 16-byte binary format that display both a GUID stored from a .Net application from person A, and also a UUID from a Python application from person B, and have the string representation be accurate in both cases? I don't think you can.
Off the top of my head, I can think of three different ways to store it in a single field: Big endian binary, little endian binary, or text. (Serious questions: Are there reasonable alternatives? Are people actually storing single UUID values across multiple DB columns?) That seems pretty simple for Base to add a display option... or add some "if-then" smell tests (shortly followed by an AI/ML cloud add-on subscription!).
Sometimes a binary blob contains perfectly printable characters.
A binary blob of 7-bit-clean ASCII still fits within a binary blob.
What does this offer over sqlitebrowser? https://sqlitebrowser.org/
To my (biased) mind the advantages are:
- It fits with the system better and behaves more like other macOS apps
- I believe Base has better create/alter table support
However Base doesn’t (currently) have support for SQLCipher.
Just to expand on the “behavior” bit, there’s a truckload of little things that native AppKit apps get you that nothing else will, not even other “native” toolkits like Qt. Things like Option-clicking a disclosure triangle in a nested list expanding/collapsing all children recursively, which one comes to use frequently and misses when absent. Foreign toolkits have spotty coverage of that kind of thing if they implement any at all.
As much as visually fitting in is important, behavior is perhaps bigger. Anybody who’s working on the Mac port of a cross platform toolkit would do well to replicate those little bits.
Wow! I just discovered option-click in Finder -- unrelated to sqlite :o . Thank you! thank you!
Polish and decent UI...
I find the sqlitebrowser UI to be perfectly fine. It's not pretty, but it's a tool so who cares.
People care about the tools they are using a lot and spend a great deal of time on finding the perfect knife, the perfect editor, the perfect scissors.
> It's not pretty, but it's a tool so who cares.
People who care about their tools. If I have to stare at it all day, being pleasant on the eyes is a feature. If every time I grab my tool I think “urk, this is so ugly”, it affects my flow.
Base is nicely done, I’ve found it worthwhile over other options.
A nicer user interface. Personally I use datagrip but I want to encourage real native Mac software so will likely buy this anyway.
Unfortunately sqlite browser was too unstable for me. I purchased another app just because I can’t stand crashing apps.
In my experience, DB Browser for SQLite keeps the connection open in a way where an application that accesses the database may throw a lock error. Maybe it can be configured, but I haven't had that issue with Base.
sqlitebrowser is 100% open source, cross platform and free.
I don't think Base is at all and only supports macOS
Prettier UI?
wondering the same thing
It might just be me, as I don't use a Mac, but there is something inherently beautiful in terms of design of Mac applications. Something simple yet elegant. I highly assume that it is driven bei the OS (or the company behind it). Sometimes, I wish that Windows applications would share the same design philosophy.
I think macOS core UI is better looking, that's the reality, and it has been for a very long time.
Just a random comparison: Paint.net and Pixelmator.
Without going too far into the details of their capabilities, why does Pixelmator look so much more pleasing?
If you built Pixelmator for Windows using a Windows-native look, it would just not look as good.
That’s one of my many reasons for sticking with Mac. I know the bar is higher and I just enjoy the consistency between first party and third party applications.
Well... career-wise I'm currently moving away from being a developer, so the incentive to use a Windows Desktop isn't there any longer. I might take a look at a Mac.
I've just tried it out, looks nice!
I've been using TablePlus a lot, but there are some SQLite-specific features I'd really like to have in an app:
- Foreign keys enabled by default, so I don't have to remember to enable that in every session.
- Support for loading extensions automatically. I'm using sqlite-vec for example. Right now, browsing virtual tables for that just doesn't show that much, and executing a query just results in "no such module: vec0"
I'll keep an eye on the project. :-)
Thanks!
Auto-enabling foreign keys absolutely should be an option. I'll make a note of it.
I don't know about auto-loading extensions though. Will have a look. That might not mix well with the App Store rules and I'm reluctant to let the direct/app store versions drift apart in terms of features.
Thank you for answering. That's fair re. App Store rules. Feature flags FTW? :D
I was happy to see that FTS5 was always enabled as a compile-time option.
Today, I was searching for a nice and native SQLite browser for Mac. I went with "DB Browser" because that's what came up in my searches for "sqlite browser mac". I tried GitHub and went a bit deep in Google, but I didn't find this.
I'm glad I see this now. I guess it's time to switch.
Still can't believe this was created 15 years ago...
> without it turning into a massive IDE-style app
Is that another way of saying you don't want to make MS Access?
I still use Access quite a bit and I think it's pretty great. It's too bad that nothing like that exists for modern databases.
Sort of, yes. But mostly that I don't want the app to become the "everything to everyone" style of editor. I want it to remain tightly focused on the features that SQLite provides.
It's unlikely that I'll add a form builder or report generator to the app. I don't want it to grow until it can send email.
I kinda wish someone would take SQLite and make something like Access on top of it.
Many years ago, there was a project that tried to do just that using Tcl/Tk, which seems like a fine choice - Tcl is very simple and easy to understand even for on-programmers while its deficiencies aren't really important in this niche, and Tk is one of the easiest UI frameworks around to use. Unfortunately it petered out and I can't even remember the name anymore...
I bought your app in 2010 and use it regularly. Thanks for making it!
Thank you for the support :)
Looks great! I'm tickled that you revived a 10 year old account to post this. I am also thrilled to learn about cow magnets today :)
Thanks! While it has been quite the career change, I am absolutely up for discussing both dairy farming, software development and their overlap. That’s where Base came from!
Can somebody recommend a similar tool that works with DuckDB files?
I am launching one very soon; it's similarly built in Swift & macOS only. Here's the web version I built almost a year ago you can play with in the meantime.
not as slick as this tool but https://dbeaver.io/ handles duckdb databases as well as a myriad of others.
TablePlus perhaps.
`duckdb —-ui` is quite powerful, although edits still have to happen through written queries.
Ultorg doesn't handle schema modification but is my favorite tool for data inspection
not similar, but more like jupyter
I've always found database structure diagrams to be useful, and I like tools that synchronize editing the structure via the diagram or the SQL code.
I believe the macOS app OmniGraffle can do this, like Microsoft Visio on Windows.
I currently have a copy of Database Designer installed on an Android tablet, it's quite effective for my simple projects.
https://play.google.com/store/apps/details?id=com.klim.dbdes...
Database Designer developer says the app is "free forever", which is nice. App stores note in-app purchases; these are voluntary donations like "Buy Me a Coffee".
The app also has some brief demo videos that are linked as online help.
> I believe the macOS app OmniGraffle can do this, like Microsoft Visio on Windows.
I don't think Omnigraffle offers direct synchronization for editing database structures between its diagrams and SQL code.
I was looking for something like this a few months ago and was having trouble surfacing anything. This looks nice. My work is pretty conservative on allowing me to use something like this, but I will definitely be noting it down for my next personal project where this would be helpful.
Looks super nice. Congrats on the launch. Personally I use Harlequin, the TUI SQL tool, which works best for me. I don't really GUI for these kind of tools, but I can understand the value for some. Wishing you all the success with this new version.
Thank you, that's very kind. I've always like the idea of TUIs, but found it hard to get used to them.
Happy Base user for almost ten years now. Hands down the best SQLite editor on macOS.
Thank you for the support! It means a lot.
I first bought this app 15+ years ago (before the logo was glowing). It was an incredible piece of software then, and I’m sure this is a worthy upgrade. Absolutely a delightful product.
Thank you for offering a purchase option outside of the MAS. It sucks that Apple is trying to force everyone to identify themselves to install apps and some of us prefer not having an Apple ID.
I saw the post on DF and bought it through the App Store. Nice tool! I have about 4TB of small-ish SQLite DBs and this is great for cracking them open and looking around.
The goal of this app is to provide a comfortable native GUI for SQLite, without it turning into a massive IDE-style app.
As an aside, feature bloat is a massive problem with macOS database tools.
I'd happily pay for something basic, native, and pretty like Sequel Ace†, but all of the other options are Swiss Army knives for power users who need to tweak every little thing. I just want to do some queries.
† I'd pay for Sequel Ace, too, if it didn't crash every time I close a tab.