$ docker compose build
$ docker compose up
npm i
- Create an AWS account if you don't have one.
- Create an IAM User
- Export
aws_access_key_id
andaws_secret_access_key
env variables. - Run
brew install awscli
in the terminal to install AWS CLI - Run
aws configure
to Authorize SST via AWS CLI through Lambda to your local - Create a
.env
file in the root directory with the necessary environment variables found in .env.example. Here's an example: - Run
npm run dev-remote-db
to run the Go Lambda Gateway V2 server locally, proxied through Lambda to your local, and using SST deployed AWS resources for DB, etc.
- Add to your
.zshrc
/.bashrc
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
go install github.com/a-h/templ/cmd/templ@latest
- Run
templ generate
npm run dev
should finish with an AWS endpoint, hitting that endpoint should
show a list of events in that particular stage's dynamoDb table
For auth to work, you must add your AWS local deployment's URL to Zitadel's callback URLs our app-specific redirect settings
- Add your AWS deployment URL to
Redirect URIs
and suffix it likehttps://{instance-id}.execute-api.us-east-1.amazonaws.com/auth/callback
- Add your AWS deployment URL to
Post- Logout URIs
, your deployment URL looks like thishttps://{instance-id}.execute-api.us-east-1.amazonaws.com
- Add a new event -
curl <AWS URL from npm run dev>/api/event
- list table Eventscurl -X POST -H 'Content-Type: application/json' --data-raw $'{"events":[{"eventOwners":["123"],"name":"Espanola Lowriders Good Friday Rally & Bar Crawl","description":"Join us in the low rider capital of the world while we hit up all TWO of our local bars\u0021 You haven\'t seen a real lowrider if you haven\'t visited Espanola\u0021","startTime":"2025-02-15T18:30:00Z","address":"Espanola, NM","lat": 36.015303,"long":-106.066063}]}' <AWS URL from npm run dev>/api/event
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/dynamodb/index.html
If you see an error like
(!) templ version check failed: generator v0.2.513 is older than templ version v0.2.648 found in go.mod file, consider upgrading templ CLI
,
you need to update the templ
go binary
go install github.com/a-h/templ/cmd/templ@latest
For an overview of our current env vars with an explanation of each, look at .env.example
When updating env vars, the changes need to be made in 4 places:
stacks/ApiStack.ts
.github/actions/set_aws_creds_env_vars/action.yml
(inputs
section).github/actions/set_aws_creds_env_vars/action.yml
(run
section where vars areecho
d).env.example
to clarify in version control what our currently-used env vars are
For *.meetnear.me
and *.devnear.me
there is some custom configuration
required at the API Gateway level, DNS nameserver level, and Route53
configuration level
- DNS Level - at the time of writing, the
*.me
TLD can't be registered through Amazon, so it's handled through Namecheap.com. - API Gateway / Route53 Level - To map the DNS to Route53 (covered in the
next step), you must first configure at the API Gateway level
- First, go to API Gateway >
Custom Domain Names
and click
Create
. - Enter the new domain, in our case
devnear.me
- Under
ACM Certificate
if this is a new domain, you might need to click Create a new ACM Certificate - After initiating the certificate creation, you'll be taken to the AWS
cert admin panel
where you need to click
Create Records in Route53
to verify domain ownership for the cert - Go to the
API Gateway
> Custom Domains in the AWS console - Click
Create
- Choose the newly created (and now verified via the Route53 records added above) cert
- Go to
devnear.me
(your newly created Custom Domain Name) > Configure API Mappings - Set
API
value to the Cloudformation resource you want to map todevnear.me
- Go back to Route53 console to confirm the mapped
A
records are set correctly. If they are, theValue
for theA
record will be (slightly confusingly)d-<alpha-numeric>.execute-api.us-east-1.amazonaws.com
. This should be different from theApiEndpoint
seen in Github Actions output for the deployment, which typically looks likeApiEndpoint: https://<alpha-numeric>.execute-api.us-east-1.amazonaws.com
. The alpha-numeric characters will not match, and the correctA
record should be prefixed withd-
- First, go to API Gateway >
Custom Domain Names
and click