Design your bookings app visually.Get a working native app.

One codebase for iOS and Android: Liquid Glass on iOS 26, Material 3 Expressive on Android. Your coding agent builds it, and the code is yours.

The Menu screen of the generated app, running on iOS 26
iOS 26
The same Menu screen, running on Android
Android

Works with the coding agent you already use

  • Claude Code
  • Cursor
  • Codex
  • VS Code
  • Gemini CLI

Tested with Claude Sonnet: no top-tier model needed.

How it works

From a drawing to an app on your phone. Start to finish.

The first two happen in your browser. The last takes one line in your coding agent.

How it works, in detail
  1. The App Builder with the Bookings starter open: blocks named in plain words on the left, two screens on the canvas
    01

    Pick a starter, or draw your own screens

    Ten real apps to start from, or a blank canvas. Drag blocks onto screens, select several to move them as one, and Tidy up puts the screens in order.

  2. 02

    Draw arrows for tabs, screens and pop-ups

    An arrow from a button to a screen is navigation. Each arrow says whether it opens a screen, pops one up or switches tab, and the app does exactly that.

  3. 03

    Send it to your agent, and run it on your phone

    Paste one line into your coding agent. It builds an Expo project with your screens, then you run it on iOS and Android.

Showcase

Real apps, captured running. Not mock-ups.

Every screen below is a generated app on the iOS simulator and the Android emulator. Pick a starter and sweep across it to compare.

Ten starters that already look finished

Every screen is a real capture of a working app, taken from the code you would export.

AI drafts & approvals4 screens · 3 tabs · iOS and Android

AI drafts & approvals, the Queue screen
Queue
AI drafts & approvals, the Draft screen
Draft
AI drafts & approvals, the Approved screen
Approved
AI drafts & approvals, the Profile screen
Profile

Members & classes5 screens · 4 tabs · iOS and Android

Members & classes, the Timetable screen
Timetable
Members & classes, the Class screen
Class
Members & classes, the Members screen
Members
Members & classes, the Passes screen
Passes
Members & classes, the Profile screen
Profile

Portfolio & holdings5 screens · 4 tabs · iOS and Android

Portfolio & holdings, the Portfolio screen
Portfolio
Portfolio & holdings, the Holding screen
Holding
Portfolio & holdings, the Allocation screen
Allocation
Portfolio & holdings, the Activity screen
Activity
Portfolio & holdings, the Profile screen
Profile

Community & updates5 screens · 3 tabs · iOS and Android

Community & updates, the Notices screen
Notices
Community & updates, the Notice screen
Notice
Community & updates, the Compose screen
Compose
Community & updates, the Directory screen
Directory
Community & updates, the Profile screen
Profile

Orders & menu5 screens · 4 tabs · iOS and Android

Orders & menu, the Menu screen
Menu
Orders & menu, the Dish screen
Dish
Orders & menu, the Rewards screen
Rewards
Orders & menu, the Order screen
Order
Orders & menu, the Profile screen
Profile

Training & compliance4 screens · 3 tabs · iOS and Android

Training & compliance, the Training screen
Training
Training & compliance, the Module screen
Module
Training & compliance, the Tickets screen
Tickets
Training & compliance, the Profile screen
Profile

Jobs & field service5 screens · 4 tabs · iOS and Android

Jobs & field service, the Today screen
Today
Jobs & field service, the Job screen
Job
Jobs & field service, the Board screen
Board
Jobs & field service, the Invoices screen
Invoices
Jobs & field service, the Profile screen
Profile

Inspections & checklists5 screens · 4 tabs · iOS and Android

Inspections & checklists, the Rounds screen
Rounds
Inspections & checklists, the Inspection screen
Inspection
Inspections & checklists, the Sites screen
Sites
Inspections & checklists, the Reports screen
Reports
Inspections & checklists, the Profile screen
Profile

Bookings & appointments5 screens · 4 tabs · iOS and Android

Bookings & appointments, the Diary screen
Diary
Bookings & appointments, the Booking screen
Booking
Bookings & appointments, the Clients screen
Clients
Bookings & appointments, the Services screen
Services
Bookings & appointments, the Profile screen
Profile

Listings & stays5 screens · 4 tabs · iOS and Android

Listings & stays, the Explore screen
Explore
Listings & stays, the Listing screen
Listing
Listings & stays, the Search screen
Search
Listings & stays, the Saved screen
Saved
Listings & stays, the Profile screen
Profile

Templates

Start from an app, not a blank screen.

Each starter opens in the App Builder already wired: tabs, screens and real content to edit.

Browse all templates

Why it works

Native apps, without the guesswork.

Unlike web app builders, opointo makes the app your phone expects: real native controls, real navigation and code you own.

  • Real native controls, not an imitation.

    Apple’s own tab bar with real Liquid Glass on iOS 26. Material 3 Expressive through Jetpack Compose on Android. Two design languages, each the real thing.

    Every component, on both phones
    iOS 26
    Android
  • You own the code, forever.

    Your app keeps working after you cancel. No runtime from us, no phone-home, nothing revoked.

    Plain Expo and React Native source in your repo.

  • The navigation you draw works.

    Arrows become the right tabs, pushed screens and pop-ups, with the tab bar, insets and providers already wired.

    Built on an app shell we test on both platforms.

  • Verified, not guessed.

    verify_app checks what your agent wrote, and the handover refuses to send an unfinished app.

    Starters run end to end on iOS and Android.

  • It stays current.

    As iOS and Android move, your agent can update the components and app shell we supplied.

    Your own code stays yours to change.

  • Knows the traps models don’t.

    Like Liquid Glass that goes blank for good when a view holding it fades out. Our tools catch it in the code your agent writes, the day you generate the app and every day after.

    Free lookup tools, no account needed.

    <Animated.View style={{ opacity: fade }}>
      <GlassView />   // goes blank at opacity 0, for good
    </Animated.View>
    
    <Animated.View style={{ transform: [{ translateY }] }}>
      <GlassView />   // move it instead
    </Animated.View>

