UI & UX DESIGN · PUBLIC SECTOR · 2025 - 2026

Altinn Studio

Altinn Studio

Altinn Studio

Altinn Studio is a tool developed by Digdir that lets public sector teams build and publish digital services and forms for Norwegian citizens. Deployment is the final step before a service goes live — and it was also where everything fell apart. I redesigned the deployment experience to introduce continuous validation, clearer sequencing, and an explicit readiness signal.

Due to confidentiality, some visuals have been recreated to reflect the structure and design decisions accurately.

CASE OVERVIEW

SCOPE

Structural analysis, interaction design, validation logic, prototyping

CONTEXT

National public sector platform

COLLABORATION

Product owner, developers, designers, end users

ROLE

UX & UI Designer

TOOLS

Figma, Figma Make (AI-assisted prototyping), Miro

STATUS

Ongoing, validated so far

SCOPE

Structural analysis, interaction design, validation logic, prototyping

CONTEXT

National public sector platform

COLLABORATION

Product owner, developers, designers, end users

ROLE

UX & UI Designer

TOOLS

Figma, Figma Make (AI-assisted prototyping), Miro

STATUS

Ongoing, validated so far

FIRST ENCOUNTER

I first encountered Altinn Studio during an intro course. We were given tasks to complete, forms to build, services to publish. Standard onboarding stuff. I remember sitting there genuinely confused.


When was the app built? When was it published? What had actually happened?


The layout felt strange, the feedback was unclear, and I had no idea whether I had done the right thing or completely broken something.


I first encountered Altinn Studio during an intro course. We were given tasks to complete, forms to build, services to publish. Standard onboarding stuff.I remember sitting there genuinely confused.

When was the app built? When was it published? What had actually happened?


The layout felt strange, the feedback was unclear, and I had no idea whether I had done the right thing or completely broken something.


I left that session frustrated with the UX. I had no idea I was about to be handed the responsibility to redesign the exact page that had confused me.

I left that session frustrated with the UX. I had no idea I was about to be handed the responsibility to redesign the exact page that had confused me.

CHALLENGE

Deploy is the last gate before a service reaches the public. In practice, it was also where things fell apart.

Validation errors appearing only when attempting to publish

Build being interpreted as completion rather than preparation

No clear indication of whether the service was ready to publish

Errors discovered too late in the process

The challenge was reducing late-stage friction and making readiness visible earlier, without disrupting the underlying release logic.

The original deployment page combined build, validation, environments, and publish in one surface.

UNDERSTANDING THE SYSTEM

Feedback from the product owner, designers, and end users shared in Slack confirmed what the mapping suggested: users consistently interpreted a successful build as the final step, not a precursor to publish.

The order is confusing

Users complained that build appears to the right of deploy, even though you build before deploy.

Forgot to deploy after build

Want a visual indicator when there is a newer build that has not been deployed.

Error messages are unclear

Error messages provided little concrete information about what actually went wrong.

Technical info overwhelms

Suggestions to hide technical details so that non-technical users are not overwhelmed.

The hardest part was not the interface. It was the logic underneath it. How does validation know which changes to check? If you share changes and then make new ones, which version gets built?


Finding answers took weeks of discussions with developers and designers. That invisible complexity was exactly the problem users were experiencing. They just did not know it.

The hardest part was not the interface. It was the logic underneath it. How does validation know which changes to check? If you share changes and then make new ones, which version gets built?


Finding answers took weeks of discussions with developers and designers.That invisible complexity was exactly the problem users were experiencing. They just did not know it.

Mapping the relationship between validation, build pipeline, deploy pipeline, and error states.

EXPLORING & PROTOTYPING

I explored several structural approaches before landing on a solution, working through questions like:

When should validation run?

What actually defines readiness?

How do we surface system state without adding noise?

How do we keep publish intentional without adding friction?

I used Figma Make, to test structural ideas early and move faster. The thinking and decisions were mine. Figma Make gave me something tangible to react to earlier in the process than I normally would have. Separating Publish from Environment Management turned out to be the key insight.

