Ask HN: What are your favorite low-coding apps / tools as a developer?
Since low-coding is super trendy these days, I was wondering if there are actually useful apps not only for non-devs but also for lazy-devs?
I tried couple of no-code apps, but found them inflexible –not really giving you the opportunity to dive-in and customize.
290 comments
[ 3.0 ms ] story [ 268 ms ] threadIt's surprising powerful and the built in sprite editor can do some pretty neat stuff.
Then again, that’s not really low code.
It's how I started coding, as a teenage visual artist, and now I'm a fullstack dev with a fondness for FP and SmallTalk. The gateway drug effect is real.
https://tumult.com/hype/
https://wiki.nikitavoloboev.xyz/macos/macos-apps/keyboard-ma...
https://azure.microsoft.com/en-us/services/logic-apps/
https://azure.microsoft.com/en-us/blog/understanding-serverl...
I used it plus a Google sheet as the first version of a UI for the last company I worked at. Instead of waiting for our front-end folks to finish up the UI, I just pointed a logic app at it, ran some basic logic on it, and brought it into the system whenever it was changed, and imported the data into the main data stores.
But Mule's skyrocketing costs are forcing our hand. If we don't finish this transfer project within the year, we'll be charged $100,000 for another year of Mule -- an absolutely unfeasible cost for our small/medium sized nonprofit. Our preliminary cost analysis for Azure showed it would be a fairly tiny fraction of that. So off we go.
I bring this up because we have settled on mostly Logic Apps with a few Azure Functions here and there as necessary, to fill in for missing connectors. So we are in a pretty good position to directly compare the two platforms against each other.
So far, my personal judgment is that Mule offers a lot more whizbang, but we weren't using nearly enough of it to justify the bananas cost, and LAs are turning out to be just fine. Mule development work happens within something called Anypoint Studio, which is (I believe) built on Eclipse. Most of the work you do tends to be done in the visual editor, just like in LAs, but you can drop down into the XML as necessary. It provides a fairly good debugger, and has one benefit of being able to be tested locally. I could fire up a flow in debug mode, pop over to an ActiveMQ admin panel on my machine, fire off a message, and watch it hit breakpoints. Mule's also able to provide a more consistent ability to validate JSON against schemas; LAs appear to only really be able to do this at the trigger point. That's relatively minor, though.
Mule's visual editor has no problem with large (sometimes too large) flows, with multiple branching paths, and then sub-branching on top of that. The visual elements themselves have a certain polish to them as well, and don't take up too much space -- they're represented as square instead of wide rectangles.
In comparison, the Logic Apps design view feels rather clunky. It's clearly been designed to encourage small concise flows rather than large ones. We've reimplemented complex flows that felt fairly manageable in Mule, but feel rather unwieldy in LAs despite being essentially 1-to-1 translations.
But LAs do have some honest advantages besides price. A big one is being able to easily drop in a custom Azure Function as a processor. This provides some easy reusability for more complex tasks; we had to write a Function to create JWTs, but now can reuse that in every LA where we need it. Additionally, having everything there in the Azure portal is valuable. There is essentially no gap between working on a flow, and releasing it. Azure provides the run history for your app right in the panel, which essentially acts as a set of visual logs for past runs.
We are kind of struggling with figuring out how to integrate LAs with our source control, but my guess is we'll figure that out with enough experience. All said, I think MuleSoft offers a ton of advantages that very large enterprises would find highly valuable; there's the whole Anypoint Platform that I haven't even discussed here - API managers, access control, etc. But everything that our smallish organization has needed, we've found alternatives in LAs or in the wider Azure ecosystem.
Can't you use ARM templates or Azure CLI for deploying them?
- https://platform.deloitte.com.au/articles/preparing-azure-lo...
- https://www.feval.ca/posts/logicapp-ci/
- https://blog.thenetw.org/2019/08/20/logic-app-in-a-multi-ten...
- https://www.bruttin.com/2017/06/13/deploy-logic-app-with-arm...
It was a real hassle to get everything somewhat nicely through CI/CD (and it's still not at the level where I'd like it), but getting them in source control and having them deployed through an Azure DevOps' release pipeline has been immensely valuable.
Let me know if you have any more questions about that as I'm happy to help you get going!
Compared to this writing extensions for vscode, for example, is much more convoluted. You wouldn't create a new vscode extension for a 1 hour task, while with emacs it's trivial to write some small code which can help you with your current task. I often do.
So basically, your develop the solution bottom up. You can pretty much write an elisp function anywhere in emacs (in the very file you are editing, in the already open scratch buffer, in an elisp popup shell) and test the function incrementally. Also, the extensive in-built help system lets you very quickly lookup functions that you need.
Once you have something that solves your current problem, you can save it, if you want. Over time your custom collection of functions improves and then you decide if something there needs to be generalized or made into a package.
Obviously this needs some basic elisp knowledge and then just practice over time.
It is low code AND capable of full serverside JS for handling interesting cases. And it has hundreds of plugins for handling APIs of all sorts.
It’s a drag and drop form builder that saves as JSON schema. You can export and use in your own app, or submit to our backend and send Webhooks to an automation service like zapier.
I use it in my client projects since I frequently need to customize form fields, then I can reuse them across clients.
https://hasura.io/
I've been able to build in a weekend no-code what would've taken my team weeks or months to build by hand, even with something as productive as Rails. It automates the boring stuff and you just have to write single endpoints for custom business logic, like "send a welcome email on sign-up" or "process a payment".
It has a database viewer, but it's not the core of the product, so I use Forest Admin to autogenerate an Admin Dashboard that non-technical team members can use:
https://www.forestadmin.com/
With these two, you can point-and-click make 80% of a SaaS product in almost no time.
I wrote a tutorial on how to integrate Hasura + Forest Admin, for anyone interested:
http://hasura-forest-admin.surge.sh
For interacting with Hasura from a client, you can autogenerate fully-typed & documented query components in your framework of choice using GraphQL Code Generator:
https://graphql-code-generator.com/
Then I usually throw Metabase in there as a self-hosted Business Intelligence platform for non-technical people to use as well, and PostHog for analytics:
https://www.metabase.com/
https://posthog.com/
All of these all Docker Containers, so you can have them running locally or deployed in minutes.
This stack is absurdly powerful and productive.
Metabase was a game changer in my last company, it was so nice to just be able to drop a 50+ line custom SQL query in there with parameters and let users pull what they want. We'd also setup queries to be loaded via Google Sheets cron jobs. That enabled live dashboards most any spreadsheet user could create (pivot, lookups, transforms, etc.).
I have a starter kit that includes a ton of stuff including pre-made JWT auth configured as Hasura Actions, a standard monolith-style Node REST API skeleton, and OpenFaaS serverless handler examples in every major language (Node, Python, Ruby, Java, Go, C#, PHP) you can find here:
https://github.com/GavinRay97/hasura-ultimate-starter
And really comprehensive docs about setup and architecture + how everything works here:
http://hasura-ultimate-starter.surge.sh/#/
That sounds kinda nifty, but does it then allow you to write custom code to add business logic? Glancing through the documentation, that part wasn't clear to me.
While it CAN expose an existing Postgres database, where it really shines (in my opinion) is when you're starting a brand new product. Because you can create your whole database and all the relationships, foreign-keys, triggers, permissions, etc through the web console UI incredibly rapidly.
And yeah, it takes care of all CRUD and provides an aggregation/statistics API (sum, median, standard deviation, count, mean, variance, etc), and it leaves the pieces of custom business logic up to you to write. It's entirely agnostic to what you use to write these, so long as they expose an HTTP endpoint.
If only Hasura supported some king of Prolog / Datalog instead of their ad-hoc JSON language, then you'd be able to write nearly any possible use cases. Until then, I'll stick to building and maintaining my own backends... manually :(
One of the biggest pain points I found was modeling Organization/Team/Multi-Tenant based permissions.
Generally, the advice is to use a session variable like X-Hasura-Organization-Id to filter in permissions, but recently through a Discord conversation a means to do this without a session variable was found out and I took some time to publish it as a Gist:
https://gist.github.com/GavinRay97/d7b8805078a47e00001e58eb8...
I would be interested in hearing what problems you had and seeing if there isn't some way around it, just for my own curiosity.
Can you also explain how locked in you are, if you decide you want to migrate away from Hasura, or in general want more flexibility that the use-case of Hasura + ForestryAdmin?
About lock-in... it's open source software, so you're as locked in as you'd be with, say, Rails or Django. It doesn't do anything special to PostgreSQL so you can always rewrite the API later from scratch, or build something else on top of its GraphQL API.
https://github.com/hasura/graphql-engine/
What benefits would be using the DB over a GraphQL API?
Also, Hasura has some bells and whistles that would be a bit of a PITA to implement using traditional MVC frameworks, like per-column authorization, and, of course, the GraphQL to SQL translator.
> What benefits would be using the DB over a GraphQL API?
And I'd say that the biggest advantage of GraphQL is allowing customized payloads.
Say you need a list of users ids + emails in one page, and a list with ids + names + emails in other. In REST you either need to waste some bytes, have two endpoints, or use some conditional to show/hide the field.
With GraphQL you just have to ask for the fields you want.
The same applies to joins: you either add extra endpoints, extra logic, or the user has to make multiple requests. With GraphQL you can have custom joins.
Btw, if you still don't think that GraphQL is an advantage to you, I recommend checking its cousin-project PostgREST :)
Yes! Like gavinray said, you can create HTTP services in any language of your choice. Hasura can then be configured to call HTTP endpoints when something changes in the DB. And your services can call Hasura anytime of course.
Remember that Hasura handles all the authorization for you, so there's no need to "proxy" requests made to it.
You end up writing very little compared to traditional frameworks.
Combine Hasura (automatic GraphQL on top of PostgreSQL) with React Admin (low code CRUD apps similar to Forest) and you can build an entire back office admin suite or form app (API endpoints and admin front end) in a matter of hours.
This adaptor connects react-admin with Hasura: https://github.com/Steams/ra-data-hasura-graphql
Here's a reference application I put together: https://github.com/cpursley/react-admin-low-code
And we're taking a step further and using Elixir to listen to Postgres table changes for an "Event" style architecture: https://medium.com/hackernoon/get-notified-of-user-signups-a...
For anyone looking for a self-hosted solution that can be more easily whitelabeled, highly recommend cpursley's work.
You should pop by the server chat more often =D
Thanks to gavinray also for the help with this!
What we're doing in our production version of this is using Postgres and Hasura for auth following this approach in order to reduce external dependencies: https://github.com/sander-io/hasura-jwt-auth
It's really amazing how far you can get with just Postgres. Writing business logic with code in application middleware always felt hacky to me when we have these powerful and performant relation databases.
In that case, you'd just build the front-end as usual, but use Hasura to bang out your whole backend and then autogenerate the type-safe query components with graphql-code-generator.
When I do products myself, I typically pick a pre-made template/UI kit (Vue is my preference) and then just modify it from there to suit my needs.
TailwindUI also looks really nice and I've seen several people build beautiful looking UI's with it for smaller SaaS products in a few days (though given that they're familiar with TailwindCSS and have a knack for this type of thing already):
https://tailwindui.com/
https://tailwindcss.com/
Hasura also has a lot of community examples for different front-ends. Ranging from web apps in React/Vue/Angular/Elm to mobile clients in Flutter or Android/iOS:
https://hasura.io/learn/
They have several dozen example apps built in all sorts of tech here:
https://github.com/hasura/graphql-engine/blob/master/communi...
https://github.com/GavinRay97/hasura-ultimate-starter/tree/m...
The sign-up Action bcrypt hashes the password and saves it by sending a mutation to Hasura, and the login Action queries for the user by their email and tries to bcrypt compare their password against the stored one and then return a spec-compliant token if they match.
It's fairly simple to implement your own Auth in Hasura, you just need to return a signed JWT that matches the spec:
https://hasura.io/docs/1.0/graphql/manual/auth/authenticatio...
Firebase does provide unlimited password logins for free, which mitigated my personal concerns about Auth0. The advantages of a SaaS auth provider compared to a roll-your-own have been documented elsewhere, and I personally found them compelling.
What are the reasons you 'don't like' something like Auth0?
I don't think I'd be allowed to entrust users passwords to an external entity, despite the fact that they would probably do a much better job than I would at securing them. Also despite the fact that we trust every other external provider to store passwords...
I've been looking into keycloak.
Firebase does allow you to integrate with other OAuth providers (e.g. Google/Facebook/Linkedin etc.), so you could perform some kind of validation on the google account, ensuring it comes from your company's mail domain? Just a thought.
Set up of these security schemes is not easy (took me a shamefully long time to get Firebase working with React-Admin and Hasura). I'd personally try and get a SaaS provider to work within your company's constraints before trying to roll your own.
I'm always scared to call when I hear this.
"The pricing depends on your team/org: what features you’re using Hasura and the uptime/response SLA that you need. If you have something running with Hasura already feel free to setup a chat with the team to get a sense of the pricing. However we will have something launching for self-serve style pricing soon for a managed HA / auto-scalable Hasura with Pro features."
I believe it's priced on a per-feature basis, so they're likely to work with you depending on what your particular needs are.
tanmaig@hasura.io
I just use Discord because it's immediate feedback.
more info: https://sneak.berlin/20200220/discord-is-not-an-acceptable-c...
The number of people that consider Discord part of their threat model or an actual privacy risk is incredibly tiny compared to the number of users that get inconvenience by mass bot raids & people bypassing IP bans.
I help manage a medium-sized Discord guild and we were randomly targeted by a bot raid whereby ~100 bots joined in the span of 1 minute and proceeding to spam various channels and the DMs of our users. Enabling Discord's requirement for a verified phone number stopped the raid in its tracks and allowed us to clean up without further issue.
In the same way, Discord's automatic content scanning is designed to protect the large percentage of minors on the platform & proactively deal with potentially exploitative material + guilds (per https://blog.discordapp.com/discord-transparency-report-apri...)
Removing these features & restrictions in order to appease your extreme edge-case privacy views does not help the average Discord user in the slightest.
It seems that you believe that you benefit from Discord's gatekeeping. I'm glad it seems to be working out for you. If it wasn't, however, how would you know?
You don't agree with Discord's practices and lack of privacy, something which, by the way, I agree with you, and as such, decide not to use it. They are not discriminating against you, you're the one deciding not to use their service. To me, it sounds the same as if you don't like McDonalds because it's unhealthy, then accuse them of discriminating against you because they won't serve you some lean chicken salad.
They are excluding all users who can’t get Discord accounts, such as those who can’t agree to the Discord TOS, for example. Free software projects and other public benefit groups should not be discriminatory.
They’re also banning political cartoons within their group’s communications, by implicit inclusion of the Discord TOS which bans several common, normal, reasonable types of communication.
I’m a paying member of a local nonprofit organization; they use Discord exclusively to communicate. I am excluded from all of the discussions as a result of my not being able to safely get a Discord account. That’s discrimination whether you like to acknowledge it or not.
The presence or absence of threats against one’s person does not legitimize or delegitimize their insistence upon personal privacy.
The difference, in this case is that you're not being forced out of participating in conversations because you're, let's say, black. Instead, you, on your own, are opting out of communication channels because of your own beliefs.
We’re way down in the weeds here. If you’d like to continue this discussion further, please just email me.
My first account I was able to get was via a number I rented on dtmf.io. The account was suspended (across all "servers" in Discord) in a few minutes when I linked a few of my IRL friends in a Discord chat to that Discord article on my own website. I've not been able to sign up again since, despite having blown something like 40EUR on numbers from different countries/providers trying to get a new one.
Even when it works, it's at least 10 minutes of solving CAPTCHAs to log in, each and every time, and sometimes the Google CAPTCHA hits some other exit node rate limit and just tells you to fuck off entirely, making login impossible even with a working account.
The idea is for most users to be on the free / open tier and then monetize off of enterprise users with specific demands and less cash sensitivity.
When we were looking to extend our spreadsheet functions that read/write to/from databases, we considered integrating Hasura as a backend.
Commendable work by the Hasura team, I think really worth checking out what they've done.
-
[1] Caveat: founder of MintData (https://mintdata.com) here, where we read/write from databases both directly via our flow editor and via spreadsheet functions which wrap things like Hasura.
Graphile (https://www.graphile.org/) seems to be very similar, although I discovered it just a week ago (also on HN), and haven't had a chance to explore it yet.
Have you tried it / do you have comparison points? I only poked around in Hasura a bit before deciding it wasn't worth the switching cost atm, but the out of the box upserts are compelling to me.
Getting as far as you can modelling a new problem domain with just models.py and the Django admin is pretty fun.
FWIW I just reproduced an API that took me 3 days to build (while learning Django rest framework) in about 5 minutes.
My time would have been much better spend modeling the domain. As a happy benefit apibakery taught me a bit about DRF permissions I didn't know.
It feels like we're finally getting back to the 90's level RAD tools like NeXT enterprise object framework, and Delphi.
Hasura connects to a read replicas and manages connection pooling across the database cluster.
Hasura itself is stateless so it doesn't do the database replication.
Can you share some samples for these things if available. I will be glad to look at it.
1. During the lifetime of a websocket connection, bytes should be routed to the same Hasura instance. This most service routers / load balancers should take care of automatically.
2. Subsequent connections from different clients to Hasura need not go to the same instance! This makes horizontal scaling painless.
(Is this what you meant?)
When I saw 1200/5000 rows per "base" I was searching for the "k" (x1000) but they seem to be serious.
I don't see a real advantage for example to g suite(maybe only that it is not google) :)?
But maybe I just don't see the point...thx for clarification
You could do this with a "out-of-the-box" CRUD app in RoR or Django, but Airtable gives a ton of more flexibility and quick iteration if you data model is changing or adapting.
It does have plenty of drawbacks so I wouldn't use it for every project.
Add syntax highlighting and GTM
Also real deployment previews and sharing between sites
Switched to Netlify, much happier
https://github.com/daptin/daptin
My overall goal in Daptin (the name comes from adaptable) is to build something reliable which can run for years without needing any maintenance.
As for the features, I will try to list some here:
- YAML/JSON based data declaration
- CRUD API implementing https://jsonapi.org/
- GraphQL API
- Definable actions, for custom APIs
- Integration to any 3rd party API based on Swagger/OpenAPI spec
- Runs on mysql/postgres/sqlite
For more advance features:
- SMTP server, IMAP server
- Self generated certificates/ Acme TLS generation support
- Encrypted columns
- Asset columns (file/image/binary store)
- Asset columns backed by cloud storage (like ftp/disk/gdrive/s3/bb and many)
- Native OAuth/3rd party login support
- Exposing cloud store folders as static websites
On the no-code side I really like http://carrd.co
a) thank you for carrd.co, it's something I've been looking for
b) I don't exactly understand what is the use-case for divjoy. It looks like it helps me ship a landing page really quickly? Why do you need React integrated with this?
Perhaps there's a use case for React devs that I am missing?
I can tell you that what I want is carrd.co, but without vendor lock-in. I want carrd right now to launch a beautiful email-collection landing page and do market validation. However, if the market test is successful and I want to transform the homepage into a "sign up now", I don't feel like I can do that with carrd and I would need to hire someone to re-create a landing page with a similar look and feel. So I'd like a "carrd" without the vendor lockin.
[edit: More on carrd, according to their TOS they get unlimited rights to all your content?!?!]
That said, this is a very early version. I'm launching database integration next week (data fetching logic/caching, full REST API, etc) and then Stripe integration shortly after that. So in not too long, you'll be able to export a fully functioning SaaS app.
So I'd like a "carrd" without the vendor lockin
Long-term this is exactly what I'm going for. Build something simple inside the Divjoy editor, host it with me, export your codebase at any time for full flexibility. You never need to worry about lockin.
So-called "low code" tools involve code, you just write it by rat-wrestling instead of typing. And good luck using those tools effectively for problems their designers didn't anticipate.
With Lisp, you write less code and it's easier and more fun to write.
I use this to automate a lot of tasks. E.g. automatically clip supermarket coupons every week, check for tax loss harvesting opportunities in my portfolio, etc.
It's really powerful
No, it has a REST API; you need Apps Script if you want automation within Sheets, but you can interact with Sheets without it.
https://app.refinery.io/import?q=9lvohdvqd50g
This project will:
- Run every hour (via timer)
- Grab URLs from a Google Sheet
- Go screenshot all of the URLs
- Write each screenshot to an S3 bucket
- Email you at the end after the jobs finish
There is more I could do with this (like trigger an email if something fails, etc). But at least does what you describe above in a (hopefully) succinct fashion!
Also, shill alert as I'm an author for this service (but this was a fun project to build over a few minutes, so thank you).
For building websites, Webflow is powerful (and allows for fine-tuning).
Among utilities, Parabola (a kind of no-code extract, transform, load tool) is very neat.
For getting data/creating APIs without having to code I've built Simplescraper - https://simplescraper.io.
Currently working on an integration for Airtable that allows you to create a dynamic CMS using any data source, without code. Hopefully useful to non-dev and lazy-dev alike.
If you're not on Twitter, we hope to submit the integration by the end of this month so check us out then.
https://community.hitachivantara.com/s/article/data-integrat...
https://devscore.com https://github.com/devscoreInc https://www.youtube.com/channel/UClgE-uFdQIJ2GWhaNjz6WRw/vid...