We selected Option A – Manual deployment to AWS EC2 without Docker.
Instead of containerizing the app or using S3 for static hosting, we used Flask to serve the Python backend API directly on EC2. This allowed us to integrate story generation logic and MongoDB operations in one place with full control.
To avoid paid services like Route 53, we used DuckDNS, a free dynamic DNS provider.
DuckDNS mapped our EC2 public IP to a fixed domain: storystudio.duckdns.org.
A cron job was added to automatically update the IP every 5 minutes — ensuring the domain remains reachable even after EC2 restarts or IP changes.
Deploying to AWS made me appreciate how cloud platforms can bring our local code into the real world. From launching the EC2 instance to configuring Flask, MongoDB, and a domain, I got hands-on experience with live deployments. This phase helped me understand real-world DevOps concepts — domain mapping, IP refresh automation, and backend API exposure — that go beyond basic coding.