Unifying Flutter's Web Presence: How Dart and Jaspr Revolutionized Our Documentation Sites

By

Introduction

For years, Dart and Flutter have empowered developers to build cross-platform apps, including for the web. Yet, paradoxically, the official websites for Dart, Flutter, and Flutter documentation—dart.dev, flutter.dev, and docs.flutter.dev—ran on a patchwork of technologies that had little to do with Dart. That has finally changed. We have migrated all three sites to Jaspr, an open-source, Dart-based web framework. This article explores the motivation behind that move and how it created a more unified, efficient developer experience.

Unifying Flutter's Web Presence: How Dart and Jaspr Revolutionized Our Documentation Sites

The Previous Fragmented Setup

Before the migration, our documentation and marketing sites were built with entirely different stacks. The documentation sites (dart.dev and docs.flutter.dev) were generated using Eleventy, a Node.js-based static site generator. Meanwhile, flutter.dev was powered by Wagtail, a CMS written in Python on top of Django. This fragmentation meant that team members and community contributors had to maintain skills in multiple ecosystems—Node.js for one site, Python for another—just to make edits or add features.

Challenges of a Mixed Technology Stack

Beyond the obvious friction of context switching, the mixed stack limited code sharing. Interactive components, such as code samples or quizzes, had to be implemented separately for each site, often using imperative DOM manipulation. Every new interactive element required significant effort, slowing down our ability to innovate. As our ambitions for richer, more engaging content grew, so did the complexity of maintaining the old setup. We knew we needed a single, unified solution built on the language our team and community already know and love: Dart.

Why Jaspr? Benefits of a Dart-Based Framework

Jaspr is a versatile Dart web framework that supports client-side rendering (CSR), server-side rendering (SSR), and static site generation (SSG). It works with the traditional DOM model—HTML and CSS—yet its component architecture feels instantly familiar to any Flutter developer. Several advantages made it the ideal choice:

Seamless Transition for Flutter Developers

One of Jaspr’s standout features is how smoothly it transfers Flutter knowledge. For example, a simple FeatureCard component in Jaspr looks remarkably similar to a Flutter widget:

class FeatureCard extends StatelessComponent {
  const FeatureCard({
    required this.title,
    required this.description,
    super.key,
  });
  final String title;
  final String description;
  @override
  Component build(BuildContext context) {
    return div(classes: 'feature-card', [
      h3([.text(title)]),
      p([.text(description)]),
    ]);
  }
}

This means that any Dart or Flutter developer can start contributing to the websites without learning an entirely new framework. The learning curve is minimal, and the productivity gain is immediate.

Outcome: A Unified Developer Experience

Today, all three websites run on a single stack of Dart and Jaspr. The migration has:

Conclusion

By rebuilding our websites with Jaspr, we have not only simplified maintenance but also aligned our public web presence with the very language and tools we promote. Developers exploring web development with Dart now have a concrete example of how a single, consistent framework can power everything from static documentation to interactive marketing sites. If you are curious about building web experiences with Dart beyond standard Flutter web apps, Jaspr is a compelling choice.

Related Articles

Recommended

Discover More

GCC 16.1 Arrives with Default C++20 Support, Experimental C++26 Features and New Algol68 FrontendHow to Coordinate Multiple AI Agents in Large-Scale SystemsModernizing Go Code with go fix: A Complete Guide10 Shocking Facts About CrystalX: The Joker of MalwareCrisis in Classrooms: 1 in 7 Teachers Set to Quit or Transfer This Fall