npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@ideodyne/validation-engine

v1.2.5

Published

Modular validation infrastructure for SaaS products - Next.js + pnpm compatible

Readme

@ideodyne/validation-engine

Version 1.1.0 - Modular Validation Infrastructure for SaaS Products

A modular validation infrastructure package that enables rapid idea validation and product launch. Core features are lightweight with no heavy dependencies. Dashboard components are optional and can be added when needed.

🚀 Features

Base Features (v1.0.0)

  • ✅ Waitlist management with referral system
  • ✅ Beta invite system
  • ✅ NPS surveys
  • ✅ A/B experiments
  • ✅ Email sequences
  • ✅ Analytics dashboard

Enhanced Features (v1.1.0)

  • ✅ Anonymous visitor tracking
  • ✅ Beta screening questions with auto-scoring

Tier 1 CRITICAL Features (v2.0.0) 🔥

  • Payment collection (pre-orders) - Stripe integration for deposits
  • Exit intent surveys - Understand why people don't convert
  • Engagement scoring - Predict who will actually use your product

Tier 2 HIGH VALUE Features (v2.0.0) ⭐

  • User interview system - Schedule and conduct customer interviews
  • Pricing sensitivity testing - A/B test price points and willingness-to-pay
  • Behavioral tracking - Return visitor patterns and engagement trends

Total: 8+ powerful validation features in one package

📦 Installation

For pnpm users (recommended):

pnpm add @ideodyne/validation-engine

Important: If using pnpm, add this to your project's .npmrc:

public-hoist-pattern[]=*react*
public-hoist-pattern[]=*react-dom*

This prevents React duplication issues.

For npm/yarn users:

npm install @ideodyne/validation-engine

# or

yarn add @ideodyne/validation-engine

Core Features (Lightweight)

Core features work out of the box with minimal dependencies - no recharts, no heavy UI libraries.

With Dashboard (Optional)

If you want to use the metrics dashboard UI, install recharts:

pnpm add @ideodyne/validation-engine recharts
# or
npm install @ideodyne/validation-engine recharts

Peer Dependencies

Make sure you have these installed:

pnpm add react react-dom next @prisma/client
# or
npm install react react-dom next @prisma/client

Optional peer dependencies (install as needed):

pnpm add resend posthog-js recharts stripe @stripe/stripe-js

🎯 Quick Start

1. Create Configuration

// validation.config.ts
import { defineConfig } from '@ideodyne/validation-engine';

export default defineConfig({
  product: {
    name: 'My Product',
    tagline: 'The best product ever',
    description: 'A description of your product',
    domain: 'myproduct.com',
  },
  
  customer: {
    persona: 'Your target customer',
    painPoint: 'The problem you solve',
    desiredOutcome: 'The outcome they want',
  },
  
  metrics: {
    northStar: 'key_metric',
    activationEvent: 'first_action',
    keyActions: ['action1', 'action2'],
  },
  
  targets: {
    waitlistSignups: 200,
    signupRatePerDay: 5,
    betaUsers: 50,
    activationRate: 0.85,
    npsScore: 40,
    retention30d: 0.60,
  },
  
  integrations: {
    email: {
      provider: 'resend',
      apiKey: process.env.RESEND_API_KEY!,
      from: '[email protected]',
    },
    analytics: {
      provider: 'posthog',
      apiKey: process.env.NEXT_PUBLIC_POSTHOG_KEY!,
      host: process.env.NEXT_PUBLIC_POSTHOG_HOST,
    },
  },
  
  features: {
    waitlist: true,
    betaInvites: true,
    nps: true,
    experiments: true,
    sessionRecording: false,
    visitorTracking: true,
    betaScreening: true,
    preOrders: true,
    exitSurveys: true,
    engagementScoring: true,
    userInterviews: true,
    pricingSensitivity: true,
    behavioralTracking: true,
  },
  
  branding: {
    colors: {
      primary: '#3B82F6',
      secondary: '#8B5CF6',
      accent: '#10B981',
    },
    font: {
      heading: 'Inter',
      body: 'Inter',
    },
  },
});

2. Add Prisma Models

Copy the validation engine Prisma schema into your schema.prisma:

// See full schema in src/prisma/schema.prisma
model WaitlistUser { ... }
model VisitorSession { ... }
model EngagementScore { ... }

3. Wrap Your App

// app/layout.tsx
import { ValidationEngineProvider } from '@ideodyne/validation-engine';
import validationConfig from '@/validation.config';

export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        <ValidationEngineProvider config={validationConfig}>
          {children}
        </ValidationEngineProvider>
      </body>
    </html>
  );
}

4. Add Tracking to Landing Page

// Core tracking - works without recharts
import { 
  VisitorTracker, 
  EngagementTracker,
  WaitlistForm 
} from '@ideodyne/validation-engine';

export default function Home() {
  return (
    <>
      <VisitorTracker />
      <EngagementTracker />
      <WaitlistForm />
      {/* Your content */}
    </>
  );
}

