Solara: A visual system that makes a Python framework feel ready for production.

ThemeVisual design & systems
PlatformWeb
RoleUX Lead — Feature Scoping, Research, Interaction Design, Visual Design, Prototyping
YearQ2, 2024
CollaboratorsIisakki Rotko (SWE), Mario Buikhuizen (SWE), Maarten Breddels (PO), Bobby Liu (PM)

A visual system and documentation experience designed around how Python developers work.

Solara needed a developer experience as capable as its Python framework. As the product team’s sole designer, I redesigned its documentation around how developers find, evaluate and use code. A 100+ component Figma library and 49 semantic color variables connect that journey into one coherent experience, from first visit to reference detail.

Documentation is where a developer decides whether to trust a framework. I redesigned Solara's.

Solara lets developers build web applications in pure Python. For an open-source framework, the documentation is where a developer decides, often within minutes, whether to trust it with production code. Solara had a growing user base (2,000+ GitHub stars), but its reference pages leaned on jargon and lacked a clear browse structure.

I was the sole designer on a five-person product team. I organized the documentation around three developer tasks: finding a function, understanding how to use it, and reporting a problem without leaving the page. A 100+ component Figma library, a semantic color system and seven purpose-specific Figma files gave engineering one consistent reference for that work.

The visual identity and marketing homepage from the same engagement are covered in the Solara marketing site case study.

The redesigned Solara documentation portal.
Solara documentation portal
Impact
Switching between light and dark mode.
The documentation homepage in light and dark.
Documentation homepage in dark modeLightDarkLight: Documentation homepage in light mode. Dark: Documentation homepage in dark mode.

Context

As Solara matured, its documentation had to support enterprise adoption.

Developers often stall when moving a data project from a Jupyter notebook to a scalable web application, because the work belongs to a different discipline. Solara closes that gap. Built on ipywidgets, it runs in Jupyter Notebook, JupyterLab and standalone servers.

Widgetti, Solara's parent company, shipped a well-received major update in Q4 2023, before I joined. As the framework matured, the team began preparing its website and design operation to support enterprise licenses. We researched competitors such as Next.js and Retool.

For the documentation, I benchmarked against Stripe, whose developer docs are a strong example of documentation that helps people evaluate a product as well as use it. I borrowed its structure rather than its look: a three-column page, errors treated as first-class content, and writing organized around the reader's task.

Scoping

A written spec set the scope before any layout did.

I scoped the work in a functional spec shared with product and engineering: goals, non-goals, success measures and risks. I kept it in prose for as long as possible, so engineering and product could challenge the scope without reading a design file, and so no early layout became the model everyone anchored to.

The spec had two goals: make the documentation intuitive to navigate, with a dashboard-like API reference, and keep one cohesive experience across solara.dev. Content creation was explicitly out of scope. That made one boundary important: voice and plain language belonged to content, while taxonomy, browse structure and the distance to the right page belonged to the design. The redesign addressed jargon through that structure.

The UX audit behind the scope.
Solara project scope
Read the spec's measures, risks and market estimates

Success measures

  • Quantitative: longer time-on-page in documentation, lower bounce rate, improved sign-up and trial conversion, and fewer documentation-related support requests.
  • Qualitative: positive feedback from surveys embedded in the documentation, and rising engagement on GitHub and Discord.

Risks and mitigations

  • GitHub-first users might bypass the website entirely, mitigated with bidirectional links between the docs and GitHub.
  • Errors in published code snippets could flood support, prevented with error handling and testing before snippets were published.
  • The error-reporting flow could be abused, deterred with rate limiting and CAPTCHA.
  • Accessibility was a requirement from the start.

Rollout requirement

New components had to integrate with the existing in-house component library and be adopted gradually, so the site could keep running while it changed.

Market estimates

The team sized the opportunity two ways. Top-down, narrowing the $100 billion software market to Python and Jupyter users in data science tooling gave an estimated $10 million market. Bottom-up, 2 million developers, 50% in accessible markets and a 3% adoption rate gave an estimated reach of 30,000 developers. Both are scoping estimates, not outcomes.

The market size evaluation.
Python script calculating Solara TAM — top-down $10M market size and bottom-up 30k developer reach
The project process within its timeline.
Project process within timeline

