Show HN: NocoDB – Open-Source Airtable Alternative
github.com
github.com
We are really excited to open source NocoDB today.
NocoDB is an open source Airtable alternative.
Github : https://github.com/nocodb/nocodb
NocoDB works by connecting to any relational database and transforming them into a smart spreadsheet interface!
NocoDB currently works with MySQL, PostgreSQL, Microsoft SQL Server, SQLite, Amazon Aurora & MariaDB databases.
This allows you to build no-code business solutions collaboratively with teams.
Getting started is simple :
docker run -p 8080:8080 nocodb/nocodb
or
npx create-nocodb-app
Also NocoDB's app store allows you to build business workflows on views with combination of Slack, Microsoft Teams, Discord, Twilio, Whatsapp, Email & any 3rd party APIs too. Plus NocoDB provides programmatic access to APIs so that you can build integrations with Zapier / Integromat and custom applications too.For storage you can connect to S3, Mini, GCS, Azure, DigitalOcean spaces & any S3 compatible API
NocoDB gives programmatic access to REST & GraphQL APIs. And with our API tokens it can be easily integrated with Zapier / Integromat.
- - - - - -
Also please join our community at :
- Github : https://github.com/nocodb/nocodb
- Discord : https://discord.gg/5RgZmkW
- Twitter : https://twitter.com/nocodb
Would love to hear usecases & feedback.
Thank you,
Team NocoDB
edit : made the comment short :)
Getting started is really simple - please check below.
docker run -p 8080:8080 nocodb/nocodb
or
npx create-nocodb-app1. What is your monetization strategy? 2. Why AGPL? 3. Is there a tutorial or documentation on creating additional integrations?
Monetization we'll figure it out whilst interacting with our community. AGPL : we don't want to be sorry with likes of AWS etc around :) This wouldn't stop you from using it freely or commercially.
We would be rolling out the tutorial for adding integrations.
Thanks
I haven't built a webapp in several years, and was just trying to find a way to offer access to a DB for a non-technical person. After seeing my options for UI were (still!) basically Access and go-build-something, was resigned to losing my weekend to coming back up to speed with Django, but it looks like this should be fine.
Yes, you can say we are advanced version of MS Access for all databases that can talk to even 3rd party apps.
This is so important and the opening up of code / databases to non-technical people will create so much value.
Maybe we can work together on it! (I guess, open source means we will be)
E.g. I tried a simple example with A country table containing an iso-code and a name, and a company table containing a name and a country. Somehow I can not use the iso code in the company table, I am forced to use the auto-incrementing primary key. I am not able to set iso-code column as unique which would solve my issue.
---------------------------------
The app also has UI problems. E.g. when adding a new row, one the last field edited seems to be still in editing mode since the value is left-bound and not centered like the other values. Only after entering another field the value seems to be recognized as changed and I can save the data.
Clicking on "Swagger apis dock" results in following error message "Cannot GET /nc/testproject_rest_api_HZOx/v1/graphql".
---------------------------------
Having added a few images via attachment column, I noticed that I can access those from a incognito window where I am definitely not logged in.
Steps to reproduce:
1. connect to database container -> docker-compose exec --user postgres xcdb psql
2. connect to database -> \c xcdb
3. list tables -> \d
4. select data from the table with attachments (in my case the company table) -> select * from xa1__company;
5. copy one of the urls and paste it in an incognito tab
---------------------------------
Another issue that I see is that it relies a lot on external libraries, of which this one has been blocked by my ad-blocker --> https://static.hotjar.com/c/hotjar-2297736.js?sv=6
Hotjar seems to be a tool tracking the user interactions with the product -> https://www.hotjar.com/
This is where I stopped evaluating your product LOL
---------------------------------
Clicking on Calendar, Kanban, and Form results in a "Coming soon" message. Which is curious since, your website demonstrates it already.
---------------------------------
Those rules saying delete cascade seem to be nonsense. I was able to delete rows in both tables (country, company) without any cascading happening which would result in an inconsistent state. --> Foreign keys seem only to exist within your applications metamodel and they don't seem to be respected accordingly.
---------------------------------
My final verdict: You have a lot of work ahead of you if you want to bring this into a production ready state. Until then I recommend to others not using it with your production databases, and because of coming with the hotjar user action tracking tool not use and privacy related data with it.
With regards to Swagger thing, we allow to create multiple projects within same schema too! And this happens in NC_DB only - I imagine we 've an issue with Swagger related model creation. This should be straight forward.
At row edit part - we will work on your feedback.
This sections in particular are quite concerning to me:
window.hjSiteSettings = window.hjSiteSettings || {
site_id: 2297736,
r: 1.0,
rec_value: 0.01,
state_change_listen_mode: "manual",
record: true,
continuous_capture_enabled: false,
recording_capture_keystrokes: true,
anonymize_digits: true,
anonymize_emails: true,
suppress_all: false,
suppress_text: false,
suppress_location: false,
user_attributes_enabled: false,
legal_name: null,
privacy_policy_url: null,
deferred_page_contents: [
// all the other code
window.hjBootstrap(
"https://script.hotjar.com/",
"modules.5a9f57d95ecbb1bf1965.js",
"2297736"
),
(window.hjLazyModules = window.hjLazyModules || {
FORM_SELECTOR: { js: "form-selector.392b5f4f766aeb35682b.js" },
SURVEY_V2: { js: "survey-v2.7218c468a82710c2c26b.js" },
SURVEY_BOOTSTRAPPER: {
js: "survey-bootstrapper.f41ed221e5747a5a4a7b.js",
},
SURVEY_ISOLATED: { js: "survey-isolated.8af10abbd1a5f80490de.js" },
HEATMAP_SCREENSHOTTER: {
js: "heatmap-screenshotter.e571353a90a331625bf1.js",
},
HEATMAP_VIEWER: { js: "heatmap-viewer.2fb5d2a22502dfdfdac6.js" },
SURVEY_INVITATION: { js: "survey-invitation.1ae4ed40ba57f9c20afc.js" },
NOTIFICATION: { js: "notification.5e4044e77b0558775cb4.js" },
INCOMING_FEEDBACK: { js: "incoming-feedback.2856389193450b0481d4.js" },
PREACT_INCOMING_FEEDBACK: {
js: "preact-incoming-feedback.80672cee08360a8c286c.js",
},
SENTRY: { js: "sentry.f1958c523a41d4a73968.js" },
});
It seems to load additional js files like --> https://script.hotjar.com/heatmap-screenshotter.e571353a90a3...--------------------
Hotjar website has following thing to say:
> Hotjar should capture the majority of user sessions in Heatmaps and Recordings. We cannot guarantee that a specific user will be tracked.
see: https://help.hotjar.com/hc/en-us/articles/115011624047-Does-...--------------------
Can't say if it would have sent data to your hotjar account or not since it was blocked in my browser, but to me this all seems like an involuntary data collection. But again, I am no Hotjar expert. Maybe someone else can chip in here.
You should apply to YCombinator S21 batch! (feel free to use my reference: syrusakbary if you would like!)
So my question is really regarding this launch, rather than NocoDB itself as all pertinent questions regarding it seems to have been asked.
I see you have got some feedback on your website regarding NocoDB after production deployment by some companies, How long you folks have been developing NocoDB? Were you using your personal funds for development?
All the best, Hope NoCoDB turns out to be another successful dual-licensed startup.
FYI, I think you are using the wrong logo on Vasyl Rakivnenko testimonial. You using the Spanish Servired (a bank network) logo instead of the Polish Servired (Road Transportation).
I think this is the correct one: https://www.linkedin.com/company/servired-sp-z-o-o-/
Both ways show error 9009, failed at the sqlite3@5.0.0 install script.
1. Are all the views mobile friendly,
2. Any plan for a map view,
3. Multiple views in a page? (aka dashboard)
4. How does AGPL affect getting payed to create a solution based on this? I'm not talking about offering it as a service as is as happens with elastic, redis and the cloud providers.
5. How do we create plugins?
1. #158
2. #159
3. #160
4. AGPL doesn't stop you getting payed for creating your own solution based out of this. The preferred way to run it is as docker. And if there are changes in NocoDB code, it needs to be shared back with community. Otherwise, it is absolutely fine to use it.
5. Plugin/apps is at the heart of NocoDB. Whilst backend part of plugin is modularised, frontend has to be done. And we are using NuxtJs which happened to be an excellent choice for this. The documentation will follow soon.
GCP Marketplace does not allow anything to be deployed that is under AGPL.
"This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it." https://www.gnu.org/licenses/agpl-3.0.en.html
Was aware of DabbleDB : https://www.youtube.com/watch?v=6wZmYMWKLkY
"I was going to use this hosted, no-code spreadsheet/database platform, but then I realized it's closed source!" is not something anyone who ever would have paid for Airtable has ever said.
I’ve used a lot of pluggable admin interfaces for opening up tables to interrogation and manipulation by non tech people, and this seems better than those, and airtable was usually never on the table.
Also, while the data isn't critical for me, a self-hosted solution ensures the data is private.
According to their support site, Airtable doesn’t even support on-prem. [0]
[0]: https://support.airtable.com/hc/en-us/articles/202576389-Can...
I was building a Jamstack site for my dad[0] using Airtable-as-a-backend, and we almost ran out for rows for his Soviet camera collection. We had to work the model around this limitation. It's not the kind of thing that made sense to pay for monthly even if the plans were cheap, and they're not.
So losing all my production data / getting it hacked and ransomed / having unacceptable downtime and instability are much worse than simply implementing AirTable features bespoke using our existing systems.
Yes
> "I was going to use this hosted, no-code spreadsheet/database platform, but then I realized it's closed source!" is not something anyone who ever would have paid for Airtable has ever said.
No, but “I would like, and pay for, something like that no-code database solution, but Airtable doesn’t meet our data compliance requirements and I can’t host it on ones I control to resolve that” its something I've heard.
Nothing wrong with building open-source versions of stuff, but I don't see open-source being a viable business model in this case.
Is there any chance to build in SQL (specifically, Postgres) commands similar to how Supabase does into the UI? (I should also mention, this looks perhaps even better than Supabase and easier to get up and running on your own system!). The built in REST and GraphQL API points are beautiful.
Looking forward to using this!
>> Is there any chance to build in SQL commands.
We've full fledged SQL Editor support in the product. Also support for SQL views, procedures etc. It is not shown in UI as there is lot to take in. So it will be in shortly :)
NocoDB can be run as a single node.js file which has just SIX lines of code in it.
So entire NocoDB stack can be run a repl.it / glitch too! :) - This makes it insanely powerful & ubiquitous.
I've just tried it with an SQLite database. It doesn't seem to support `BLOB` columns (that's reasonable). I would have liked to be able to display images in BLOB columns as virtual attachments or show a download link.
Edit: It actually does!
https://github.com/nocodb/nocodb/tree/master/packages/nc-plu...
But there doesn't seem to be any documentation for it yet.
Store images in BLOBs - we aren't against it. But we ran short of time to make that work for all databases.
For file storage : it used local filesystem if no storage app is installed.
You can connect to wide variety of storage services : S3, Minio, BackBlaze, GCS, Azure to name a few. I believe Azure storage isn't tested as we didn't have credits with them :)
So, would be neat to see that added.
Almost certainly not your primary use case, but probably a quick way to gain market penetration if you or someone in the community built an integration for that purpose.
Any ideas about if it would be possible to connect it and if so, how?
- Data collection: Generally feels nasty these days, especially on something self-hosted. The opt-in-by-default newsletter checkbox might even be illegal in Europe. Don't know what else it might be calling home about without checking the source.
- Deceptive data collection: The HotJar survey popping up starts making you think maybe it needs to know where you host images so that it can handle image uploads... but no, it just wants to collect data and dial home
- Docs say that the docker instance starts on port 8080 - it isn't, it's on 5000
- Email and password validation: it's a little thing, but that should be at least configurable. Valid emails can contain "+" character.
- Couldn't work out how to connect from one docker instance to a second docker instance mysql database. Might need some kind of docker-compose setup though, I didn't look that long
- Couldn't create a new database either. It said it created, but then wouldn't let me add a table, just errored. No idea why on that one.
And that's kinda where I gave up.
I love the audit table, that's a nice touch.
I like the landing page examples as well. Trello/calendar/discord... nice.
This is society’s collective goal, as exemplified by patents. After ~15 years of legal monopoly, they’re public & anyone can use them. Copyrights take longer, but eventually do the same.
Companies plan for this by continuing to introduce incremental product changes, extending the monopoly period in small ways. Take a look at Wordpress, Lego, and Disney who deal with this in different ways.
We transform any existing databases MySQL, Postgres, SQL Server & SQLite databases into a spreadsheet. This is a _massive_ difference to begin with. And the ability to invite team to collaborate and build business workflow automations with Slack, Twilio is available for everybody. Since the launch today, I have already have close to 25+ plugin requests which sounds reasonable for NocoDB to have! We believe for a horizontal product like NocoDB - developing every app, connector and plugins is just beyond the ability of single team in open source. It is community driven approach that eases this possibility.
I believe integration with n8n is possible as we do expose APIs.
NocoDB can be run as a single node.js file and it is just SIX lines of code.
https://github.com/nocodb/nocodb-seed/blob/main/index.js
Just mount nocodb into your express.js and it's done.
Would this work for a blitzjs/nextjs app?
thx! really cool stuff
Yes, absolutely.
We worked really hard to make it minimal :)
Please give it a quick try with below
npx create-nocodb-appdid work with yarn tho yarn create nocodb-app
will look it up
Was this on windows ? You might have to start command prompt with administrator privileges. Some of our users ran into these.
And our tests are dockerised so that it could be run locally with minimal setup and on CI too.
Please click on 'Docker' then 'Test MySQL REST APIs' & 'Test GraphQL APIs'.
Below is the command to run the test for REST APIs
https://github.com/nocodb/nocodb/blob/master/.github/workflo...
git clone https://github.com/nocodb/nocodb
and you can run the same command.
We open sourced two API solutions before NocoDB : - A no-code REST APIs generator for any MySQL DB. ~200,000 Docker pulls. This was a hobby project & had no GUI. - A low-code REST-GraphQL APIs generator for any database with GUI. Used by 100s of companies. Including fortune 500s & publicly trading companies.
The thing that surprised us the most was that even non-developers started using our API products & rooting for us. Whilst everybody loved instant API access to databases, it was slow-and-painful for them to build UI and collaborate with their teams. This made us to radically recombine the power of our 2 API products then transform them into something better.
Open source has a lot of overhead, and if you offer “enterprise” versions, others will compete with you, or worse, Amazon may offer your service for free as a bundle.
I’m interested in hearing your plan.
We've audit mechanism to track every single action from all our users. And the access control is really fine grained till column level.
But we havent tested it recently. It installs docker, mysql, letsencrypt etc and help you set. You can try it.
Plus they'll likely have much better uptime/bandwidth than your home server will.
Would it be possible to use planetscale as db?
Thank you it means so much.
Yes, in our earlier version we could connect to Planetscale and create tables (this was at inception stage). With recent Planetscale release DDL are no longer supported and branching is the way. We would love to support if anything changes.
Does a spreadsheet like thing help for columnar database ? Please let us know usecases.
Most of spreadsheet part is self explaining : here are all our demos https://nocodb.com/demos
S3 and Google Auth for newbies can be found here : https://github.com/nocodb/nocodb/tree/master/markdown/plugin...
Having said that, we will be working on the documentation series in coming week.
Please, reconsider and good luck! :)
EDIT: I mean like this:
=col_name[row_number]*col_name2[row_number2] all within a completely different cell
This type of software distributed this way is one of the ideal use cases for the AGPL, IMO.
Sorry could you help elaborate on this.
You want to access home assistant data which is in sqlite or something.
Asking since I've considered AGPL for my own projects and wanted to monetize via making SAML/SSO "premium" and found that I could not do this easily without CLA