Creating Multi-Company SAAS App

Knack is great for creating a single-company multi-user app like a CRM with different user roles, but what about creating a true multi-company SAAS app that could be offered to many different companies? Any tips for setting this up so each company can only see their data, their clients, and their users such as project managers?

1 Like

You could do this by adding a company object and connecting users to it.
Challenges include how you’d manage the different “flavours” for each companies workflow and subtle differences they may have in the way they work / operate.
Branding, app domain URL and security’s settings could also be a challenge as each company likely to have different requirements.

Hi David

I personally think the security risks of just using a company object are too great a risk.
I have a similar issue. I have about 10 companies who use my DB and I’ve had to replicate them and run them separately. It’s hugely difficult because of making updates, ensuring consistency, trying to have staging v live etc but because the data I am handling is sensitive it has to be isolated.

I may need to leave Knack in the future as business grows to get a standard platform solution unless they innovate in this direction.

Thanks Kevin. I really appreciate your input and I am coming to the same conclusion. I am thinking about using Bubble and their “subapp” feature which would create separate data bases for each customer.

1 Like

That’s a great pointer. I wasn’t aware of Bubble and I will now investigate it. Thanks!

I built what you are referring to in the Health and Fitness industry. I have also built a similar one in a Telcom entity which is referred to as a multi-tenant app. Each Coach/Practitioner has their own profile and each one belongs to an Organization. An Organization can have multiple Coach/Practitioners. Each Client belongs to an Organization and each Client profile and all related data is managed by their personal Coach/Practitioner. Clients cannot see other Clients and Coach/Practitioners can only see their own Clients. All users can only see specific data from their Organization. The roles are very flexible and much can be done if you know how to plan it properly up-front.

1 Like

I’ve built an app for our clients. We are a cyber consulting firm and provide all types of reporting for our clients. I do use a client table with accounts connected to it. One issue I ran up against was being able to access other client data on nested pages (yes you would need to know the unique id that gets generated in order to get to it first, but if you were able to get it for whatever reason, I corrected this by using a client field on each page and javascript to redirect a user based on their connection to the client table…

I’d be happy to show you what I did.

However, I do agree a single SaaS app would be way more complex. The best way to handle that is create replicas of your app, and use the API to get data in and out for each individual client.

I think security and performance are the two biggest issues in doing what you want.

Totally agreed with David and Kevin.
Some other users in this community already asked for “Global Filter”.
This feature is badly needed for creating a SAAS App because changes can only be done in production mode. The security risk of data leak by mistake is far bigger than the benefits without a global filter function.

Besides, for creating SAAS Apps, we also need:

  1. A dashboard to see a history of user logins.
  2. A System Object to store the setting of each global filter (top level user account details, like company name and logo)
  3. Pre-load rules to pre-set some field values when a form is loaded (currently, there is record rules but no pre-load rules). For example, this function is required to show a company’s logo in a form.

How does this feature benefit Knack?
We then can develop SAAS Apps and buy bigger plan.

Anand: That is very interesting and clever on your part, but I’m thinking Knack developers (no-coders) shouldn’t have to resort to custom Java code to get around this issue. And then there are all the other issues surfaced on this thread about why Knack is really not set up to support SaaS apps involving multiple companies and their users.

@David2 - I agree there are several limitations with the platform and quite honestly I’ve been looking elsewhere, similar to those that mentioned Bubble. The learning curve for Bubble seems pretty steep so every time I look at it and think I should be moving over, I stop and remind myself I don’t have time to learn something new and find creative ways to solve issues in Knack. Is it the best approach - definitely not. Does it work for what I need - yes. Will it be able to meet the demands in the future - probably not. Will I eventually switch - most likely (unless things drastically change with Knack). I don’t see this happening any time soon, though.

1 Like

I am in the same boat. Knack works great for me now as a single company app, but unless they make it more robust, I don’t think it will be the solution for a bullet proof multi-company app. And yes, the Bubble learning curve looks a little steep, but I am sure I will get there with some practice. Thanks for your comments.

Did anyone look into https://tadabase.io/ ?
It may have SAAS features.

1 Like

@AlagoLowe - I think you’ll find that system has essentially the same constraints - but I find Knack is easier to set up for multiple types of user with different access levels (which is essentially what a SaaS system is).

The biggest issue is the fact that you have to make changes manually (with both systems) to the live app and this carries high risks when making changes - imagine one client suddenly being able to see other client’s data. You just need to be very careful and make changes in a way that minimises the risks.

Having said that, I have built many systems for clients which have an element of SaaS about them - the largest example being a system for a Covid testing company where all of their patients are users (and have a login) and can access their own and their families data. This has about 250,000 users at the moment.

A few people have mentioned Bubble, which does have staging and the ability to have child apps (copies of a master app). It is a very different proposition to Knack and serves a different purpose in my view. With Bubble you really are starting with a blank canvas and this brings with it both total freedom in terms of design and also a LOT more work. In the past, I built a reasonably complete B to B CRM system with it to get a feel - and this works OK - but I could have built a Knack equivalent in a tenth of the time and it would probably look better as well (with a bit of styling).

So in the end, it is a matter of choice. Personally, I find Knack the most suitable compromise for the vast majority of my clients’ projects and therefore concentrate on it. Combine this with the power provided by Integromat and you have an amazing toolset.

You can read more about Online Databases on my blog:

Julian

4 Likes

I have been using knack for 7 years in multi-tenant mode through the use of a company object field and profiles. With the new ability to filter what a user sees during inline editing has made it event more powerful. Each company has its own space and views can be customised for different company needs. This includes the ability for my clients to set up and manage their own users and what screens their users can see. The only coding use is to check what logo to load in the header , change USA address labels to Oz, or to hide certain views based on the user object, but this is easy stuff.

While I have own frustrations with knack, more to do with the impact the new builder caused to my custom screens, it is still the best value for money online database I have come across. I suggest you leverage the community to work out the kinks and persist with the environment. Any help I can provide let me know.

Peter Day

1 Like

Thank you for the info and offer of help. I will explore further some of the issues I have and see if there is a work around.

We’re running two apps that cater for multiple customers, one since 2015 for 60 odd companies. Knack is perfect for this given how easy it is to set forms and views to operate based on the user.

1 Like

Tadabase has a strikingly similar approach to that of Knack, and at least seem to be working on features regarding staging (i.e. having different development and production environments), and they support custom domains. I’d start there if I were to start now, just the migration pains are too big now, at least yet. It also incorporates natively part of what you need Integromat/Zapier for in Knack.

(Note: kudos for your website, that was what made me choose Knack when I was shopping for this 2 years ago).

2 Likes

Agreed with you very much.

Hi everyone - just wanted to chime in quickly and thank everyone for engaging in this great thread!

We do have some updates we’re hoping to release in the near future that touch on multi-tenancy, which are to allow builders to limit the connected records shown in view filters and on search inputs. Essentially expanding the “show” options you see on connection fields in form views, to other areas of the live app.

There is so much more to explore in this space, and there are a lot of good ideas here! I look forward to hearing more specific needs around some of those feature requests.


A quick note in reply to information shared above:

We recognize Tadabase may come up in discussions, and this community is free to engage in respectful discourse touching on competitors’ offerings when relevant to the topic, all good! Just for the record, the Tadabase founders were not former Knack employees.

4 Likes