From a working screen to your own app

See what you can build on.

Start with a small app whose source you can read in one sitting. Then use the task guides to add the parts your app needs.

A counter with native controls

This is the app from lesson 3, running on macOS with AppKit. A scripted run pressed Add one twice and checked the translated count before capturing the screen.

The capture uses English, the light theme, and an 800 × 640 pixel window at 2× scale. It shows this AppKit build; it does not establish how another target looks or behaves.

Build the tutorial app →

Source and capture record

The tutorial counter running with macOS AppKit controls: Count: 2 and an Add one button.
From the tutorial · macOS / AppKit · Capture details
See the Rust behind this screen
src/lib.rs · tutorial lesson 3
use day::prelude::*;

day::resources!();
day::day_start!(options: res::window_options(), root);

pub fn root() -> impl Piece {
    let count = Signal::new(0i64);

    column((
        label(res::str::counter_value(count)).id(id!(counter_label)),
        button(res::str::add_one())
            .action(move || count.update(|n| *n = n.saturating_add(1)))
            .id(id!(increment_button)),
    ))
    .spacing(Space::M)
    .padding(Space::L)
}

The lesson includes the Fluent catalog and project setup. Generated res::str messages keep text translatable; symbolic IDs let tests find the controls.

Choose a task from your app

Work with local data

Build a tool that saves people’s work between launches.

Storage example →

Connect to a service

Fetch data while handling cancellation, response limits, and errors.

HTTP example →

Explore project sources

These links lead to separately maintained projects. Check each repository’s current build instructions and target support.

Explore the screenshot gallery to see these apps across platforms, languages, and themes.