This (almost) purely educational app manages places Iβd like to visit some day, and helps me to keep track of more or less exotic dishe recipes.
Key technologies: Angular based single-page app with Mapbox GL, AWS Cognito for OAuth2, PostgreSQL DB and S3 for persistence and a Spring Boot backend written in Kotlin, various spin-off tools written in Golang, all provisioned to AWS Infrastructure with Terraform and lots of Confidence.
Angkor is a monorepo that combines the following modules and technologies:
Path | Descriptions | Technologies / Tools / Language(s) | Build Status |
---|---|---|---|
|
Cloud Infrastructure as Code |
||
|
Server Backend |
||
|
Frontend and reverse proxy |
||
|
Supporting services written in Go |
||
|
Project Documentation |
You should have [AWS CLI](http://docs.aws.amazon.com/cli/latest/userguide/installing.html) and most importantly [Terraform](https://www.terraform.io/intro/getting-started/install.html) installed. In a nutshell the applicationβs neighborhood looks as follows:
This project uses the good old [GNU Make](https://www.gnu.org/software/make/) utility to manage all tasks for terraform, gradle, yarn and whatever else we have in our ecosystem. Run make
without args to see whatβs possible, open the [Makefile](./Makefile) to look beyond!
$ make
ββββββ ββββ βββ βββββββ βββ βββ βββββββ βββββββ
βββββββββββββ βββββββββββ βββ βββββββββββββββββββββ
ββββββββββββββ ββββββ βββββββββββ βββ βββββββββββ
βββββββββββββββββββββ ββββββββββ βββ βββββββββββ
βββ ββββββ ββββββββββββββββββ βββββββββββββββ βββ
βββ ββββββ βββββ βββββββ βββ βββ βββββββ βββ βββ
Available Commands:
api-clean Cleans up ./kotlin/build folder
api-build Assembles backend jar in ./api/build with gradle (alias: assemble)
api-test Runs spring boot unit and integration tests in ./kotlin
api-run Runs springBoot API in ./kotlin using gradle bootRun (alias: bootrun)
api-mock Runs OIDC (and potentially other) mock service for api
ui-build Run ng build in ./ui
ui-build-prod Run ng build --prod in ./ui
ui-test Runs chromeHeadless tests in ./angular
ui-run Run angular with ng serve and opens WebUI in browser (alias: serve,open,angular)
ui-mocks Run json-server on foreground to mock API services for UI (alias: mock)
tf-init Runs terraform init on working directory ./terraform, switch to
tf-plan Runs terraform plan with implicit init and fmt (alias: plan)
tf-apply Runs terraform apply with auto-approval (alias: apply)
docs-clean Cleanup docs build directory
docs-build Generate documentation site using antora-playbook.yml
docs-push Generate documentation site and push to s3
docs-deploy Deploys docs with subsequent pull and restart of server on EC2 (alias: docs)
all-clean Clean up build artifact directories in backend and frontend (alias: clean)
all-build Builds frontend and backend (alias: build)
all-test Builds frontend and backend (alias: build)
all-deploy builds and deploys frontend and backend images (alias deploy)
angular-clean Remove angular dist folder ./angular/dist
angkor The ultimate target - builds and deploys everything π¦
release create final release tag with semtag
git-clean git cleanup, e.g. delete up stale git branches
Seriously? Check our Dedicated angkor-docs project built with Antora
See CONTRIBUTING.md