A web application that allows users to track their daily moods using a simple emoji-based interface. This project is built to experiment with AWS services and Infrastructure as Code using Terraform.
The application uses several AWS services orchestrated with Terraform:
- Frontend: Static website hosted on S3 and distributed via CloudFront
- Backend: Serverless architecture using AWS Lambda and API Gateway
- Database: DynamoDB for storing mood data
- Infrastructure: Managed with Terraform and hosted on Terraform Cloud
- S3 bucket for static website hosting
- CloudFront distribution for content delivery
- API Gateway for REST endpoints
- Lambda function for backend processing
- DynamoDB table for data persistence
- IAM roles and policies for security
- Simple emoji-based mood selection interface
- Daily mood tracking and averaging
- User-specific mood history
- Responsive design that works on mobile devices
- Frontend: HTML, CSS, JavaScript
- Backend: Node.js (Lambda function)
- Infrastructure: Terraform
- AWS Services: S3, CloudFront, API Gateway, Lambda, DynamoDB, IAM
- CI/CD: Terraform Cloud
*.tffiles - Terraform configuration fileslambda/- Lambda function source codeindex.html- Frontend web applicationvariables.tf- Terraform variables definitionoutputs.tf- Terraform output values
- AWS Account
- Terraform Cloud Account
- Terraform CLI
- Node.js (for Lambda development)
- Clone the repository
- Configure AWS credentials
- Initialize Terraform -
terraform init - Apply infrastructure -
terraform apply. You need to authorize or use the flag--auto-approve.