Skip to content

Simple React static site deployed to AWS using serverless

License

Notifications You must be signed in to change notification settings

pragatheeswaran86/baseline-webpage

 
 

Repository files navigation

Baseline Webpage

A simple React static site that is deployed to AWS using serverless.

serverless node platform pm framework CDN license types

Goals

  • Deploy quickly with minimal effort
  • Everything you need to start building straight away with production quality
  • Support deployment from local, Bitbucket & GitHub
  • Deploy and test ideas before you buy that perfect domain name
  • Prod, staging and local environments separated from the start

Features

  • ⚡️ Serverless
  • 💰 Cost friendly - only pay for what you use
  • 🌏 Fast and global CDN with Cloudfront
  • ✨ Automatic cache invalidation (1000 free per month - check pricing)
  • 👉 Redirect HTTP to HTTPS
  • 🚀 Ready to use Bitbucket Pipeline and Github Action
  • ⌨️ Deploy from your local machine (optional)
  • 🤝 HTTP2 support
  • 🗜 Gzip and Brotli compression
  • 🏗 Modern tools Typescript, React, Serverless Framework
  • 🔐 HTTPS/TLS support
  • 💻 Team Collaboration - Great for a single developer or a whole team
  • 🥞 Perfect for a Jamstack
  • 🏎 Fast Deployments - deploy changes quicker!
  • ☎️ Minimal configuration required to get started
  • 🛣 DNS with Route53
  • ✅ Free SSL/TLS with AWS Certificate Manager when using Route53
  • 🎬 Test new ideas quickly and single command tear down when you are done, no mess
  • 🔑 Support AWS CLI Profiles - no need to use default for everything!

Lighthouse Scores

Start with a perfect score!

🎉 Lighthouse Performance Lighthouse Accessibility Lighthouse Best Practices Lighthouse SEO 🎉

Demo

See Baseline Webpage in action

Demo video

Local Requirements

Project Setup

  1. npx baseline-webpage@latest my-app where my-app is the name of your app
  2. cd my-app and npm run aws:profile which will configure AWS CLI with a new profile and is only required for deploying from local (if you have issues please update aws cli)

Run Locally

  1. npm start

Deploying

  1. npm run deploy:staging
  2. The output from the deploy will show WebsiteUrl that the site was deployed to. If you need to find it again you can run npm run info:staging

Deploy a Change

  1. npm run deploy:staging
  2. Allow some time for the Cloudfront cache invalidation to finish to see changes in browser

Adding a Domain

  • Deploy first
  • Set up a Route53 Hosted zone for the desired domain name
  • Create a single ACM certificate for *.$DOMAIN_NAME & $DOMAIN_NAME
  • Add an "Alternate domain name" to the Distribution that matches your buckets name
  • Edit Route53 and point the domain with an A record to the Distribution

Remove Stack

To destroy the deployed stack so it is no longer on AWS run npm run remove:staging.

Environment Flag

You can add checks in the code to determine if you are in a deployed or development environment. Development will only be for locally run code. Currently cannot tell the difference between deployed staging and prod.

  • process.env.NODE_ENV === 'production'
  • process.env.NODE_ENV === 'development'

Pipeline Variables

The main and prod branches will trigger the action/pipeline to deploy. The stage is determined by the branch name being "prod" or not.

GitHub

Create two Actions secrets with the AWS account keys you will deploy with:

  • AWS_ACCESS_KEY_ID = xxxx
  • AWS_SECRET_ACCESS_KEY = xxxx

Bitbucket

If you are using the BitBucket pipeline deployment then you will need to set these pipeline environment variables in BitBucket:

  • AWS_ACCESS_KEY_ID = xxxx
  • AWS_SECRET_ACCESS_KEY = xxxx
  • AWS_PROFILE = baseline-webpage
  • REGION = ap-southeast-2

Optionally these can be used if staging and prod are in different accounts or the IAM roles have different access:

  • PROD_AWS_ACCOUNT_ACCESS_KEY_ID = xxxx
  • PROD_AWS_ACCOUNT_SECRET_ACCESS_KEY = xxxx
  • NON_AWS_ACCOUNT_ACCESS_KEY_ID = xxxx
  • NON_AWS_ACCOUNT_SECRET_ACCESS_KEY = xxxx

Baseline

If you would like to learn more about what we do please visit Baseline

License

Baseline Webpage is MIT licensed.

About

Simple React static site deployed to AWS using serverless

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 33.3%
  • Shell 31.9%
  • TypeScript 13.8%
  • HTML 13.2%
  • CSS 6.8%
  • Dockerfile 1.0%