5. Add API Handlers (Optional)

// app/api/waitlist/join/route.ts
import { waitlistJoinHandler } from '@ideodyne/validation-engine/api';

export const POST = waitlistJoinHandler;

6. Add Dashboard (Optional - requires recharts)

// Only import dashboard if you installed recharts
import { ValidationDashboard } from '@ideodyne/validation-engine/dashboard';

export default function AdminPage() {
  return <ValidationDashboard />;
}

📚 Documentation

🏗️ Project Structure

@ideodyne/validation-engine/
├── src/
│   ├── core/          # Core features (lightweight)
│   │   ├── components/ # Tracking, waitlist, UI components
│   │   ├── hooks/      # React hooks
│   │   └── api/        # Core API handlers
│   ├── dashboard/      # Dashboard (optional, requires recharts)
│   │   └── components/ # Metrics UI, charts
│   ├── api/           # API handlers export
│   ├── lib/           # Core business logic
│   ├── types/         # TypeScript types
│   ├── config/        # Configuration system
│   └── prisma/        # Database schema

📦 Module Structure

The package exports three modules:

Core (@ideodyne/validation-engine)

  • ✅ Tracking components (VisitorTracker, EngagementTracker)
  • ✅ Waitlist form
  • ✅ Exit intent modal
  • ✅ UI components (Button, Input, Modal, etc.)
  • ✅ Hooks (useValidation, useEngagement, etc.)
  • ✅ API handlers
  • No heavy dependencies

Dashboard (@ideodyne/validation-engine/dashboard)

  • 📊 ValidationDashboard
  • 📊 MetricsDashboard
  • 📊 Charts and visualizations
  • ⚠️ Requires recharts (install separately)

API (@ideodyne/validation-engine/api)

  • 🔌 Route handlers for Next.js
  • 🔌 waitlistJoinHandler
  • 🔌 visitorTrackHandler
  • 🔌 engagementUpdateHandler
  • 🔌 exitSurveySubmitHandler

🔧 Configuration

See Configuration Documentation for complete configuration options.

🎨 Components

Core Components (Default Export)

  • <VisitorTracker /> - Anonymous visitor tracking
  • <EngagementTracker /> - Engagement scoring tracker
  • <WaitlistForm /> - Email capture form
  • <ExitIntentModal /> - Exit intent survey modal
  • <ValidationEngineProvider /> - Main provider component
  • UI Components: <Button />, <Input />, <Modal />, <Alert />, etc.

Dashboard Components (/dashboard - requires recharts)

  • <ValidationDashboard /> - Main validation overview
  • <MetricsDashboard /> - Metrics overview widget
  • <ValidationScore /> - Score visualization
  • <ExitSurveyInsights /> - Exit survey analytics with charts
  • <StageProgress /> - Validation stage progress
  • <ValidationStatus /> - Validation status display

📊 Features in Detail

Payment Collection (Pre-orders)

Collect refundable deposits to validate true intent. Stripe integration with webhooks.

Exit Intent Surveys

Capture feedback from users who leave without signing up. Understand objections.

Engagement Scoring

Score visitors based on behavior (time on site, pages viewed, scroll depth, etc.).

User Interviews

Schedule and conduct customer interviews with Calendly/Cal.com integration.

Pricing Sensitivity Testing

A/B test different price points and collect willingness-to-pay data.

Behavioral Tracking

Track user journey patterns and identify conversion paths.

🚦 Development

# Install dependencies
npm install

# Generate Prisma client
npx prisma generate

# Run migrations
npx prisma migrate dev

# Build package
npm run build

# Run tests
npm test

💡 Usage Examples

Core Tracking (No Dashboard)

import { 
  ValidationEngineProvider,
  VisitorTracker,
  EngagementTracker,
  WaitlistForm 
} from '@ideodyne/validation-engine';

export default function Home() {
  return (
    <>
      <VisitorTracker />
      <EngagementTracker />
      <WaitlistForm />
    </>
  );
}

API Routes

// app/api/waitlist/join/route.ts
import { waitlistJoinHandler } from '@ideodyne/validation-engine/api';
export const POST = waitlistJoinHandler;

// app/api/visitor/track/route.ts
import { visitorTrackHandler } from '@ideodyne/validation-engine/api';
export const POST = visitorTrackHandler;

Dashboard (Optional)

// Install recharts first: npm install recharts
import { ValidationDashboard } from '@ideodyne/validation-engine/dashboard';

export default function AdminPage() {
  return <ValidationDashboard />;
}

✅ Benefits

  • 🎯 Use core features without heavy dependencies
  • 📊 Add dashboard only when needed
  • 🚀 Faster builds and smaller bundles
  • 🔧 Modular and flexible
  • No dependency conflicts

📝 License

MIT

👥 Author

Ideodyne


Built for rapid SaaS validation. Validate every idea. Build once. Use forever.