![1688515420018](https://github.com/Baseline-JS/core/assets/151841910/620fa869-4bca-418d-af2c-3a3f8b2d2719)
BaselineJS
BaselineJS is an open-source, fullstack TypeScript, serverless first framework designed to make building cloud native applications easier. Our framework utilizes a combination of modern technologies, architectures and operational processes to help teams to efficiently build and deploy robust applications
If you like BaselineJS give us a ⭐️
Website |
Documentation |
Discord |
LinkedIn |
YouTube
Startups, want $10k USD of AWS Credits to Get Started? Apply Here
Getting Started
Setup
- Install requirements
pnpm run install:requirements
npx @baselinejs/create-app my-app-name
pnpm install
pnpm run setup
to name your project and set the regionpnpm run aws:profile
to setup your AWS credentials profile (if you have issues please update aws cli)pnpm run deploy:staging
to deploy api/web/adminpnpm run add:user:staging
to add an admin user to the applicationpnpm run urls:staging
To see your project URLs
Local Requirements
These must be installed before following the setup instructions.
- Macos/Linux OS/Windows Subsystem for Linux
- Node.js v20 (v20 or higher) & npm@10.5.0 or higher (we suggest installing and using nvm) follow instructions in the link to install, you will generally need to create a new terminal session after installing. If you already have nvm update it before proceeding.
- If nvm is installed you can switch versions with
nvm install 20 && nvm use 20 && nvm alias default 20 && nvm install-latest-npm
- If not using nvm you can manually install node and npm, download from https://nodejs.org/en/download/ alternatively use the operating system package manager or any other appropriate tool to install node
- Current versions can be checked with
node -v
, npm -v
- pnpm version 9, version can be checked with
pnpm -v
, install with npm install -g pnpm@9
or other methods - AWS CLI v2
- Homebrew, for Mac users only, follow install instructions here
- jq for extracting Cloudformation outputs
- Install on mac
brew install jq
- Install on Linux
sudo yum install jq
or sudo apt-get install jq
, or other appropriate methods
- Java Runtime Environment (JRE) version 8.x or newer, it is only required for DynamoDB local
- Install on mac
brew install java
- Install on linux
sudo yum install java
or sudo apt-get install openjdk-8-jdk
, or other appropriate methods - DynamoDB local will automatically install in the project when the api is started, java needs to installed before this occurs
- curl which is used in some of the bash scripts, curl install instructions
- An IDE such as Visual Studio Code
- Internet connectivity
- AWS Account https://aws.amazon.com/getting-started/
- IAM credentials https://docs.aws.amazon.com/cli/latest/userguide/getting-started-prereqs.html#getting-started-prereqs-iam be sure to follow Security best practices in IAM
Experimental Requirements Installation
Alternatively, try the experimental requirements installation script. Use at your own risk.
If you are starting a new Baseline project.
curl -o- https://raw.githubusercontent.com/Baseline-JS/core/main/scripts/experimental-install-requirements.sh | bash
or
wget -qO- https://raw.githubusercontent.com/Baseline-JS/core/main/scripts/experimental-install-requirements.sh | bash
If you are joining an existing Baseline project
pnpm run install:requirements
Run Locally
If the project is already setup and you are trying run the project locally make sure you run pnpm run aws:profile
first so that you have the correct credentials for AWS configured locally.
Commands
Start the api, admin and web in their own terminal windows/tabs with the following commands.
pnpm run generate:env:local
to generate the env files for the frontend clientspnpm run start:api
pnpm run start:admin
pnpm run start:web
Running locally Limitations
- API, Web & Admin: No S3, you will need to rely on AWS staging S3
- API: No local Cognito Authorizer, the deployed staging cognito can be used (see
packages/api/serverless.yml
) or the payload set by AUTHORIZER
in packages/api/scripts/run-api-local.sh
. - Admin: Cognito UI relies on an active AWS Cognito user pool, use deployed staging
Deploy a Change
Swap staging
to prod
to deploy to production. All environment variables will be automatically set in the process.
pnpm run deploy:staging
to deploy api/web/admin
Remove Stack
To destroy the deployed cloudformation stacks so it is no longer on AWS run pnpm run remove:staging
. This will likely destroy all data associated with the application.
Major Components
- 🚀 API
- 🖥️ React Admin Website
- 🌐 React User Website
- ⚙️ CI/CD
- 🔧 Developer Tooling
- 🔒 Authentication
- 🔄 Multiple Environments
- 💻 Run Locally
- 🏗️ Infrastructure as Code (IaC)
- 📦 Managed Environment Variables
- ✨ Baseline Commands
Technology
- 🎁 Package Management: Pnpm + Monorepo
- 🔨 Language & Build: TypeScript + ESBuild
- 🖼 Frontend: React + Vite
- ⚙️ Backend: NodeJS + Express
- 🎨 Linting & Formatting: Prettier + Eslint
- 🏗 IaC: AWS + Serverless Framework
- 🚀 Deploy: Local & Bitbucket CI/CD
AWS Services
- Cognito
- S3
- Lambda
- DynamoDB
- CloudFormation
- Route53
- Systems Manager
- CloudFront
- API Gateway
- CloudWatch
- SNS
What can you build with Baseline?
- 🌐 SaaS Solutions: Build software-as-a-service solutions tailored to your audience.
- 🖥️ Web Applications: Develop responsive and scalable web applications.
- 🛒 Marketplaces: Launch and manage online marketplaces with ease.
- 📱 Mobile Applications: Create robust mobile apps for iOS and Android platforms.
- 💼🛍️ B2B/B2C Applications: Seamlessly cater to both business and consumer audiences.
- 🗄️ Headless CMS: Manage content efficiently using a headless content management system.
Benefits
- Serverless First
- Open source
- Full control
- Cost effective implementation
- Hosted in your own AWS account
- Uses popular technology
- Scales on demand
- Staging and production environments
- Runs locally
Baseline
If you would like to learn more about what we do please visit Baseline