This is the home to a knowledgebase. It is being created to be a generic reusable solution that can be self hosted and customised to individual needs. The project architecture follows a JAMStack, Serverless application model. This tool is built using Gatsby on top of the following technologies using AWS Cognito for auth, AWS S3 for asset storage, hosted PostgreSQL on AWS RDS for data storage, Hasura to create a GraphQL api over postgres, and AWS Lambda functions to tie it all together.
To deploy this application, Gatsby assets are stored on S3 and served via AWS Cloudfront CDN. AWS Route53 is used for DNS mapping the hostname to the assets internally.
Terraform is used to manage all of this infrastructure.
See this image:
The objective of the project is to build a more flexible platform, capable of accommodating a quandrant of requirements running on two axis:
- feature wise, a knowledgebase
- branding wise, internal NearForm projects and customer projects
The end goal is to support all the variation on such axis:
- NearForm cloud native knowledgebase
- EFQM knowledge base
The initial goal is to implement the EFQM knowlegebase, while at the same time creating the platform to accommodate a non-EFQM version of both, with all that it entails.
At a high level, the architecture of the project will have a single host Web application built with Gatsby, where branding customizations for a same brand (we don't expect to host within the same runtime instance of an application multiple brands) occur via a theme package which contains:
- UI customizations via Material UI themes
- application-wide specific configuration
- translations
Also, the idea is that knowledgebase specific code, including:
- site-specific components
- site-specific database schema and metadata
will live in Gatsby theme packages, a new feature recently introduced in Gatsby, and still experimental, which allows to compose a Gatsby application via multiple modules which collaborate with each other, rather than being constrained to a single application per Gatsby host as is the case with the usual Gatsby starter projects.
All the above considered, the objective is to make it possible to implement a knowledgebase application by:
- creating a plain Gatsby application
- using Gatsby theme packages published by NearForm
- customizing the look and behavior of the application(s) via a brand-specific theme package provided by the implementor and following well-defined and documented configuration procedures, including:
- providing assets to show in the UI of the application
- customizing the look via Material UI theme configuration
- ....