For developers

A normal Expo project. Code you can read.

Connect your agent once. Everything it writes lands in your repo as plain React Native.

1. Connect your agent

Run this once in your terminal. It adds opointo to every project.

claude mcp add --transport http --scope user opointo https://opointo.com/api/mcp

2. What it writes

  • app/
  • _layout.tsxwiring
  • index.tsxwiring
  • (tabs)/
  • _layout.tsxverified skeleton
  • menu/3 fileswiring
  • order/2 fileswiring
  • profile/3 fileswiring
  • rewards/2 fileswiring
  • src/
  • assets/22 filescomponents
  • components/21 filescomponents
  • lib/2 filescomponents
  • modules/9 filescomponents
  • navigation/8 filesverified skeleton
  • theme/12 filescomponents
  • DishScreen.tsxyour screens
  • MenuScreen.tsxyour screens
  • OrderScreen.tsxyour screens
  • ProfileScreen.tsxyour screens
  • RewardsScreen.tsxyour screens
  • SettingsScreen.tsxyour screens
  • SplashScreen.tsxyour screens
97 files for the Orders & menu starter: 8 from the verified skeleton, 15 of wiring, 67 of components and 7 screens that are yours.
app/(tabs)/_layout.tsxfrom the verified skeleton
export default function TabsLayout() {  const colors = useThemeColors();   if (Platform.OS === "ios") {    return (      <NativeTabs        tintColor={colors.accent}        minimizeBehavior={TAB_CHROME === "minimize-bar" ? "onScrollDown" : "never"}      >        {TABS.map((t) => (          <NativeTabs.Trigger            key={t.name}            name={t.name}            role={t.role}            listeners={{ tabPress: () => emitTabReselect(t.name) }}          >            <NativeTabs.Trigger.Label>{t.label}</NativeTabs.Trigger.Label>            <NativeTabs.Trigger.Icon sf={t.sf} md={t.md} />          </NativeTabs.Trigger>        ))}      </NativeTabs>    );  }   return (    <Tabs      screenOptions={{ headerShown: false }}      tabBar={(props) => <AndroidTabBar {...props} />}    />  );}

Verified on iOS 26 and on Android 16 with Material 3 Expressive. iOS 27 support is in progress.

  • iOS 26Verified
  • iOS 27In progress
  • Android 16Verified
  • Android 17Not yet
Compatibility

Pricing

Free to design. One simple price to build.

Design as much as you like for free. Pay only when your agent generates the code.

Compare plans

Free

Design everything, with no account and no install.

$0

Free for as long as you like.

Open the App Builder
  • The App Builder, with every starter and block
  • Arrows for tabs, pushed screens and pop-ups
  • Preview your app and tap through it
  • Save projects when you sign in
  • Free lookup tools for your coding agent

FAQ

Questions, answered.

The ones people ask before they start.

All questions

Do I need a Mac?

For iOS, yes: a Mac with Xcode 26 and an iOS 26 simulator or device. Apple gives system controls Liquid Glass when an app is compiled against the iOS 26 SDK, so the toolchain matters, not just the phone. Android needs only the Android SDK and works on any computer.

Cloud build services can compile an iOS app without a Mac, and we still ask for one. Once you add your own database, sign-in, payments or push, you are installing native modules we do not ship, and that is where a Mac stops being optional.

Xcode 27 support is in progress: a project on Expo SDK 56 built with Xcode 27 crashes at launch on iOS 27, so stay on Xcode 26 until our exports move to Expo SDK 57 (expo 57.0.23 or later and expo-build-properties 57.0.20 or later) with ios.enableSceneSupport.

What does the coding agent do?

You press Send app to agent and paste one line into your agent. It calls our tools to create an Expo project with your screens, install the components they use and wire the navigation into an app shell we have already tested on both platforms. Then verify_app checks the project against what it was told to write, so the agent knows when it is finished rather than guessing. You can keep asking it for changes afterwards, the same way you would in any codebase.

What happens if I cancel?

Every app you generated keeps working, forever. The code is in your repo, has no licence check and never contacts us. Cancelling stops the paid parts: generating code with the build tools, pulling components from the registry, and the updates we ship as iOS and Android move. Designing in the App Builder stays free. See Cancellation and refunds.

Is Android really native?

Yes. On Android every component draws Material 3 Expressive through Jetpack Compose, and where Android has a real control (buttons, switches, sliders, chips, the search field, the tab bar) you get that control. iOS gets Apple’s own controls with Liquid Glass on iOS 26. They are two different design languages on purpose, not one look copied onto the other.

Which agents and models work?

Claude Code, Cursor, Codex, VS Code and Gemini CLI each have a setup on the Connect your agent page, and any agent that can add a remote MCP server works the same way. We tested a full build with Claude Sonnet: no top-tier model needed, and our tools used about 2% of the agent’s context.

Can I edit the code?

Yes, all of it. You get a normal Expo project in your own repo: your screens, the components and the app shell, as React Native source you can read and change. There is no runtime from us inside it and nothing that calls home.

Design your app today.
It’s free to start.

No account needed to design. Building for iOS needs a Mac with Xcode 26.