[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)