Research

Developer feedback pointed to three priorities: text logs, code review and onboarding.

A different team had run discovery interviews for Solara's beta launch before I joined. I organized their notes and existing feedback, used them to recruit survey participants, and had a customer-success teammate review my questions before they went out.

Discovery interview feedback.
Discovery interview feedback
Beta launch feedback.
Solara beta launch feedback

Insights

  1. Developers highly value text logs.
  2. A smoother code review process leads to higher developer efficiency.
  3. An efficient onboarding experience makes Solara functions easier to find.

Respondents also named external-facing apps and a mobile app builder as future priorities, so the documentation structure had to scale beyond internal-tool use cases. From there, design reviews with product and engineering set priorities as feedback came in.

Visual Design

Neutral surfaces carry the content; Solara's orange appears on interaction.

Every page follows the three-column documentation convention: navigation rail, reference body and on-this-page anchors. The dark-mode interface, typography, spacing and interaction patterns stay consistent from Quickstart to component reference, all built from the Figma library.

The brand color explains why the interface looks quieter than the brand. Solara's orange is central to the identity, but it fails contrast against light backgrounds and against text at interface sizes. Using it on every button would have meant either an inaccessible page or a duller orange that no longer matched the brand. So neutrals carry critical elements, where contrast requirements are strict, and orange appears on hover and active states, against a known background on an element the developer has already found.

The API reference in dark mode, on desktop and mobile.
Final API reference page for the Button component in dark mode, shown on desktop and mobile — breadcrumb, code signature block, callouts, and an 'On this page' rail
A documentation modal in light and dark.
Documentation modal in dark modeLightDarkLight: Documentation modal in light mode. Dark: Documentation modal in dark mode.

Error Reporting

Error reports and GitHub links sit next to the content they concern.

The strongest research insight, that developers value text logs, shaped the error design. Errors are named in the prose and linked to their explanations. A developer who distrusts a code block can report it from the page it sits on, without leaving the documentation.

Error reporting, filed from the page where the problem appears.
Solara docs content page in dark mode — errors named and linked inline in the prose, with a 'Report incorrect code' modal open over the page, plus the on-this-page rail, related guides, and an 'Edit this page' link out to GitHub

Errors are named and linked inline; the report modal never takes the developer out of the docs. The right rail carries the on-this-page anchor, related guides, and the path back to GitHub.

The footer review interaction.

GitHub links followed the same principle. Most documentation sites pin a GitHub link to the top navigation, which puts an external link in the most prominent position on the page. I placed "Edit on GitHub" in three spots instead: the fixed sidebar, the hover state of each section header, and the feedback block at the foot of every page. Each sits beside the content a developer is reading, so leaving for GitHub comes with a specific reason, such as a correction.

The API page before and after.
API documentation after redesign — component reference pageBeforeAfterBefore: API documentation before redesign — Quickstart page. After: API documentation after redesign — component reference page.
The API and component page interaction.
IA zoning audit of the documentation design: four zones evaluated for spacing and function-by-location separation.
Solara documentation design audit, with four numbered zones marked over the proposed layout
The left pane interaction in the prototype.
The top navbar layout.
Top navbar layout

Responsive Design

Four breakpoints, one template, with each range designed around its worst case.

Every core page was prototyped at four breakpoints: mobile (320–767), tablet (768–1023), desktop and large desktop. That covered the API reference, component dashboard, docs homepage, content pages and Quickstart.

Responsive behavior was specified on the canvas beside the frames. The dev notes defined one fully responsive template, command-bar and frame padding driven by local variables (48px on desktop and tablet, 24px on mobile), and auto-layouts that switched from horizontal to vertical on mobile. Each page carried a "Ready for dev" status.

On desktop, prose columns stayed between 500 and 750px, so wider viewports added margin and figure space rather than longer lines. Because a breakpoint is a range, the notes also said which elements held a minimum width and which could stretch, and wide ranges were shown at both their narrowest and widest points.

The responsive spec: mobile and tablet breakpoints with dev notes.
Docs homepage responsive spec in Figma — mobile and tablet breakpoint frames with 'Ready for dev' badge and detailed dev-note annotations
The documentation portal on mobile.
Solara documentation on mobile — homepage, showcase dashboard, and API button reference across three phone mockups

