Zephyr & LVGL C Dev Needed for Smartwatch
Budget / Salary$750–1,500
TypeFreelance project
LocationRemote
Posted2 hours ago
Zephyr and LVGL developer: build 5 navigation models for a smartwatch OS We build MintWatch, a 454x454 round AMOLED watch running our own OS. The firmware is Zephyr with LVGL, written in C, and it builds today for native_sim on a desktop as well as for the watch silicon, so you can do this entire job on your own machine with no hardware. We need five new operating system models added to the existing set. What a model is here A model is not a theme. Our tree already separates the two, and this job is only the first half: Home: what is on the screen when the wearer is doing nothing. A watchface, an app grid, a conversation, a scrolling list of text. These are different devices, not different skins. Navigation: what every gesture does from home. Peers on a line, sheets over a home, cards in a stack, panels on a plane. Palette, rim, and motion live in a separate look table and are out of scope. Two models can share a clock widget and still be different operating systems. They cannot share a navigation model and be different. The contract you implement Each model is one row in a C table plus a small number of static functions: typedef struct { const char *name; const char *tagline; const char *shape; /* one line naming the nav model, for the picker */ uint8_t look; /* which row of the theme table dresses it */ void (*start)(void); /* build the home surface */ void (*gesture)(arc_dir_t dir); /* the whole nav model, from home */ void (*tap)(void); void (*hold)(void); } arc_os_t; start and gesture are built from shell verbs that already exist (arc_shell_home_set, arc_shell_sheet, arc_shell_pop, and the shared view constructors). Reuse the existing views wherever the model allows it. Every real OS ships one clock widget and one list widget; the difference is where they sit and how you reach them. What already exists, so you do not repeat it Fifteen models are in the tree: watchface with edge sheets, a flat line of peers, a card carousel, an app grid as home, a 2D plane of panels, a bezel ring menu, a text console, one ranked card at a time, the assistant as home, widget cards over the face, and four read directly out of shipping open source (InfiniTime, Bangle.js, RebbleOS, Wear-shaped). Your five must each be a genuinely different home and gesture map from all fifteen. Half of ours are proven shapes taken from devices people already own; the rest do not exist anywhere, which is the reason to build them. Both kinds are welcome in your bid. Say which you are proposing and why. Why this matters, and the bar it sets These models are the base set our on-device AI selects from when it composes a custom OS for a wearer during first run. The generator picks an existing model and writes only a new look on top of it, which is exactly what keeps a generated OS from booting to a broken screen. A model that can crash, hang, strand the wearer, or leak on repeated switching is not a rough edge in this system, it is a customer with a dead watch. So the acceptance bar is behavioural, not cosmetic: Builds clean from a pristine build with no new warnings. Runs on native_sim at 454x454. Every gesture from home has a defined result, and every destination returns home. No dead ends and no unhandled directions. Nothing is reachable only by a gesture. Any screen a model introduces must also be findable by reading, through a row in a list. Switch across all twenty models, three passes, with no crash and no growth in allocated objects. Deliverables Five models implemented against the contract above, in the existing C style of the file they join. Any new views the models genuinely require, in the existing visual language: true black ground, six colours, three marks only (arcs for magnitude, hairlines for separation, text for everything else). No cards, chips, filled pills, borders, or rounded rectangles. Screenshots of every model's home and of each screen it can reach, produced with the screenshot tool in the repo. One page per model: the home, what each of the four directions does, what tap and hold do, and two sentences on why it is not one of the fifteen. A patch or branch that applies cleanly to our tree. Who this is for You should be comfortable in C, Zephyr, and LVGL, and have opinions about watch interfaces. This is UI architecture work on a small screen, not driver work. There is no hardware bring-up in this job and no display driver to write. Budget and schedule Fixed price, five milestones, one per model, paid on acceptance of each. Fourteen days from repo access. Propose your own number and schedule in the bid if you disagree with ours. To bid Do not send a template. Send: One watch OS, shipping or open source, whose navigation is not in our list of fifteen, and two sentences describing its home and its gestures. A link to embedded UI work you have written, ideally LVGL. Your price and your days. Work is for hire and assigned to Mint Technologies LLC on payment. Repository access and an NDA go out on award. Florida governing law.
Apply on Freelancer →
Project sourced from Freelancer.com. Applications happen directly on the original platform — we never collect your data.