Storytime Stars — Kids Storytelling App
A cloud-native kids storytelling platform where teachers publish stories, AWS converts them into narrated read-aloud audio with Amazon Polly via an S3 event pipeline, and students open interactive book-style story cards.
Screenshots




Key Metrics
Serverless Event-Driven Pipeline with Messaging
Amazon Polly (Ivy Neural/Standard)
ap-south-1
SNS Fan-out to SQS Queue
Custom PBKDF2-HMAC & Expiring Bearer Tokens
Teacher & Student Dashboards
Overview
Storytime Stars is a cloud-native educational storytelling platform designed for classroom learning. Teachers publish text or upload files to private S3 storage, triggering an asynchronous AWS Lambda workflow that converts story text into narrated MP3 audio using Amazon Polly, updates DynamoDB states, and fans out completion events through an SNS-to-SQS messaging pipeline. Students can browse available stories and open interactive cards featuring side-by-side text and synchronized audio narration.
Problem
Building interactive read-aloud applications requires processing audio synthesis asynchronously without blocking web requests, managing separate teacher authoring and student reading permissions, and delivering real-time readiness notifications at scale.
Solution
Engineered an event-driven AWS serverless architecture where teacher uploads directly to private S3 trigger an asynchronous ProcessStoryLambda that invokes Amazon Polly for narration, writes audio to S3, updates story states in DynamoDB, and publishes completion events to an SNS topic. An SQS queue buffers completion messages for client UI polling, while custom PBKDF2 token authentication handles role-based access.
Architecture
Serverless microservice and event-driven architecture running on AWS ap-south-1. A lightweight Flask app serves HTML/CSS/JS frontend assets only. The browser interacts with AWS API Gateway HTTP APIs (ApiHandlerLambda) for user registration, authentication (PBKDF2-HMAC-SHA256 password hashing & 12-hour signed Bearer tokens), story listing, and presigned S3 upload URLs. S3 ObjectCreated events invoke ProcessStoryLambda, which calls Amazon Polly (Ivy neural voice), stores generated MP3s under audio/<id>.mp3, updates DynamoDB (KidsStoryApp_Stories), and publishes completion events to Amazon SNS. Amazon SQS buffers notifications so teacher UI polling can render readiness toasts.
Challenges
- Designing distinct role-aware workflows (Teacher publishing vs Student book reading) under a unified serverless API structure.
- Implementing asynchronous text-to-speech conversion using S3 events, Amazon Polly, and DynamoDB status transitions.
- Building a durable notification fan-out architecture using Amazon SNS and SQS for UI readiness polling.
- Developing stateless, custom HMAC token authentication and PBKDF2-HMAC-SHA256 password security without third-party identity dependencies.
- Direct-to-S3 story file uploads via presigned URLs to keep raw text byte transfer off API Gateway and Flask.
Lessons Learned
- Asynchronous event-driven narration synthesis with Amazon S3 and Amazon Polly.
- Decoupled cloud messaging patterns using Amazon SNS fan-out to Amazon SQS queues.
- Role-based serverless API access control and custom cryptographic token handling.
- Direct browser-to-S3 presigned upload strategies for raw media and text assets.
- Designing interactive, dual-pane (text & audio) web reader interfaces.
Future Improvements
- Single-tenant SQS queue isolation or WebSockets for multi-teacher notification scaling.
- Migration of frontend delivery from Flask to AWS S3 + CloudFront CDN distribution.
- Long-form story chunking to bypass Amazon Polly's 2,900 character single-request limits.
- Integration of Amazon Cognito or OAuth2 for enterprise identity management.
- AI-generated story illustration assets using Amazon Bedrock or Stability AI.