Design System

Three token-architecture upgrades, each reasonable, together more than one engineer could implement.

As the sole designer, I made the design system's architectural decisions. The token architecture changed three times as the scope grew. I use the specificity ladder from Ridd's Figma Academy 2.0, which I was taking at the time, to describe the stages: value, primitive, semantic, component.

The three stages on the specificity ladder: precision rises from left to right while coverage falls. Ladder concept after Ridd's Figma Academy 2.0.
Diagram of Solara's three-stage token escalation — styles only, semantic variables, then component-level variables with modes — with coverage falling and precision rising across the stages

Stage 1: styles only

The system began with semantically named Figma styles such as bg-base and border-strong, each documented with a hand-maintained light and dark swatch pair. Styles have no mode axis, so dark mode meant maintaining a duplicate palette by hand. That suited the early scope and was archived once the scope changed.

The archived first-stage system: semantic names on a flat architecture.
The archived Figma color style system — semantic background, border, icon, and text boards, each token paired with hand-maintained light and dark swatches

Stage 2: semantic variables

When one brand had to cover both the documentation and the marketing site, I rebuilt the system on variables, with a semantic layer between raw values and usage. The Product Color Palette changelog dates it: "July 4, 2024 — tons of styles → variables."

Stage 3: component-level variables and modes

Dark mode added a mode axis. The "Primitives reversed" collection mapped neutrals/50 in light mode to neutrals/950 in dark, 100 to 900 and so on, so one semantic token produced both themes without duplicate palettes. I then went further, down to component-level tokens such as input-bg.

The course warned that tokens this specific cover less of the system and multiply quickly. I chose them because dark mode seemed worth the precision. The result was 49 semantic colors resolving through 27 mode-aware primitives and 100+ specified components. It was also more than one developer could implement. The components engineering could build cheaply shipped; most of the library stayed in Figma, despite a working Storybook pipeline.

Inside the Figma library: five captures from the system at full depth.

Design Operations

Seven Figma files, each with one job, told engineering which designs to trust.

A standing design review document gave engineering one entry point to every prototype, each at all four breakpoints, and to every design file. The project ran across seven Figma files:

  • Sprint strategy and branding
  • Global UI kit
  • Global components and assets
  • Marketing playground
  • Foundations
  • Style guide
  • Dev handoff

Playground and sprint files were out of development scope. Dev handoff files held the final pages. Foundations held the color and size primitives behind the style guide, and all-caps pages inside a file marked prototypes. While the project was still largely in design, I kept product and marketing color styles in the dev handoff file for convenience, and documented that deviation on the Product Color Palette card.

Team tasks lived in one Google Workspace queue: meeting topics, critique guests and rotating note-taking, groomed during Slack morning warm-ups. I also documented the Figma files, supported UI development in Storybook, ran research in Maze and FigJam, and kept decisions in Slack channels the whole team could read.

The design operation, in overview.
Design operation overview
Strategies for setting up Figma libraries.
Strategies for setting up Figma libraries

Component Specs

Component specs written for the developers who would build them.

Specs lived on the canvas beside the components they governed. The card family is one example: a Big card for marketing pages such as Showcase and a Small card for dense product pages such as the API reference overview, each with a maximum paragraph width (400 vs. 290) and a three-line truncation rule. Status chips marked what was ready, changelogs recorded revisions, and each spec linked to related designs.

Designed for consumption

I didn't optimize component properties for the smallest possible matrix. Collapsing two variants into one clever property can mean fewer components that are harder to use. The most-used components got the most attention, with properties ordered the way designers reach for them; the long tail got correctness. Where two variants were interchangeable, the handoff said so, so developers wouldn't search for a difference that didn't exist.

Annotated for back-end specialists

Solara's implementation sat mostly with back-end specialists, so I annotated further into implementation detail than I would for a front-end team. Ahead of each flow, I answered the questions developers would hit:

  • Does this have a maximum or minimum width?
  • Is this a fixed width or a percentage?
  • What is the copy for the error message?
  • What is the empty state here?
  • What is the logic for when we show toast messages?
  • Which of these fields are required to submit?
