Boilerplate

A runnable Expo starter for web, iOS, and Android, built with the published Canvas package.

Clone and run

With access to the repository, install and run the starter from its own directory.
sh
git clone https://github.com/bnannier/canvas.git
cd canvas/examples/starter
bun install --frozen-lockfile
bun run web
The terminal prints the web development URL. For a native app, install the matching platform toolchain and boot a simulator or emulator, then run the appropriate command.
sh
bun run ios
# or
bun run android
Native builds require compatible Xcode and CocoaPods on macOS, or the Android SDK and a supported JDK. The starter README contains setup and verification details.

Included flows

A working workspace

Edit a workspace name, choose a city with Autocomplete, and select workstreams. Save updates the summary; validation explains missing values.

Preferences you can try

Switch between system, light, and dark appearance, and control the saved-summary panel. Preview immediately, then save or cancel.

Universal navigation

A Canvas Navbar adapts to smaller screens. A native Drawer hosts its own navigation dropdown, with safe-area and overlay providers in place.
All changes live in React memory. Saving keeps them for the current session; reloading or choosing Reset session restores the sample data. There is no backend or account to configure.

Verify your changes

sh
bun run typecheck
bun run build:web
The production web export is written to dist/. Configure an SPA fallback to index.html when hosting it so direct visits to /preferences resolve correctly.

Make it your app

Start with src/app/index.tsx and preferences.tsx. The root layout supplies SafeAreaProvider, ThemeProvider, overlay hosting and the navigation stack; src/state/session.tsx owns immutable drafts, validation and saved values.
The UI uses Canvas components and semantic props. Typography follows Canvas's default platform/system fonts. No custom Geist assets are loaded, and Text is not globally modified.
For an existing application, install Canvas and its required peers in that app instead. The starter's SDK57 dependencies are a complete Expo application baseline, not a dependency migration recipe.
sh
npm install @nannier/canvas react react-native react-native-svg
The npm package carries its own MIT license. This repository and the starter source remain all rights reserved; the example adds no source license grant.