---
title: Routed Ecosystem
description: Routing, testing, and property-based tooling for Dart applications
---

import Link from '@docusaurus/Link';
import Heading from '@theme/Heading';
import CodeBlock from '@theme/CodeBlock';
import clsx from 'clsx';

const featureCards = [
  {
    title: 'Production Routing',
    description:
      'Declarative routers, controllers, middleware, and view rendering built for real-world HTTP services.',
    link: '/docs/routed/',
    linkLabel: 'Explore Routed'
  },
  {
    title: 'Hotwire Helpers',
    description:
      'Turbo Streams, Stimulus controllers, and response helpers for interactive hybrid apps.',
    link: '/docs/routed_hotwire/',
    linkLabel: 'Routed Hotwire Guides'
  },
  {
    title: 'Server Testing',
    description:
      'Fluent HTTP assertions, WebDriver automation, and transport helpers for Dart services.',
    link: '/docs/server_testing/',
    linkLabel: 'Server Testing Guides'
  },
  {
    title: 'Routed Testing',
    description:
      'Routed-first testing helpers built atop server_testing primitives.',
    link: '/docs/routed_testing/',
    linkLabel: 'Routed Testing Guides'
  },
  {
    title: 'Generative Quality',
    description:
      'Catch edge cases early using property_testing generators, shrinking, chaos suites, and state machines.',
    link: '/docs/property_testing/',
    linkLabel: 'Property Testing Guides'
  },
];

const integrationHighlights = [
  {
    title: 'Turbo Ready',
    text: 'routed_hotwire makes Turbo Streams and Stimulus controllers feel native to your Dart backend.'
  },
  {
    title: 'Testing Toolkit',
    text: 'server_testing unifies in-memory HTTP tests and browser automation with shared handlers.'
  },
  {
    title: 'First-Class Shrinking',
    text: 'property_testing ships deterministic shrinking, chaos suites, and stateful runners that plug into test.'
  },
];

const quickLinks = [
  {label: 'Engine & Middleware', to: '/docs/routed/fundamentals/'},
  {label: 'Storage & Caching', to: '/docs/routed/state/caching'},
  {label: 'Turbo Stream Responses', to: '/docs/routed_hotwire/'},
  {label: 'Test Transports', to: '/docs/server_testing/transports'},
  {label: 'Routed Testing', to: '/docs/routed_testing/'},
  {label: 'Property Testing Generators', to: '/docs/property_testing/'},
];

<header className="hero hero--primary" style={{padding: '4rem 2rem', textAlign: 'center'}}>
  <Heading as="h1" style={{marginBottom: '1.25rem'}}>Everything you need for modern Dart backends</Heading>
  <p style={{fontSize: '1.15rem', maxWidth: '760px', margin: '0 auto'}}>
    Routed is a modular ecosystem that lets you focus on features, not wiring. Build servers with the core
    framework, enhance interactivity with routed_hotwire, and harden quality using property-based tools—all in one place.
  </p>
  <div style={{marginTop: '2.5rem', display: 'flex', justifyContent: 'center', gap: '1rem', flexWrap: 'wrap'}}>
    <Link className="button button--secondary button--lg" to="/docs/routed/">
      Get Started with Routed
    </Link>
    <Link className="button button--secondary button--lg" to="/docs/routed_hotwire/">
      Explore Routed Hotwire
    </Link>
    <Link className="button button--secondary button--lg" to="/docs/property_testing/">
      Try Property Testing
    </Link>
    <a className="button button--primary button--lg" href="https://github.com/kingwill101/routed">
      View on GitHub
    </a>
  </div>
</header>

<section className="container margin-vert--xl">
  <div className="row">
    {featureCards.map((feature) => (
      <div key={feature.title} className="col col--4 margin-bottom--lg">
        <div className="card shadow--md" style={{height: '100%'}}>
          <div className="card__header">
            <Heading as="h3">{feature.title}</Heading>
          </div>
          <div className="card__body">
            <p>{feature.description}</p>
          </div>
          <div className="card__footer">
            <Link className="button button--outline button--primary button--sm" to={feature.link}>
              {feature.linkLabel}
            </Link>
          </div>
        </div>
      </div>
    ))}
  </div>
</section>

## Install the essentials

<CodeBlock language="bash">
{`# Runtime framework
dart pub add routed

# Hotwire helpers
dart pub add routed_hotwire

# Server testing toolkit
dart pub add --dev server_testing server_testing_shelf

# Property-based testing utilities
dart pub add --dev property_testing`}
</CodeBlock>

## Packages at a glance

| Package | What it does | Start with |
| --- | --- | --- |
| `routed` | HTTP engine, routing, controllers, middleware, templating | <Link to="/docs/routed/">Routed docs</Link> |
| `routed_hotwire` | Turbo Streams, frames, and Stimulus helpers | <Link to="/docs/routed_hotwire/">Routed Hotwire docs</Link> |
| `server_testing` | Fluent HTTP assertions, WebDriver integration, CLI helpers | <Link to="/docs/server_testing/">Server Testing docs</Link> |
| `server_testing_shelf` | Shelf adapter for `server_testing` | <Link to="/docs/server_testing_shelf/">Server Testing Shelf docs</Link> |
| `routed_testing` | Routed-specific testing helpers | <Link to="/docs/routed_testing/">Routed Testing docs</Link> |
| `property_testing` | Generators, shrinking, chaos suites, stateful testing | <Link to="/docs/property_testing/">Property Testing docs</Link> |

## Built to work together

<section className="container margin-vert--xl">
  <div className="row">
    {integrationHighlights.map((item) => (
      <div key={item.title} className="col col--4 margin-bottom--lg">
        <div className="card">
          <div className="card__header">
            <Heading as="h3">{item.title}</Heading>
          </div>
          <div className="card__body">
            <p>{item.text}</p>
          </div>
        </div>
      </div>
    ))}
  </div>
</section>

## Quick links

<section className="container margin-vert--lg">
  <div className={clsx('row', 'row--no-gutters')}>
    {quickLinks.map((item) => (
      <div key={item.label} className="col col--4 padding--sm">
        <Link className="card" to={item.to}>
          <div className="card__body">
            <Heading as="h4" style={{marginBottom: '0.25rem'}}>{item.label}</Heading>
            <span style={{fontSize: '0.85rem', color: 'var(--ifm-color-primary)'}}>Read more →</span>
          </div>
        </Link>
      </div>
    ))}
  </div>
</section>

## Stay in the loop

- Track releases, RFCs, and roadmaps on GitHub: [github.com/kingwill101/routed](https://github.com/kingwill101/routed)
- File issues or start discussions if you have ideas, questions, or bug reports.
- Contributions—docs, tests, code—are always welcome. Check the repository for setup instructions and contribution guidelines.
