[HN Gopher] Directus - real-time REST and GraphQL API of any SQL...
___________________________________________________________________
Directus - real-time REST and GraphQL API of any SQL database
Author : modinfo
Score : 57 points
Date : 2025-02-23 15:51 UTC (7 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| Keyframe wrote:
| seems cool, but weird non-oss license ahead warning.
| yladiz wrote:
| It's free for individuals and organizations that make less than
| $5 million in revenue. Seems fine and not weird to me?
| speedgoose wrote:
| If a fair offer, but it's not open source compatible.
| yladiz wrote:
| Sure, but am I missing something and it says it's open
| source?
| claytongulick wrote:
| They used to be open source, and actively advertised
| themselves as such.
|
| Around two years ago they changed their license.
|
| I used to be a big champion, and used it at a Healthcare
| organization I was the CTO of.
|
| After the license change, I moved on to other solutions.
| Not because of the cost, but because I couldn't justify
| the risk of building systems on top of a non-open
| platform. I've seen too many vendor relationships sour
| over the years.
|
| Also, IIRC, the 5 million threshold isn't just for
| revenue, it includes funding (or at least it used to, not
| sure if it still does).
| include wrote:
| "I moved on to other solutions (...)", which ? kthx
| lol768 wrote:
| > I used to be a big champion, and used it at a
| Healthcare organization I was the CTO of.
|
| Same, it was a real shame to see it change in this way.
|
| I'm also not impressed with how they've gone about doing
| it; no transparency on pricing for the self-hosted
| solution, you have to be subjected to a sales call to
| even get a quote. They're clear that they use "total
| finances" for trying to determine how much to charge you,
| which has its own issues with some business models.
|
| The money also seems to be going towards lots of
| activities that have very little to do with actually ..
| building the core of the CMS. This whilst there's still
| fairly fundamental missing validation logic, even in the
| now-paid SaaS product [1]. How much of the now-$500 a
| month plan for 10 users goes towards the "Directus TV"
| (with content such as "Live scenes from our team with
| ambient music to help you get into the flow when you're
| coding") nonsense?
|
| It was enough to put me off.
|
| [1] https://github.com/directus/directus/discussions/2993
| rustc wrote:
| > From indie devs to enterprise teams, our growing
| community is building faster with an open source backend
| built from the ground-up for developers.
|
| From https://directus.io.
| luke-stanley wrote:
| It's not a normal license. It's not worth the hassle.
| rustc wrote:
| And the price is "Contact our sales team" [1] for self
| hosting for those with > $5 million revenue. Seems like not a
| good idea if you think you're ever going to reach that
| number.
|
| They also considerably increased their cloud hosted pricing
| from $25/month unlimited to $500/month for 10 user + 250k
| rows + 1 million API requests.
|
| Old pricing: https://web.archive.org/web/20220619075129/https
| ://directus....
|
| [1]: https://directus.io/pricing/self-hosted
| the_real_cher wrote:
| I think like me you saw the cloud section and thought it was a
| paid product for a minute.
| lol768 wrote:
| It used to be actual FOSS but then they went down the route of
| making it nonfree.
|
| I sort of get why, but not really a fan of how they went about
| doing it (and arbitrary "revenue-based" thresholds really don't
| work for businesses that operate on a commission/agent basis -
| you can have a massive turnover but huge cost-of-sales - it's a
| very blunt instrument). For that reason I've kept self-hosting
| the older, actual-FOSS versions and they're just sat behind
| auth. I've not looked at alternatives yet but would be
| interested in any suggestions
| jckahn wrote:
| Directus has its small-scale and short term benefits, but I can't
| recommend building a production-grade app with it. My company
| uses Directus and we all hate it and are desperately trying to
| get away from it. Avoid.
| tjwds wrote:
| Out of curiosity, what don't you like about it?
| jckahn wrote:
| Off the top of my head: It surfaces only useless GraphQL
| error messages to the front end, it's very frustrating to
| stand up custom REST endpoints, and the Flow system is
| painful to develop with and debug. Others on my team have
| different gripes with it.
| Davidiusdadi wrote:
| Since they support so many databases the integration with
| specific providers is very shallow - e.g. they do not allow
| to make use of SQL views.
|
| I personally found the typescript support disappointing in
| general but specifically around strict null handling. Their
| graphql schema was also declaring far to many fields as
| nullable which was a deal breaker for me looking for at least
| one way to generate precise typescript typings.
| golergka wrote:
| How does it measure up to Hasura?
| jckahn wrote:
| No idea, I've never used that.
| jaros wrote:
| I'm in a similar situation. At first it looked very promising
| and was benefiting us in bootstrapping the project fast but
| after a while you're being slowed down by the "extensions"
| ecosystem. If you have a bunch of complex extensions then
| building all of them can take 2 minutes (m3 pro MacBook).
| Forget instant hot reloading.
| xvinci wrote:
| Microsoft has something very similar (i did not do a full feature
| comparison, just speaking about apis and auth) which is mit
| licensed. Works also with on-prem databases despite it's name.
| https://github.com/Azure/data-api-builder
| pacifika wrote:
| If you're dealing with pure SQL of a third party system, instead
| of an API, then you're designing the API without domain
| knowledge. This is a problem in my experience.
| 4ndrewl wrote:
| This seems very similar to Hasura? What does it compete with them
| on?
| RadiozRadioz wrote:
| Had a play around with it, I'm impressed. I was very worried and
| put-off when I saw the nice-looking UI and flashy transitions,
| but this actually plays quite nicely with my database.
|
| Unfortunately it doesn't work on Firefox 115 ESR due to
| Intl.Segmenter is not a constructor
|
| It's just a blank screen. So it is infected by the JS change
| treadmill somewhat.
|
| I have a few other thoughts from my first try:
|
| When using Directus on a pre-existing DB, your foreign keys need
| to have exactly the same type as the primary keys they are
| referencing for Directus to pick up on the relationship. For
| example, if you have `customer.id INT PRIMARY KEY`, you must
| reference it with `order.customer_id INT FOREIGN KEY REFERENCES
| customer (id)`. You cannot do `order.customer_id INT NOT NULL
| FOREIGN KEY REFERENCES customer (id)` , else Directus won't
| notice.
|
| I also found it fairly slow to pick up on schema changes I made
| in the DB directly, and I didn't see an obvious way to force it
| to discover.
|
| When using Directus to manage the DB schema, I found the tables
| it created to have a generally sane and simple schema, which is
| refreshing. I liked the choices here more than nocodb.
|
| I can't comment on the REST/GraphQL generation. I'm mainly
| interested in the admin panel features.
|
| The compose file they provide here works:
| https://docs.directus.io/self-hosted/docker-guide.html
|
| Overall I think this works best if your data model is very clean.
| It would probably be painful to onboard a complex legacy DB. I
| think this is totally fine as a small-scale org data management
| tool. I was going to make one of these, but I don't need to now.
| Thanks for sharing.
| denvrede wrote:
| Does anybody know something like Directus (building REST APIs on
| top of Postgres) with the ability to hook in custom authorization
| logic? (E.g. to do FGA checks before returning data)
| bigjump wrote:
| Pretty sure you can do this with hooks / flows in Directus.
| bryantgillespie wrote:
| You can certainly add whatever logic you want / need using
| custom hooks in Directus.
|
| Here's the docs for custom hooks.
| https://directus.io/docs/guides/extensions/api-extensions/ho...
|
| But honestly, depending on the complexity of your logic you may
| not even need custom hooks. You can get really granular with
| the built-in access policies and permissions.
|
| As long as you have relationships configured with the user
| collection you can reference those in your permissions.
|
| Here's an example rule for accessing items within a `projects`
| table that hides any projects that don't belong to the current
| agency partner.
|
| {"_and":[{"partner":{"id":{"_eq":"$CURRENT_USER.agency_partner_
| id.id"}}}]}
|
| Each project a many to one relationship to agency_partners.
| Each user has a many to one relationship to agency_partners.
|
| You can even scope this down to allow / hide specific fields if
| you want.
| bryantgillespie wrote:
| Almost forgot - full disclosure - Bryant here from the
| Directus core team.
| masonwr wrote:
| I have had great luck with Directus building small/medium size
| apps. Keep up the good work!
| aerhardt wrote:
| I wouldn't use anything like this to build it a user-facing app,
| but how does it compare to something like Django admin?
| esafak wrote:
| Why would you dump SQL for REST??
| socketcluster wrote:
| I made something kind of similar https://saasufy.com/ but
| currently only tied to a single database but particularly good at
| scaling real-time updates. I'm looking for a non-tech co-founder
| who can drive to a niche use case.
|
| As an example of its capabilities I built this from scratch
| without frameworks and completely server-less (basically just a
| .html file, .css file and a couple of .js files hosted only on
| GitHub): https://www.insnare.net/app/#/dashboard/company-
| filter/tags%...
|
| That entire app is less than 4K lines of code; all frontend code.
| __jonas wrote:
| I'm using this as an admin UI on top of an existing database, it
| works pretty well for that, it's nice that it doesn't dictate
| your db schema. I don't really see the point of their "flows",
| and I'm not sure how the auto-generated APIs hold up under load,
| but I'd recommend it for content management if you are ok with
| the license (it's not FOSS).
___________________________________________________________________
(page generated 2025-02-23 23:00 UTC)