Project 2: Stories App

AWS Cloud Project - Read short stories on your app, like and comment, and check out what others are talking about it!
Nebula Stories App Overview
App Overview: Nebula-Stories-App is an iOS storytelling platform where users can sign up, sign in, read the stories, and like and comment on the stories that they enjoyed reading.

Part 1: User Authentication and Authorization – Cognito UserPool and IdentityPool (with IAM roles to give full access to S3 and DynamoDB)

Part 2: Content Storage and Delivery – S3, Custom domain name, CloudFront, Route 53, ACM

Part 3: User Interactions (likes and comments) – API Gateway, Lambda, DynamoDB, IAM roles for lambda to interact with DynamoDB

How I built this app - get details in a 3 hrs long youtube video where I take you step by step how it was created.

Nebula Stories App – Backend Architecture in AWS
User Authentication: Utilizes Amazon Cognito for managing user authentication, with a user pool for data storage and an identity pool for access.

Content Storage:
Employs S3 Buckets for storing story texts, ensuring reliable and scalable delivery.

DNS Services:
Route 53 is used for DNS services, linking the app's custom domain to AWS resources.

Content Delivery:
CloudFront serves as the content delivery network, offering reduced latency and increased transfer speeds.

Security:
ACM (AWS Certificate Manager) manages SSL/TLS certificates for secure, encrypted connections.

Database Services:
DynamoDB is used for storing user interactions like story likes, providing fast and scalable database services.

Backend Processing:
Lambda functions handle backend processing, triggered by actions like user likes.

API Management:
API Gateway acts as the intermediary for frontend-backend communication, securing REST API calls.

Serverless Architecture:
All services (Cognito, S3, Route 53, CloudFront, ACM, DynamoDB, Lambda, API Gateway) are serverless, offering reduced operational overhead, scalability, and cost-effectiveness.

IAM Roles:
- For Cognito: Ensures user authorization, allowing interaction with S3, DynamoDB, Lambda and API Gateway with necessary access.
- For Lambda Functions: Each Lambda function has a specific IAM role for interacting with DynamoDB, including permissions for database operations.
The Nebula-Stories-App is an iOS app, designed for storytelling, that offers a user-friendly platform where users can sign up, sign in, read the stories, and like and comment on the stories that they enjoyed reading. It uses several AWS services to provide a seamless and efficient user experience. Amazon Cognito manages user authentication, storing user data securely in a user pool and facilitating access through an identity pool. S3 Buckets are utilized for storing the text of the stories, ensuring reliable and scalable content delivery. Route 53 handles DNS services, effectively connecting the app's custom domain to the appropriate AWS resources. CloudFront, as a content delivery network, efficiently serves the stories to users with reduced latency and increased transfer speeds. ACM (AWS Certificate Manager) is used to manage SSL/TLS certificates, providing secure, encrypted connections. DynamoDB stores user interactions like story likes and comments offering fast and scalable database services. Lambda functions are employed for backend processing, executing code in response to specific triggers like user likes. Finally, API Gateway serves as the intermediary for frontend-backend communication, managing and securing REST API calls for registering and retrieving likes. Together, these services form a robust, scalable, and secure infrastructure for this interactive storytelling app.All the services used in the app, including Amazon Cognito, S3, Route 53, CloudFront, ACM, DynamoDB, Lambda, and API Gateway, are serverless, which offers significant benefits such as reduced operational overhead, scalability, and cost-effectiveness. Being serverless, these services automatically manage the underlying infrastructure, allowing developers to focus more on building and improving the app rather than on server maintenance and scaling.In the app's architecture, specific IAM roles are tailored for distinct services to adhere to the principle of least privilege.IAM Role for Cognito: This role is crucial for user authentication and authorization. It allows authenticated users to interact with S3 and API Gateway. The attached policies grant necessary permissions for these services, ideally scoped to the minimum required access. For instance, read-only access to specific S3 buckets or limited access to specific API Gateway endpoints.IAM Role for Lambda Functions: Each Lambda function has an associated IAM role that permits it to interact with DynamoDB. The role specifically includes permissions for read and write operations on the DynamoDB tables, such as StoryLikes. This setup ensures that Lambda functions can update or query the DynamoDB tables as required by the app's functionality.
Nebula Stories App
AWS Cloud Project
Full stack app