This article will show how I built a functional static web app with user authentication and a dynamic database for FREE using Webflow, Vault Vision, Cyclic, and Airtable with LowCode
Over the past few weeks, I've spoken to many technology founders starting out with an idea for a software business or service that requires interaction with their customers over the web. One was a service that provides charities a way to publish donation requests, and another was a service that connected delivery drivers to nearby public bathrooms. I discovered a significant obstacle awaiting these founders when they make the transition from a simple static brochure-style website to creating a SaaS application. The transition to a modern SaaS app that needs individual user authentication and controlled access to records typically required a development effort that was out of reach of budgets, thus these entrepreneurs were forced to use email submission forms or online spreadsheets that did not sufficiently meet their auth needs and were cumbersome.
Like any founder, I knew there had to be a better way; with all the new SaaS LowCode tools that offer a FREE plan, surely there is a lowcode and user-friendly solution that doesn’t require hiring a developer to build a custom 3-tier application for thousands of dollars.
To build a fully functional and secure authentication system into SaaS applications, we settled on the following requirements:
A modern, secure and reasonable solution is a 3-tier app and how can we make it simple?
Let's break down what we need the Middle Tier to actually do.
Luckily there are auth services like Vault Vision (disclaimer: the author of this fine article is affiliated with Vault Vision. Please check us out https://vaultvision.com :) )
So Vault Vision can handle the user management and auth with a static website just fine, but there still needs to be a component to store the data API key and to tie the user authentication to the data such that user access to records is controlled and restricted to just the users that should have access. This is where things get interesting and to sum up the problem:
'Can we make a generic, re-usable, middle tier component that does not need "on-going" dev that can hold an API key, validate user authentication tokens and enforce data access constraints, and NOT require developers or system admins to manage and deploy, and can be FREE?'
YES!! It took a bit of inspired determination but where there is a will there is a 'Node-Auth-Airtable' way open-sourced by Vault Vision, designed to run as an Express API serverless App on the Cyclic application platform that does offer a FREE plan.
Here is the GitHub link to the Vault Vision 'Generic Node Auth Airtable Bridge', which you can easily copy/clone to run on Cyclic.
This solution might not be for everyone, but let's go over the pros and cons of this solution vs a standard 3-tier app.
Is this right for you?
If you are looking for a fast and easy way to make a low-cost dynamic web app that users can create and view their own records, all in simple data structures, then YES!
Great use cases are:
So on to the nitty gritty details, below are the 11 steps needed to try this out and to get a working example on your own accounts and websites.
You are going to create 4 accounts and keep track of the following 8 values of id, domains, and URLs, you should keep track of these values in a notepad window for easy reference you will copy and paste them frequently.
Create the Airtable, and make note of these 3 values from the following 2 screens:
When you create the table; make sure your table has a single text column called vv_id (THIS IS VERY IMPORTANT)
Visit: https://airtable.com
Get the API key here.
Create your static WebHost on Webflow, make note of:
Create a website on Webflow and start with a blank site
Visit: https://webflow.com/dashboard/sites/new
Once created, you can get the website URL here
![Note the website url - in this case: https://demo-site-6a158e.webflow.io
](https://cdn.hackernoon.com/images/AOlJRvEucFTafhEGDZ1zCOoPUXa2-81d3l51.png)
For the little bit of js code that we will be using you will need to use the paid version of Webflow OR there are 2 other options, 1) stick to static HTML buttons and HTML forms that you post to your bridge connector and move some of the logic there, OR 2) you can host the static assets on GitHub pages https://pages.github.com/ and create a repo named {your_github_username}.github.io and it will served out of the same https://{your_github_username}.github.io endpoint
Don't worry about the content for now, we will add that later. For now, we just need to get the website URL.
Create your user authentication bridge connector on Cyclic, make note of:
Create a GitHub account if you don't have one already, Cyclic uses that account for auth and for publishing
Visit: https://github.com/
Fork this repo into your account: https://github.com/vaultvision/node-auth-airtable
Create a Cyclic account and authorize it to access GitHub
Visit: https://www.cyclic.sh/
You will need to give the Cyclic account access to your public GitHub repos.
Select ‘node-auth-airtable’ assuming you forked it from https://github.com/vaultvision/node-auth-airtable
After you select the right repo, Cyclic will ask for final approval to install.
Make note of the bridge connector domain name on this screen
![Note the bridge connector URL - in this case: https://adventurous-jade-chimpanzee.cyclic.app
](https://cdn.hackernoon.com/images/AOlJRvEucFTafhEGDZ1zCOoPUXa2-mri3lnz.png)
Create your Vault Vision authentication tenant and application
Visit: https://manage.vaultvision.com/register
Pick a name for your login page, this will be the domain/URL for page where your users login and signup
Fill in a name for your company, it can be anything you want
Make sure to choose 'Traditional Web App' for the Application Type.
And Pick a name for your application, it can be anything it is never shown to a user, and fill in these values for your application:
The Callback URL must end with /oidc/callback
The Logout URL must end with /oidc/logout
The Login URL is just your homepage URL
Callback URL
-------------------
https://adventurous-jade-chimpanzee.cyclic.app/oidc/callback
Login URL
-------------------
https://demo-site-6a158e.webflow.io (if you are on Webflow)
https://vaultvisiondemo.github.io (if you are on GitHub Pages)
Logout URL
-------------------
https://adventurous-jade-chimpanzee.cyclic.app/oidc/logout
Mmake note of:
Go back to the Cyclic application, and update these variables (under the ‘Variables’ tab in the menu)
Visit: https://app.cyclic.sh/#/app/
Go back to Webflow or your GitHub Page and copy and paste the html fragment and script fragments and update these 3 values in the javascript script tag:
You can get the HTML and script fragment from here:
https://github.com/vaultvisiondemo/vaultvisiondemo.github.io/blob/main/index.html
There are 3 sections, an HTML block, a style block and a script block
In the script block there are 3 const that need to be updated with your unique values
{these are the values for this demo, but you will need to use your unique values}
Create a new account from your front-end (make sure you are not in Incognitio mode, or if you are you enable 3rd party cookies https://knowledge.kaltura.com/help/enabling-3rd-party-cookies-for-chrome-incognito-mode)
Visit: {whatever your front end url is - in our case it was GitHub pages https://vaultvisiondemo.github.io}
Add some new data content
The "add Air Table" button will add some static data to your Airtable and automatically attach the correct vv_id (user_id) for the user that you are logged in as.
List the data content
The "list Air Table" button will read out all the records that are attached to the correct vv_id (user_id) for the current user that is logged in. You can logout, create a new user and repeat the same process and you will see that each users records are dynamic and only accessible by that user. One user cannot access another users records.
Airtable Admin sees all
Back in Airtable you can new see and modify ALL records as the Airtable Admin, and you can see the individual records now attached to each user.
User management, you can also manage these users with blocking/deleteing/credential reseting in the User management panel.
Even though there are several components to this solution, they are all understandable, single purpose based, #LowCode and have some FREE options yet give you dynamic user-based features of full application with the convivence of Webflow and #LowCode building.