Pixplore is a Pinterest-like image gallery application designed to provide users with a seamless way to upload and search for images based on tags or visual content. It leverages AWS services to ensure a serverless, scalable, and secure environment that can handle high traffic and provide efficient, on-demand search functionality.
- Amaan Ahmed - 25100127
- Muhammad Shayan - 25100164
- Faizan Ullah - 23030015
- Ibrahim Ahmed Khan - 25100112
- Abdul Ahad Bin Ali - 25100016
- AWS Virtual Private Cloud (VPC) - Provides network isolation with access-controlled subnets for public and private resources.
- Elastic Load Balancer (ALB) - Distributes incoming HTTP and HTTPS traffic, allowing the system to handle traffic spikes by scaling backend services horizontally.
- AWS Cognito - Manages user authentication and access control securely.
- Amazon API Gateway - Manages API routing and provides secure communication between users and backend services.
- Amazon Simple Storage Service (S3) - Handles initial image upload directly to buckets, reducing backend workload.
- Amazon Lambda - Serverless functions handle backend tasks, including image upload processing and metadata extraction.
- Amazon EventBridge - Manages event-driven processing, triggering Lambda functions for metadata processing after image uploads.
- Amazon Simple Queue Service (SQS) - Enables queue-based processing for asynchronous metadata handling.
- Amazon Rekognition - Provides image analysis by extracting metadata (tags, labels, etc.) for future search functionality.
- Amazon Aurora (RDS) - Stores structured metadata for efficient, on-demand retrieval and complex querying.
- Amazon Elastic Container Service (ECS) with Fargate - Manages the scalable image search functionality using metadata in Aurora.
- Amazon CloudWatch - Monitors system health, performance, and logs, enabling proactive scaling and troubleshooting.
- User Authentication: Secured via AWS Cognito, managing registration and login with JWT tokens for secure access.
- Image Upload: Users upload images directly to S3 through a presigned URL, minimizing backend load.
- Image Search: Users can search images by tags or visual attributes using ECS with Fargate and Amazon Rekognition.
- Auto-Scaling: Lambda functions and ECS containers are configured to auto-scale based on demand, ensuring optimal performance.
- Traffic Management: ALB and API Gateway distribute traffic efficiently to avoid throttling.
- User Support: Cognito initially supports up to 50,000 users, with scalability options available as demand increases.
- Concurrent Users: Up to 1,000 concurrent users initially, with potential scalability up to 100,000.
- Image Processing: Capable of handling up to 10,000 images per hour, scalable to 100,000 images per hour.
- User Limit: Initial capacity for 50,000 users, scalable as needed.
-
Prerequisites:
- AWS Account with access to the above services.
- Recommended to have basic knowledge of serverless architectures and AWS tools.
-
Setup:
- Deploy AWS resources as per the architecture diagram.
- Configure Cognito for user authentication and S3 for image storage.
- Use the provided scripts (coming soon) to initialize and configure the environment.
- Advanced Metadata Search: Implement additional filters and advanced query capabilities.
- AI-based Image Recommendations: Integrate a recommendation engine based on user preferences and search history.
- Enhanced Security: Continuously update security measures as the user base grows.
We welcome contributions from the community! If you'd like to contribute, please fork the repository and submit a pull request with a brief description of the changes made.
This project is licensed under the MIT License.
docker build -t fastapi-search:latest .