Skip to main content

Ovineko

A quiet guardian at the threshold.

ovineko is a collection of tools born from friction. Every package here exists because once upon a time, weeks were spent debugging something you never wanted to rebuild.

When the solution is found — it stays here. Not in notes, not in an old project, not in your head. Here.

See Philosophy for the full story behind ovineko.

Packages

SPA Guard

A family of packages for resilient single-page applications:

PackageDescriptionStatus
@ovineko/spa-guardCore runtime, error handling, schema, i18n for SPAsPublished
@ovineko/spa-guard-reactReact hooks, components, and error boundaries for spa-guardPublished
@ovineko/spa-guard-react-routerReact Router v7 error boundary integration for spa-guardPublished
@ovineko/spa-guard-viteVite plugin and inline scripts for spa-guardPublished
@ovineko/spa-guard-nodeServer-side HTML cache with ETag/304, pre-compression, and i18n (parse5)Published
@ovineko/spa-guard-fastifyFastify plugin for spa-guard beacon endpoint and HTML cache handlerPublished
@ovineko/spa-guard-eslintESLint rules for spa-guard (no-direct-lazy, no-direct-error-boundary)Published

See the SPA Guard Overview for detailed documentation.

Utility Packages

PackageDescriptionStatus
@ovineko/react-routerType-safe wrapper for React Router v7 with valibot schema validationPublished
@ovineko/clean-pkg-jsonZero-config tool to clean package.json before publishingPublished
@ovineko/fastify-basePre-configured Fastify server with Sentry, Prometheus, OpenTelemetryIn Development
@ovineko/datamitsu-configInternal configuration package for datamitsu toolingPrivate

See the Packages Overview for detailed documentation.

Requirements

  • Node.js >= 24.11.0
  • pnpm >= 10.25.0 (enforced by preinstall script)

Only pnpm is allowed as the package manager (enforced via only-allow).

Technology Stack

Core Technologies

  • TypeScript - Type-safe development
  • React 19 - Latest React version for UI components
  • React Router v7 - Modern routing solution
  • Valibot - Runtime validation for type-safe schemas
  • Fastify - High-performance web framework

Build and Development

  • tsup - Fast TypeScript bundler (uses esbuild)
  • vitest - Fast unit test framework (Vite-powered)
  • turbo - Monorepo build orchestration
  • pnpm - Fast, disk space efficient package manager

Code Quality

  • datamitsu - Unified linting orchestrator that runs:
    • oxlint - Fast Rust-based linter (primary)
    • ESLint - Additional JavaScript/TypeScript rules
    • Prettier - Code formatter
    • knip - Unused exports and dependencies detector
    • commitlint - Conventional commit message validation
    • syncpack - Dependency version synchronization
    • gitleaks - Secret scanning

Project Structure

ovineko/
├── spa-guard/ # spa-guard package family
│ ├── spa-guard/ # Core: runtime, error handling, schema, i18n
│ ├── react/ # React hooks, components, error boundaries
│ ├── react-router/ # React Router v7 error boundary integration
│ ├── vite/ # Vite plugin and inline scripts
│ ├── node/ # Server-side HTML cache, ETag/304, i18n (parse5)
│ ├── fastify/ # Fastify beacon endpoint plugin and HTML cache handler
│ └── eslint/ # ESLint rules
├── packages/ # Other publishable packages
│ ├── react-router/ # Type-safe React Router v7 wrapper
│ ├── clean-pkg-json/ # Package.json cleanup tool
│ ├── datamitsu-config/ # Shared config for datamitsu tooling
│ └── fastify-base/ # Pre-configured Fastify server
├── website/ # Documentation site (Docusaurus)
├── turbo.json # Turborepo config
├── pnpm-workspace.yaml # pnpm workspace config
├── datamitsu.ts # Linting/formatting config
├── .syncpackrc.json # Dependency version sync rules
└── lefthook.yml # Git hooks configuration

Contributing

This is a personal monorepo reflecting specific workflows and preferences. Pull requests may be declined if they don't align with the project's direction. Forks are encouraged for different approaches.

See the Contributing Guidelines for more details.