Component spec on canvas: the card family.
Figma canvas spec for the card component family — Big card and Small card variants with READY status chips, max-width rules, truncation guidance, changelog, and related-design links
A sample of the design documentation in the handoff process.
Design handoff documentation
Sample dev handoff: the flow.
Sample dev handoff: flow
Sample dev handoff: the components.
Sample dev handoff: components
Testimonial

I had the pleasure of working with Chevis at Solara for over a year, much of that time as his direct manager.

Chevis is an excellent Product Designer who consistently met and exceeded expectations. He worked on various parts of the product, notably taking the initiative on the homepage and API documentation redesign. He effectively handled complex challenges and consistently delivered high-quality results. His strong understanding of user needs and his focus on impactful features rather than just flashy designs made him stand out.

In Solara's fast-paced startup environment, Chevis's adaptability and eagerness to contribute wherever possible were invaluable. He was always willing to step up and take on new tasks, demonstrating a great capacity for learning and growth. Beyond his professional skills, Chevis brought positive energy and a collaborative spirit to the team, making him a joy to work with and fostering a positive work environment.

I highly recommend Chevis. His exceptional design skills, strong work ethic, and positive attitude would be a valuable asset to any team.

Bobby Liu
Bobby LiuSenior Product Manager, Solara

Design Review

Reviews with product and engineering tested the design before handoff.

I took the API reference prototype through structured reviews with engineering and product. We tested the navigation taxonomy, component page structure and handoff specs against how Solara developers search for functions. Survey and interview feedback set page priorities: Quickstart, component reference and GitHub contribution paths came up repeatedly as friction points, and the information architecture changed before visual details were finalized.

By Q2 2024, I presented the prototype at an all-hands, where the team responded positively. The design system gave engineering a shared vocabulary: every screen mapped to a documented Figma component. WCAG 2.1 AA was validated across calls to action and core information in the design.

Testimonial

Very clean look, I like it a lot!

Maarten Breddels
Maarten BreddelsCo-Founder, Solara — documentation design review, Apr 2024
The design review email, Apr 2024: “Very clean look, I like it a lot!”
Design review email from Maarten Breddels, April 2024, praising the documentation design

Outcome

Solara.dev drew 96,231 referral visits in October 2024, much of it through work I led.

In October 2024, solara.dev received 96,231 referral visits from 137 referring websites, led by design communities, developer-software directories and programming resources. I count that as impact my work largely drove, with contributions from the rest of the team. It is not a result of the proposed navigation, which stayed a prototype.

Solara's referral traffic, Oct 2024.
Solara's referral traffic analytics, October 2024 — 96,231 referral visits from 137 referring websites, led by design and developer-software categories

The reviewed prototype, component library and documented interaction patterns gave the team a foundation for continued product work. Later that year, after the marketing site went live, Solara reached 170,000 monthly downloads by November 2024. That milestone belongs to the whole product, especially its framework engineering, and is context for this work rather than a measured effect of it.

Maarten announced the milestone publicly, describing Solara as a framework teams use "as a replacement for Streamlit when an app grows larger and more complex". A Solara tutorial series also appeared on the official Jupyter Blog.

Solara's monthly downloads.
LinkedIn post by Solara co-founder Maarten Breddels showing the monthly-downloads chart peaking at 170k in November 2024

The growth curve, announced by co-founder Maarten Breddels: monthly downloads reaching 170k in November 2024.

The marketing homepage design in dark mode: one sunrise identity carried across Solara's public surfaces.
The Solara homepage design in dark mode — sunrise hero and Python value proposition
Testimonial

He took the initiative on the API documentation redesign and consistently delivered high-quality results.

Bobby Liu
Bobby LiuSenior Product Manager, Solara

Key Takeaways

Bring cross-functional partners in early

When content strategy and engineering constraints arrive in the same conversation, the design stops proposing things that can't be built.

Write the scope before drawing it

The spec's non-goals mattered as much as its goals. Ruling out content creation kept the redesign focused on structure, and the risk register put GitHub-first users, snippet errors and report abuse into the design from the start.

Match system depth to implementation capacity

Each token-architecture upgrade solved a real problem. Together they produced a precise system that one developer could only partly implement, which is now part of how I size a design system.

Related Work