# Workflows

## Deploy

```bash
make deploy-all                    # All projects
make tf-apply PROJECT=<name>       # Single project
make projects                      # List projects
```

## Make Changes

```bash
vim terraform/${PROJECT}/main.tf
make tf-apply                      # Use PROJECT from .env
make tf-apply PROJECT=<other>      # Override PROJECT
```

## Test Workflows

```bash
# Upload test file
./scripts/awslocal.sh s3 cp test.txt s3://local-<bucket>/uploads/

# Check Step Functions
./scripts/awslocal.sh stepfunctions list-state-machines
./scripts/awslocal.sh stepfunctions start-execution \
  --state-machine-arn arn:aws:states:${AWS_DEFAULT_REGION}:${AWS_ACCOUNT_ID}:stateMachine:local-<name> \
  --input '{"detail": {"bucket": {"name": "local-bucket"}, "object": {"key": "test.csv"}}}'
```

## View Resources

```bash
make verify/status
./scripts/awslocal.sh s3 ls
./scripts/awslocal.sh lambda list-functions
./scripts/awslocal.sh stepfunctions list-state-machines
```

## Manage LocalStack

```bash
make start/stop/logs
make clean && make deploy-all    # Fresh start
./scripts/clean.sh               # Interactive cleanup
```

## Add Projects

```bash
mkdir terraform/my-project
cd terraform/my-project
# Add main.tf, variables.tf, etc.
make tf-apply PROJECT=my-project
```

## Terraform State

```bash
make tf-output/tf-plan/tf-destroy/tf-clean PROJECT=<name>
```

## Daily Workflow

```bash
make clean && make deploy-all
vim terraform/${PROJECT}/main.tf
make tf-apply
make verify
make logs
make stop
```
