Technical Briefing: Rittman Analytics Website

    Executive Summary

    The Rittman Analytics website is a modern React-based web application built for scalability, content management, and external integrations. It serves as both a marketing platform and a content hub with dynamic capabilities for programmatic content generation and API integrations.

    Core Technologies Stack

    Frontend Framework

    • React 18.3.1 with TypeScript for type safety
    • Vite as the build tool and development server
    • React Router DOM 6.26.2 for client-side routing
    • TanStack React Query 5.56.2 for server state management and caching

    Styling & UI

    • Tailwind CSS with custom design system tokens
    • Shadcn UI component library with custom variants
    • Radix UI primitives for accessibility
    • Lucide React for iconography
    • Inter font family from Google Fonts

    Backend & Database

    • Supabase as the Backend-as-a-Service platform
    • PostgreSQL database with Row Level Security (RLS)
    • Supabase Edge Functions for serverless API endpoints
    • Supabase Storage for file management

    Analytics & Integrations

    • Segment Analytics for event tracking
    • Google Analytics (G-M1P5TSNCVM)
    • HubSpot integration for lead management
    • Calendly widget for meeting scheduling
    • ConvertBox for lead capture

    Database Architecture

    Core Tables

    1. blog_posts - Content management for blog articles
    2. podcast_episodes - Podcast content with audio file management
    3. case_studies - Customer success stories
    4. profiles - User profile data
    5. podcast_settings - RSS feed configuration

    Security Model

    • Row Level Security (RLS) policies on all tables
    • Email-based access control for Rittman Analytics team (@rittmananalytics.com)
    • Public read access for content tables
    • Authenticated user restrictions for content creation/editing

    Programmatic Content Capabilities

    Current API Integrations

    The site has several edge functions for automated content management:

    1. RSS Import Function (import-rss)
      • Automatically imports blog content from external RSS feeds
      • Processes HTML content and metadata
      • Stores imported content in the database
    2. Podcast RSS Import (import-podcast-rss)
      • Imports podcast episodes from RSS feeds
      • Handles audio file metadata and iTunes-specific fields
      • Manages episode numbering and categorization
    3. Auto-Tagging System (auto-tag-post)
      • Uses OpenAI API to automatically generate tags for content
      • Analyzes content and suggests relevant categories
      • Supports both individual and bulk tagging operations
    4. Audio File Linking (link-audio-files)
      • Links podcast episodes to hosted audio files
      • Manages audio file metadata and URLs
    5. Episode Number Parser (parse-episode-numbers)
      • Extracts and standardizes episode numbers from titles
      • Ensures consistent episode numbering across the podcast feed

    External API Integration Patterns

    Edge Function Structure

    // Standard pattern for external API calls
    import { serve } from 'https://deno.land/std@0.168.0/http/server.ts'
    
    const corsHeaders = {
     'Access-Control-Allow-Origin': '*',
     'Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type',
    }
    
    serve(async (req) => {
     try {
     // Get API key from Supabase secrets
     const apiKey = Deno.env.get('EXTERNAL_API_KEY')
     
     // Make external API call
     const response = await fetch('https://external-api.com/endpoint', {
     headers: { 'Authorization': `Bearer ${apiKey}` }
     })
     
     const data = await response.json()
     
     // Process and return data
     return new Response(JSON.stringify(data), {
     headers: { ...corsHeaders, 'Content-Type': 'application/json' }
     })
     } catch (error) {
     return new Response(JSON.stringify({ error: error.message }), {
     status: 500,
     headers: { ...corsHeaders, 'Content-Type': 'application/json' }
     })
     }
    })

    Secrets Management

    • API keys stored securely in Supabase Edge Function Secrets
    • Current secrets include: OpenAI API key, Supabase credentials
    • New secrets can be added via Supabase dashboard

    Content Generation Capabilities

    AI-Powered Content

    • OpenAI integration for content enhancement
    • Automatic tag generation based on content analysis
    • Potential for AI-generated summaries and descriptions

    RSS and Feed Processing

    • Automatic content import from multiple RSS sources
    • Content deduplication and normalization
    • Metadata extraction and enrichment

    Dynamic Content Features

    • Podcast RSS feed generation (/drilltodetail/rss.xml)
    • SEO-optimized URL structures for blog posts
    • Date-based and slug-based routing for content

    Site Structure & Architecture

    Page Organization

    src/
     pages/
     Index.tsx # Homepage
     About.tsx # Company information
     Services.tsx # Service overview
     services/ # Individual service pages
     solutions/ # Industry-specific solutions
     partners/ # Partner integration pages
     Blog.tsx # Blog listing
     BlogPost.tsx # Individual blog posts
     Podcast.tsx # Podcast listing
     CaseStudy.tsx # Case studies
     case-studies/ # Individual case study pages
     components/
     ui/ # Shadcn UI components
     navigation/ # Navigation components
     blog/ # Blog-specific components
     [feature-components] # Feature-specific components
     services/
     analytics.ts # Segment integration
     calendly.ts # Meeting scheduling

    Navigation Structure

    • Services: Data platform development, team enablement, embedded analytics, technical consulting
    • Solutions: Industry-specific offerings (FinTech, EduTech, Marketing Analytics, etc.)
    • Partners: Technology partner pages (Google Cloud, Cube, dbt Labs, etc.)
    • Resources: Blog, podcast, case studies, methodology

    Routing Configuration

    • Dynamic routing for blog posts with date-based and slug-based URLs
    • Catch-all routing for flexible content management
    • Service redirects for URL consistency

    Development & Deployment

    Development Environment

    • Local development with Vite dev server
    • TypeScript for type safety
    • ESLint for code quality
    • Hot module replacement for rapid development

    Build Process

    • Vite for optimized production builds
    • Asset optimization and minification
    • TypeScript compilation
    • Tailwind CSS purging for minimal bundle size

    Deployment Platform

    • Hosted on Lovable platform
    • Automatic deployments from code changes
    • CDN distribution for global performance

    Content Management Capabilities

    Blog Management

    • Rich text content with HTML support
    • Image integration with Supabase storage
    • Tag-based categorization
    • RSS feed generation
    • SEO-optimized metadata

    Podcast Management

    • iTunes-compatible RSS feed generation
    • Audio file hosting via Supabase storage
    • Episode metadata management
    • Automatic episode numbering

    Case Study Management

    • Structured data for customer stories
    • Logo and image management
    • Technology and service tagging
    • Sponsor quote integration

    Extensibility & Future Capabilities

    API Integration Potential

    The architecture supports easy addition of:

    • CRM integrations (Salesforce, HubSpot API)
    • Marketing automation platforms
    • Social media APIs
    • Analytics platforms beyond current integrations
    • E-commerce platforms
    • Email marketing services

    Content Automation Opportunities

    • Automated social media posting
    • Newsletter generation from blog content
    • SEO content optimization
    • Competitive analysis integration
    • Industry news aggregation
    • Client portal integrations

    Scalability Considerations

    • Supabase can handle significant traffic growth
    • Edge functions provide serverless scalability
    • CDN integration ensures global performance
    • Database optimization through proper indexing and RLS policies

    Security & Compliance

    Data Protection

    • Row Level Security on all database tables
    • Secure API key management via Supabase secrets
    • CORS configuration for secure cross-origin requests
    • Authentication-based content management

    Performance Optimization

    • React Query for efficient data caching
    • Lazy loading for code splitting
    • Optimized images and assets
    • Minimal bundle sizes through tree shaking

    Monitoring & Analytics

    Current Tracking

    • Segment Analytics for comprehensive event tracking
    • Google Analytics for traffic analysis
    • Calendly event tracking for lead conversion
    • Console logging for development debugging

    Performance Monitoring

    • Built-in error boundaries for React error handling
    • Network request monitoring capabilities
    • Console log access for debugging

    This technical architecture provides a solid foundation for scalable content management, external API integrations, and programmatic content generation while maintaining security and performance standards.

    How it starts

    From first call to first insight

    1

    Discovery call: 30 minutes

    We listen, ask the awkward questions, and tell you whether we can help.

    2

    Discovery & strategy sprint: 2-4 weeks

    We map your stack, model the business questions, and hand you a costed roadmap you could run without us.

    3

    Agile delivery: 2-week sprints

    A named senior team builds alongside yours, transferring knowledge as it goes.

    Ready to build a data function that drives growth?

    A discovery call is the first step to understanding if we're the right fit to move your data capabilities forward.

    See client results ›

    45 minutes · no obligation · you'll speak with a founder, not sales

    Mark Rittman, CEO of Rittman AnalyticsLewis Baker, COO of Rittman Analytics

    What happens on the call

    with Mark Rittman, CEO or Lewis Baker, COO - not a salesperson

    • We ask about your stack, your team and what you're trying to achieve.
    • You get a clear read on where you are, and what we'd do next, whether or not that involves us.
    • No pitch deck. If we're not the right fit, we'll say so and point you somewhere better.