A competitive intelligence dashboard for tracking cloud storage announcements across AWS, Azure, and Google Cloud Platform.
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.
- 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
- 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
- Node.js (recommended installation via nvm)
- npm or yarn
- Supabase account
- Clone the repository:
git clone https://github.com/AdamZLi/cloud-pulse.git
cd cloud-pulse- Install dependencies:
npm install- 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
- Start the development server:
npm run devThe app will be available at http://localhost:8080
npm run dev- Start development server with hot reloadnpm run build- Create production buildnpm run build:dev- Create development buildnpm run lint- Run ESLint code quality checksnpm run preview- Preview production build locally
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
The application uses Supabase with a storage_announcements table that includes:
Core Fields:
provider- Cloud provider (AWS, Azure, GCP)title- Announcement titlecontent- Full announcement contentlink- URL to original announcementannouncement_date- Date when the announcement was publishedingestion_date- Date when the announcement was added to the databaselast_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 flagis_archived- Archive status flagnotes- 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.
Private project