Skip to content

AdamZLi/cloud-pulse

Repository files navigation

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages