Inspiration
Current smartwatch designs and the ecosystem is seemingly stuck in 2008, with singleton Watch faces being sold and managed on the playstore or in other app ecosystems.
C-Plane is my response to that. a modular first way of developing, modifying and integrating watch faces to Wear OS devices. Design and modify on desktop, save to your phone and then send to your watch.
What it does
C-Plane is a visual editor for Wear OS watch faces.
It includes three presets that users can copy and edit without changing the originals. The desktop app saves each face locally and builds a complete watch-face package.
The phone app finds the paired watch, checks the package, and transfers it using the Wear OS Data Layer. The watch verifies the package again before loading it with Watch Face Push.
C-Plane keeps one watch-face slot and updates it each time, so it doesn’t fill the user’s watch with duplicate faces.
Scope was cut multiple times in order to meet deadlines. This is very much a barebones MVP of the concept
How I built it
C-Plane has several connected parts:
- A desktop editor built with React, TypeScript, Vite, and Electron.
- A converter that turns supported Watch Face Format XML into HTML.
- A local Python and SQLite backend.
- Kotlin apps for the phone and watch.
- A resource-only watch-face APK with no executable DEX code.
- Wear OS Data Layer and Watch Face Push for deployment.
- A shared
FaceSpecformat for saved faces.
I built the project with Codex and GPT-5.6 across TypeScript, Python, Kotlin, XML, and Gradle.
Codex helped me with developing, testing and iterating on the code based on my plans, ideas and constraints. The constraints were especially important.
GPT-5.6 was used during development. It isn’t part of the finished app, so users don’t need an OpenAI API key.
Challenges
The hardest part was keeping four connected mini-projects consistent.
I created a complete UI wireframe and then deleted it because it no longer matched the product I was building. I had to cut scope repeatedly so I could submit a smaller, polished project instead of many unfinished features.
Working with AI also required constant direction. I had to make plans, review those plans, assign focused tasks, check the results, and refactor the code many times. I ended up needing to delete more code then i kept and constantly had to iterate on it to get my idea for the project through.
What I learned
I learned that wearable development is about coordinating several devices and systems, not just drawing a watch face.
Giving each part one clear job made the project easier to manage:
- The desktop creates and edits faces.
- The backend saves data and tracks builds.
- The phone handles deployment.
- The watch installs and activates the face.
I also learned that validation and clear status messages matter. Users need to know the state of all interacting systems or else its very easy for them to hit buttons and have no clue why something is not working.
Accomplishments
- Built a working desktop watch-face library and editor.
- Created and tested a WFF XML-to-HTML converter.
- Built validated watch-face APKs containing no DEX.
- Transferred an APK from the backend to the phone and watch with matching SHA-256 hashes.
- Loaded and updated one Watch Face Push slot.
- Activated the face on a paired Wear OS emulator.
- Rejected packages with the wrong signing identity.
- Kept the project local, with no accounts, API keys, or hosted services required.
What’s next
The main next steps are:
- Better logging and diagnostics.
- Support for more Watch Face Format XML.
- Better tools for the desktop builder.
- An Android editor that works without the desktop app.
- User accounts and synchronization.
- A marketplace for faces, modules, and themes.
- More advanced customization and theming.
After that, there are roughly 300 more ideas on the list. I had to cut out very large features of this such as proper modular themes baked into the builder tool, the ability to mix and match watchface themes in a easy to do way. And had to cut the AI integration ideas and plugin i had which would have allowed codex to generate and push watch faces through.
Log in or sign up for Devpost to join the conversation.