Pulse TemplateNew
Install, rebrand and theme Pulse, the Fitness App template. Version 1.0.0.
Pulse, a training app with rhythm: a complete Xcode project with a weekly plan, full-screen interval sessions, progress, widgets and three brand presets. This guide takes you from download to a running, renamed app. It covers version 1.0.0. See the screens on its library page.
Requirements
- Xcode 26 and an iOS 17.0 or later deployment target
- Tuist 4 (
brew install tuist) - An Apple Developer team for devices, App Groups and Sign in with Apple. The simulator runs without one.
Install
Download
Included with Swift Pieces Pro. Not signed in? The button takes you to sign in or create an account, then starts the download when you're back. Unzip the archive; it contains one folder, Pulse/.
Make it yours
cd Pulse
scripts/setup.sh --name YourApp --bundle-id com.you.yourapp --preset pulse-neonThe script rewrites the project configuration, renames the paywall product ids, renders the app icon in the chosen preset and runs tuist generate.
Run it
Open YourApp.xcworkspace, choose an iPhone simulator and run the YourApp scheme. The first launch loads sample data so every screen has content.
Rebrand options
| Option | What it sets |
|---|---|
--name | Target, scheme and product name. Letters and digits. |
--bundle-id | The bundle id. The widget, modules, tests and the App Group derive theirs from it. |
--display-name | The name under the icon. Copy that mentions the app reads it at runtime. |
--team | Your Apple Developer team id. |
--preset | The starting brand preset. Also re-renders the app icon. |
--product-prefix | App Store Connect product id prefix. Defaults to the bundle id plus .pro. |
The values live in Tuist/ProjectDescriptionHelpers/AppConfig.swift if you prefer to edit them by hand.
Theming
Pulse reads every color, type size, radius and animation from @Environment(\.spTheme). Its three presets are three different scheme families, so switching changes the whole look: ground, surfaces, color blocks, type and shape. People switch presets and appearance in Settings > Theme, and the widget follows.
| Preset | Id | Look | Type |
|---|---|---|---|
| Pearl | pulse-pearl | Ivory, an iridescent haze and deep jewel art. | SF Pro |
| Neon | pulse-neon | Void black with electric lime and violet. | Geist |
| Graphic | pulse-graphic | Concrete grey, flat primaries, heavy type. | Space Grotesk |
- Blocks:
theme.color.tilesholds each family's solid block colors with the ink that reads on them. Use them for categories, charts and highlights, and keep the accent for the primary action. - Numbers and display type:
theme.type.numeral(64)andtheme.type.display(40)set any size in the family's style, scaling with Dynamic Type. - Backdrop:
SPBrandBackdropdraws the family's motif (contours, scenery, shapes, blobs, rings, the Pearl haze or Confetti's sprinkles) behind hero surfaces. - Liquid Glass:
.spGlassuses glass on iOS 26, Material on iOS 17 and 18, and an opaque surface under Reduce Transparency.
To build your own brand, start from the preset closest to it in BrandPresets.swift, copy it, and change its colors; every role and block pairing should keep 4.5:1 contrast. For a quick start from hues, SPBrandConfiguration.custom(...) builds an accessible palette from three OKLCH hues.
Purchases and accounts
PurchaseStorehandles StoreKit 2: products, purchase, restore and transaction updates. The scheme runs withConfiguration/Products.storekit, so purchases work in the simulator before App Store Connect is set up.- Create the products in App Store Connect with the ids in the project's catalog (the product prefix plus
.yearlyand.monthly). AccountStoresigns in with Apple and keeps the account in the Keychain. People can also continue without an account.- Data lives in SwiftData inside the App Group, so the widget reads the same store. Replace the sample data by conforming your own type to the repository protocol.
Launch arguments
Debug builds accept these arguments for demos and screenshots. Release builds ignore them.
| Argument | Effect |
|---|---|
-SPMockStore | Local purchases with the same plans |
-SPMockAccount | A signed-in sample account |
-SPSkipOnboarding | Open on the home screen |
-SPResetOnboarding | Run first launch again |
-SPResetData | Reseed the sample data |
-SPTab followed by a tab id | Open a tab |
-SPPresent paywall | Present the paywall |
-SPPreset pulse-neon | Start with a preset |
-SPAppearance dark | Force light or dark |
Changelog
1.0.0
2026-10-01
- Tuist project with feature modules (Onboarding, Today, Session, Timer, Progress, Profile) on a shared DesignSystem and the TrainingKit domain module.
- One-command setup: name, bundle id, team, product ids, brand preset and app icon.
- Brand presets Pearl (default), Neon and Graphic with SF Pro, Geist and Space Grotesk display type, switchable in Profile > Theme.
- First run: a welcome where one session's rhythm strip rises like a pulse, your goals as four cover-art blocks, your experience on level bars (which suggests the session length), your training days and length, your week drawn capsule by capsule, training-day reminders and a StoreKit 2 paywall with a
.storekitconfiguration and a mock store for demos. - The native four-tab bar: Today, Timer, Progress and Profile, with no search tab.
- Today on the Plan screen: the program and your place in it, the week as seven capsules sized by minutes (done, planned, missed or rest), the chosen day's session as a block with its rhythm strip and Start, and the moves on a numbered rail with their cues.
- Every session full screen on the Intervals screen's session: each set a work phase in the session's block, rests and changeovers in their own, the moves and sets counted at the top, the whole session as a strip you move through, haptics and count-in tones, hold to end.
- A summary for every session: the time, moves and estimated energy as light numerals, how hard it was on a ten-step effort track and the top sets of the lifts you follow. Saving fills the day's capsule and feeds Progress and the streak.
- Timer on the Intervals builder: Tabata, EMOM, Pyramid, Ladder and Custom, edited with steppers, saved with Pulse Plus and run like any session.
- Progress on the Progress screen: the last seven days, thirty days and year as totals, a load curve you scrub, personal bests with their climb, and the split by focus.
- Profile: where you are in the program and the streak over Settings, with training days, session length, goals, count-in tones, haptics, units, reminders, an Apple Health switch, Pulse Plus, the theme and appearance, and sign out.
- Groundwork, an eight-week program in four phases with sixteen sessions and forty-five moves, fitted to your days and length, and six weeks of sample training with personal bests.
- SwiftData persistence in an App Group behind a repository protocol, with training weeks that run Monday to Sunday.
- Today (small) and Week (medium) widgets, with links to the day's session.
- Light and dark mode, Dynamic Type through the accessibility sizes, VoiceOver labels and adjustable weeks, curves, effort and sessions, Reduce Motion and Reduce Transparency.
- String catalog, unit tests and a first-run UI test.