fullstack web should be easy and fun.
start with working implementations of everything, then tinker and tweak until your app is complete!
fast and reliable automation.
easy browser testing.
a project scaffold for a fullstack webapp on aws with an infrastructure set ready-to-deploy with libaws.
the project scaffold contains:
- a go lambda backend.
- a clojurescript and react frontend.
- s3 and dynamodb for state.
- http and websocket apis.
- low latency logging.
- automated devops.
a live demo on aws is here.
the lambda zip contains only 3 files:
>> ls -lh | awk '{print $9, $5}' | column -t
favicon.png 2.7K # favicon
index.html.gz 296K # web app
main 15M # go binary
the index.html.gz:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Security-Policy" content="script-src 'sha256-${JS_SHA256}'">
<link rel="icon" href="/favicon.png">
</head>
<body>
<div id="app"></div>
<script type="text/javascript">
${JS}
</script>
</body>
</html>
the lambda zip itself:
>> ls -lh | awk '{print $9, $5}'
lambda.zip 4.6M
use the included Dockerfile or install the following dependencies:
-
aws route53 has the domain or its parent from env.sh
-
aws acm has a wildcard cert for the domain or its parent from env.sh
git clone https://github.com/nathants/aws-gocljs
cd aws-gocljs
cp env.sh.template env.sh # update values
bash bin/check.sh # lint
bash bin/preview.sh # preview changes to aws infra
bash bin/ensure.sh # ensure aws infra
bash bin/dev.sh # iterate on backend and frontend
bash bin/logs.sh # tail the logs
bash bin/delete.sh # delete aws infra
# bash bin/dev.sh # this needs upload bandwidth
bash bin/dev_frontend.sh # iterate on localhost frontend
bash bin/relay.sh # iterate on backend via ec2 relay