Goldstack
Templates and boilerplates for fullstack projects customised to your needs.
Install / Use
/learn @goldstack/GoldstackREADME
Getting started on a new project is fun ... until it isn't. Goldstack provides customizable starter templates that help you lift your project off the ground and immediately start working on the features that matter to you.
Getting Started
Explore the templates Goldstack provides:
<table> <tbody> <tr> <td> <p align="center"><a href="https://goldstack.party/templates/nextjs-bootstrap"><img width="50" src="https://cdn.goldstack.party/img/202204/nextjs_bootstrap.svg"></a></p> <p><a href="https://goldstack.party/templates/nextjs-bootstrap">Next.js + Bootstrap</a></p> </td> <td> <p align="center"><a href="https://goldstack.party/templates/serverless-api"><img width="50" src="https://cdn.goldstack.party/img/202203/aws-api-gateway.svg"></a></p> <p><a href="https://goldstack.party/templates/serverless-api">Serverless API</a></p> </td> <td> <p align="center"><a href="https://goldstack.party/templates/express-lambda"><img width="50" src="https://cdn.goldstack.party/img/202203/nodejs.svg"></a></p> <p><a href="https://goldstack.party/templates/express-lambda">Express.js + Lambda</a></p> </td> <td> <p align="center"><a href="https://goldstack.party/templates/go-gin"><img height="50" src="https://cdn.goldstack.party/img/202203/gopher.svg"></a></p> <p><a href="https://goldstack.party/templates/go-gin">Go Gin + Lambda</a></p> </td> </tr> </tbody> </table>Find all templates on Goldstack.
How Does It Work
Generating new starter projects with Goldstack is simple and quick.
Step 1: Select the templates you need
Rather than providing a library of projects, Goldstack provides a library of module templates that can be used to compose projects. This ensures that you can start with a project that includes exactly the features you need.
You can select as many modules as you want. All modules are configured to be easily used alongside each other. For instance, if you choose all modules from the list above, you can link the Lambda Express module to the Next JS application and the S3 module with the Express application. All modules are deployed into a project configured using Yarn workspaces.
Step 2: Provide your Email (if you like)
You can specify your email address so we can send you a link to your template for safekeeping and further configuration. But if you do not want to share your email with us, you don't need to provide it.
Step 3: Download
Goldstack will package your project into one zip file that you can download. This zip file will contain everything to get started developing business logic for your project. If you have provided your email, we will also send you an email with a link you can use to re-download your project or create more Goldstack templates. The email also includes a list of getting started guides for your project.
Step 4: Configure the project for AWS deployment (Optional)
It can often be overwhelming to get started with customizing a new starter project to your needs, especially if the starter project consists of many different modules. We therefore provide a web-based interface for creating a baseline configuration for your project for deployment to AWS. This baseline configuration will enable you to start developing and deploying your project immediately.
All configuration is written into source files. So you will be able to change and extend the configuration later in accordance with your requirements.
For instance, if any module is selected that requires deployment to a website, the configuration tool will help you configure the domain to be used for deploying the website. If you later want to change the domain or deploy your project to multiple domains (e.g. staging and production), you can modify the configuration files in your source code.
Step 5: Follow getting started guides
We recommend that you follow the getting started guides we provide with the download link. The first step will usually be to simply run yarn at the root of your project, open VSCode and to run yarn infra up [dev|prod] to bring up your infrastructure.
Roadmap
It should be a surprise to no one that setting up a dynamic monorepo for JavaScript/TypeScript projects is challenging. While the projects built with Goldstack have loads of config and best practices embedded, there is still a way to go to make this a complete turnkey solution. The following table gives an overview of what works well in the generated project and where some work may still be needed.
| Status | Feature | Comments |
| ------ | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 👌 | Install and Build | Yarn Workspaces using Yarn v2 (Berry) overall works very well and allows for very fast install and build speeds. |
| 👌 | TypeScript | Well-supported, only workaround required is to run yarn fix-project-references when new inter-project dependencies are added. |
| 👌 | Linting and Formatting | Biome are configured to work effectively across all packages. |
| 👌 | Testing | Running tests with Jest works across all packages |
| 👌 | IDE Integration | VSCode including Intellisense works across the monorepo |
| 🤷 | AWS | Deployment into AWS using Terraform overall works very well. Just initial configuration and the way credentials are provided can be improved. See #3. |
About
Getting started with a new project often takes so much longer than it should. Rather than writing code for the problem we want to solve, we fiddle around with the tooling. This problem is often substantial especially in JavaScript ecosystems, where getting common tools such as ESLint, TypeScript, Jest and React work together takes a lot of time and can be frustrating.
Goldstack provides high quality starter projects that are configured based on best practices and sensible defaults. Using a Goldstack starter project rather than a hand-rolled one, will save you dozens of development hours. Moreover, at Goldstack we obsess with every detail of our starter projects and have the freedom to spend the time on optimizing things; something often lost in the race to get goals delivered in many development projects.
Design Principles
Goldstack templates are based on the following design principles:
Only the best tech
We aim to provide starter templates for the best frameworks currently on the market. All templates on Goldstack are based on frameworks and solutions with proven track records for productivity and stability.
Professional
Goldstack templates allow your project to lift off at rocket speed while being sufficiently robust and configurable to fit the requirements of a professional environment. We enable this by:
- All infrastructure is defined in Terraform and can be modified to fit into your environments
- Everything can be deployed in AWS
- We provide instructions for security hardening for every template
Serverless
Goldstack templates use Serverless technologies unlocking the benefits of rapid development cycles, security, observability and low ongoing costs. Following some examples of ways Serverless technologies are employed for the templates:
- Any frontends are deployed using AWS S3 and CloudFront
- Our Express server template is wrapped in a Lambda
- Our email template utilizes AWS Simple Email Service for email sending
Unlimited customizability
We all know that there is usually a trade off in platforms that help us get something done quickly such as when using Firebase. It is very easy to develop and deploy a simple application. However, it is often difficult to adapt the initial simple project to our specific needs. Goldstack is based on the premise that there should not a be a limit to what you can do with your project. Some of the elements that enable this are:
- Infrastructure can be adapted to your needs utilizing the full power of Terraform
- Core functionality is defined as easy to change source code in the project
- Any dependencies we add to your project are available as open source and open for you to modify as required
Modularity first
Modularity is one of the most important principles in software design. Unfortunately it is often difficult in the Jav