I used Figma Make, to test structural ideas early and move faster. The thinking and decisions were mine. Figma Make gave me something tangible to react to earlier in the process than I normally would have. Separating Publish from Environment Management turned out to be the key insight.

From whiteboard to full prototype — mapping all states and flows before implementation.

KEY DECISIONS

01

Separate Publish from Environment Overview

Publish is a guided, intentional action.

Environment management is monitoring and maintenance. Combining them on a single surface forced users to context-switch mid-task. Separating them reduced confusion and gave each action a clear purpose.

Environment overview separated from the guided publish flow, with publishing history and version status.

02

Continuous Validation

Validation now runs in the background at all times. A persistent global indicator shows validation state from anywhere in the application, and a detailed drawer lets users investigate issues without navigating away.

On the Publish page, validation is combined with readiness signals:

Latest commit status

Whether changes have been shared

Current validation state

Build eligibility

Build stays blocked until all conditions are met, and users can see exactly why.

The validation drawer surfaces errors clearly and blocks build until issues are resolved.

03

Explicit Readiness State

Build no longer looks like the finish line. A clear readiness indicator tells users when a service is fully validated and eligible for publishing, removing the uncertainty that was causing errors in the first place.

When there is nothing to build, the interface explains why and guides the user through the correct sequence.

04

Clearer Terminology

The language around build and publish was causing real confusion. Simplified terminology reinforces the correct sequence and makes the system easier to reason about, especially for users who don't work in the platform every day.

OUTCOME

The updated flow gives users continuous visibility into validation state, a clear sequence to follow, and an unambiguous signal before publishing.

My contract ended before the redesign shipped, so I don't have post-release metrics. What I do have is validation from the process itself. The solution was reviewed and approved by developers, designers, and the product owner, and was prioritised for implementation because it addressed issues that had been raised repeatedly by both users and service owners.

The final publish view, environment overview after success, and two-step unpublish confirmation.

IMPACT

Earlier error discovery reduced failed publish attempts

Clearer ownership of configuration steps

Reduced uncertainty before publishing

Stronger collaboration between design and development

Next step is to measure publish error rates post-release to validate long-term impact.

REFLECTION

This project pushed me to think structurally before thinking visually, which is often where the real UX work is in complex systems.

When interfaces sit on top of backend logic, the challenge is not always about layout or components. It is about communicating system state clearly, sequencing actions correctly, and reducing the gap between what the system knows and what the user sees.

Using Figma Make was an interesting addition to my process. It is not a replacement for design thinking, but as a tool for rapid prototyping and early validation, it genuinely sped things up and gave me something tangible to react to earlier than I normally would have.

If I were to continue this work, I would track publish error rates and run a short confidence survey with users after deployment, to see whether the structural changes translated into the outcomes they were designed for.

This project pushed me to think structurally before thinking visually, which is often where the real UX work is in complex systems.


When interfaces sit on top of backend logic, the challenge is not always about layout or components. It is about communicating system state clearly, sequencing actions correctly, and reducing the gap between what the system knows and what the user sees.


Using Figma Make was an interesting addition to my process. It is not a replacement for design thinking, but as a tool for rapid prototyping and early validation, it genuinely sped things up and gave me something tangible to react to earlier than I normally would have.

If I were to continue this work, I would track publish error rates and run a short confidence survey with users after deployment, to see whether the structural changes translated into the outcomes they were designed for.

This project pushed me to think structurally before thinking visually, which is often where the real UX work is in complex systems.

When interfaces sit on top of backend logic, the challenge is not always about layout or components. It is about communicating system state clearly, sequencing actions correctly, and reducing the gap between what the system knows and what the user sees.

Using Figma Make was an interesting addition to my process. It is not a replacement for design thinking, but as a tool for rapid prototyping and early validation, it genuinely sped things up and gave me something tangible to react to earlier than I normally would have.

If I were to continue this work, I would track publish error rates and run a short confidence survey with users after deployment, to see whether the structural changes translated into the outcomes they were designed for.