Skip to content

A AWS cloud-based service that provides users with a platform to convert or compress files.

Notifications You must be signed in to change notification settings

nicholasadamou/cloud-tools

Repository files navigation

☁️ Cloud Tools

Next.js TypeScript Tailwind CSS Framer Motion

preview

Cloud Tools is a AWS cloud-based service that provides users with a platform to convert or compress files.

Why Did I Build Cloud Tools?

I am eager to apply my Amazon AWS knowledge to a real-world project, as this endeavor will not only reinforce my understanding of AWS services but also provide a tangible showcase of my skills in designing and implementing cloud-based solutions. By building Cloud Tools, I aim to demonstrate my ability to architect scalable, efficient, and secure systems. This project will highlight the practical application of the concepts I've learned, particularly in distributed systems and system design, which I have been studying extensively for both interviews and personal growth. Through this initiative, I can effectively illustrate my capacity to translate theoretical knowledge into practical, impactful solutions.

System Architecture

graph TD;
    subgraph Frontend
        A[User Browser] --> B[Vercel]
        B --> C[Static Website]
    end

    subgraph Backend
        C --> D[API Gateway]
        D --> E[Lambda Function - Convert Files]
        D --> F[Lambda Function - Compress Files]
    end

    subgraph Storage & Processing
        E --> G[S3 Bucket for File Storage]
        F --> G
        G --> H[Lambda Function - Process Files]
    end

    subgraph Database & Queue
        H --> I[DynamoDB for Conversion History]
        H --> J[SQS for Processing Queue]
        J --> H
    end

    subgraph Monitoring
        E --> K[CloudWatch for Logs & Metrics]
        F --> K
        H --> K
    end

    subgraph Security
        B --> L[WAF for Web Application Firewall]
        D --> M[API Gateway Authorizer]
    end
Loading

Explanation:

  1. Frontend:

    • User Browser: The client-side interface where users interact with the application.
    • Vercel: Hosts and deploys the static website, providing fast and reliable content delivery.
    • Static Website: The frontend application, including HTML, CSS, and JavaScript files, is hosted on Vercel.
  2. Backend:

    • API Gateway: Acts as the entry point for API requests from the frontend. It routes requests to appropriate Lambda functions.
    • Lambda Functions:
      • Convert Files: Handles file conversion tasks.
      • Compress Files: Handles file compression tasks.
  3. Storage & Processing:

    • S3 Bucket for File Storage: Stores uploaded files temporarily during processing.
    • Lambda Function - Process Files: Further processes files, like storing results or updating status.
  4. Database & Queue:

    • DynamoDB for Conversion History: Stores metadata about file conversions and compressions for history tracking.
    • SQS for Processing Queue: Manages file processing tasks asynchronously to handle high loads efficiently.
  5. Monitoring:

    • CloudWatch for Logs & Metrics: Monitors application performance, logs, and metrics for Lambda functions and other AWS services.
  6. Security:

    • WAF for Web Application Firewall: Protects the application from common web exploits.
    • API Gateway Authorizer: Handles authentication and authorization for API requests, ensuring secure access to backend services.

This architecture leverages Vercel for hosting the frontend, providing seamless integration for deploying static sites, while utilizing AWS's serverless infrastructure for backend processing, ensuring scalability and security.

Getting Started

This is a Next.js project bootstrapped with create-next-app.

First, run the development server:

npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev

Open http://localhost:3000 with your browser to see the result.

You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.

This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.

Learn More

To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

Deploy on Vercel

The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.

Check out our Next.js deployment documentation for more details.

About

A AWS cloud-based service that provides users with a platform to convert or compress files.

Resources

Stars

Watchers

Forks

Languages