Skip to content

Latest commit

 

History

History
132 lines (102 loc) · 4.76 KB

File metadata and controls

132 lines (102 loc) · 4.76 KB

Cloud Pulse

A competitive intelligence dashboard for tracking cloud storage announcements across AWS, Azure, and Google Cloud Platform.

About

Cloud Pulse aggregates and displays storage-related announcements from the three major cloud providers in a unified, real-time interface. Track competitor moves, new features, security updates, and availability changes across cloud storage platforms - all in one place.

The dashboard provides a centralized view of storage announcements, making it easy to monitor what's happening across AWS, Azure, and GCP storage services without visiting multiple provider websites.

Features

  • Real-time updates - Live announcement feed powered by Supabase real-time subscriptions with automatic refresh when new data arrives
  • Multi-dimensional filtering - Filter announcements by:
    • Provider: AWS, Azure, GCP, or All
    • Storage Type: Object Storage, File Storage, Block Storage, or All
    • Announcement Type: Feature Update, Security/Compliance, Availability Update, Performance, or All
    • Date Range: Last 24 hours, 7 days, 30 days, or All time
  • Full-text search - Search across announcement titles, content, and provider names
  • Provider branding - Visual distinction with provider logos and brand-specific styling
  • Notification banner - Toggle to show/hide notification banner for new announcements
  • Expandable cards - "Read more" functionality for announcements with long content
  • New badge - Automatically highlights announcements posted within the last 24 hours
  • Direct links - Quick access to original announcement pages on provider websites
  • Live sync status - Real-time indicator showing when data was last synchronized
  • Responsive design - Mobile-friendly interface that works across all device sizes

Tech Stack

  • Frontend: React 18.3, TypeScript 5.8, Vite
  • UI: shadcn/ui, Tailwind CSS, Radix UI primitives
  • Backend: Supabase (database + real-time subscriptions)
  • State Management: TanStack React Query
  • Routing: React Router DOM
  • Forms: React Hook Form + Zod validation
  • Icons: Lucide React
  • Charts: Recharts
  • Notifications: Sonner

Getting Started

Prerequisites

  • Node.js (recommended installation via nvm)
  • npm or yarn
  • Supabase account

Installation

  1. Clone the repository:
git clone https://github.com/AdamZLi/cloud-pulse.git
cd cloud-pulse
  1. Install dependencies:
npm install
  1. Set up environment variables:

Create a .env file in the root directory with:

VITE_SUPABASE_PROJECT_ID=your_project_id
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_PUBLISHABLE_KEY=your_publishable_key
  1. Start the development server:
npm run dev

The app will be available at http://localhost:8080

Available Scripts

  • npm run dev - Start development server with hot reload
  • npm run build - Create production build
  • npm run build:dev - Create development build
  • npm run lint - Run ESLint code quality checks
  • npm run preview - Preview production build locally

Project Structure

src/
├── assets/              # Provider logos and images
├── components/          # React components
│   ├── ui/             # shadcn/ui component library
│   ├── AnnouncementCard.tsx
│   ├── DashboardHeader.tsx
│   ├── FilterBar.tsx
│   └── ...
├── hooks/              # Custom React hooks
├── integrations/       # Supabase client and types
├── lib/                # Utility functions
├── pages/              # Route pages
├── types/              # TypeScript type definitions
└── App.tsx             # Root component

Database

The application uses Supabase with a storage_announcements table that includes:

Core Fields:

  • provider - Cloud provider (AWS, Azure, GCP)
  • title - Announcement title
  • content - Full announcement content
  • link - URL to original announcement
  • announcement_date - Date when the announcement was published
  • ingestion_date - Date when the announcement was added to the database
  • last_updated - Last modification timestamp

Classification Fields:

  • storage_type - Type of storage (Object Storage, File Storage, Block Storage)
  • announcement_type - Category (Feature Update, Security/Compliance, Availability Update, Performance)
  • confidence - Data quality confidence level (high, medium, low)

User Interaction Fields:

  • is_read - Read status flag
  • is_archived - Archive status flag
  • notes - User notes (optional)

Data Ingestion: Data is refreshed daily via automated n8n workflows that scrape and process announcements from provider websites and store them in the Supabase database.

License

Private project