This repository contains the full-stack solution for the Archival Image Captioning Assistant.
This is meant to be a "minimum lovable product" (MVP) meaning it's ready for beta testers but may need modifications before being released to wider audiences.
Workflow is outlined in this markdown file.
Architecture is outlined here.
Next steps and long-term sustainability notes here.
lib/ - Python/Ruby libraries defining app logic
notebooks/ - Examples interacting with API
projects/
frontend/ - ReactJS frontend
infra/ - Terraform setup
research/ - Jupyer notebooks from experiments
- AWS CLI configured with appropriate credentials
- Terraform (>= 1.0.0)
- Make
- Python 3.x
- Docker
- Node.js/npm (for frontend components)
- Clone the repository
- Configure your AWS credentials or use instance roles (usually AWS_PROFILE=default):
export AWS_PROFILE=your-profile-name
- Update the
dev.tfvars
file with your configuration:
vpc_id = "" # Leave empty to create new VPC
app_name = "ai-description"
deployment_stage = "dev"
deployment_name = "your-deployment-name" # Required
make createPythonEnvironment
- Creates a Python virtual environmentmake createTerraformBackend
- Creates Terraform backend configuration in S3 and DynamoDBmake installPythonRequirements
- Installs Python dependenciesmake installJavaScriptRequirements
- Installs JavaScript dependenciesmake install
- Installs all dependencies
make terraformFmtValidate
- Formats and validates Terraform code (automatically applied to other Make rules)make terraformInit
- Initializes Terraform configurationmake terraformPlan
- Creates Terraform planmake terraformApply
- Applies Terraform changesmake terraformDestroy
- Destroys Terraform infrastructure
make cleanPython
- Cleans Python artifactsmake cleanTerraform
- Cleans Terraform artifactsmake cleanTypeScript
- Cleans TypeScript artifactsmake clean
- Cleans all artifacts
- Initialize the project:
make terraformInit
- Create and review the deployment plan:
make terraformPlan
- Apply the changes:
make terraformApply
- To destroy the infrastructure:
make terraformDestroy
The deployment creates the following AWS resources:
- VPC with public/private subnets and VPC endpoints
- API Gateway
- Lambda functions
- DynamoDB tables
- S3 buckets
- ECS cluster
- CloudWatch logs
- IAM roles and policies
- EventBridge rules
- SQS queues
- ECR repositories
- All commands require valid AWS credentials
- The
dev.tfvars
file must be properly configured before deployment - Use
make help
to see all available commands - Infrastructure changes should be reviewed carefully before applying