Juan Manuel Cornejo
Designer | Quito, Ecuador
Available for projects
Product, web, and a little bit of brand too. 23 years in.
From industrial control rooms to human rights databases, from SaaS platforms to ML interfaces.
Old school craft, new school tools.
Design empowered by AI.
Experiencing life, sometimes with a camera. More about me →
I have a few VS Code syntax themes, if you are into that kind of thing. Now available for Cursor on the Open VSX Registry!
Based in Quito, Ecuador (GMT-5)
Available for remote work globally
A macOS desktop app built with Electron to import photos & videos from cameras and SD cards.
Canceled Adobe, so no more Lightroom Classic. I missed the way it imported photos, so I built my own.
Download from GitHub Releases. macOS only.
git clone https://github.com/juanmnl/importer.git cd importer && npm ci npm start # dev mode npm run make # build DMG + ZIP
Node 20+ · macOS · TypeScript + Electron · MIT License
Brand and design system consulting for Uwazi v2, the open-source human rights documentation platform by Huridocs, used by 150+ organizations worldwide. Engaged November 2025 to January 2026.
A tribute to the people who do the work of memory: archivists, researchers, and the materials they've worked with for centuries. Paper, ink, the impression of a letterpress. Calm and editorial by default, color held back for where it counts.
The logo is the wordmark above. These are the marks that stand in for it when the wordmark cannot.
Named for the press. Three for ink and stamp, three for paper stock.
Roboto Mono carries the wordmark, a quiet nod to monospaced records. Inter does the day-to-day reading.
The rebrand extends past the logo into a full art-directed visual language, an homage to print, ink and paper.
The brand carried through to the surface people actually use.
A wine garden in Quito. Built around small-grower bottles, food made for the table, and an outdoor garden that doubles as the dining room.
A full engagement: name, brand, strategy, the website at elencanto-uio.com, on-site pieces (menus, signage, the little stuff that touches a guest), and the operations app the team uses to run service.
A warm dark room. A hand-drawn mark in cream like ink on a coaster. Wine first, then the food that goes with it, then the garden that holds both. Everything tuned to feel like a table you sit down at, not a brand you scan.
A mark and a wordmark that name what the place is.
Wine country at dusk. Deep browns and grass green hold the room. Gold and beige are the candlelight. Accent red is for the bottle you want to remember.
Arboria in two weights for the words, Lindsey for the handwritten touches: chalkboard specials, a flourish on a card.
Photography from the room, the bottles, the table, the people.
The team at El Encanto needed something to run service. I'm building it with them.
The first version is small on purpose. The host takes orders on whatever device is nearest. The kitchen gets a printed ticket and marks it done. The floor watches the state from the same screen. Nobody has to cross the garden to ask where an order is.
Building from scratch means we can shape it to the room instead of fitting the room to someone else's POS.
The flow end to end: a waiter takes the order, the kitchen sees it, the table sees a bill, the night closes out.
Brand and site are live. Operations app is in active build, May 2026.
A Mac app I'm building for the way I actually work. I want to run two or three Claude Code sessions at once, sometimes on the same repo, without them tripping over each other's changes, and decide on permission prompts without window-tagging between terminals.
Operator is the place I launch sessions from. Each one runs in its own embedded terminal, grouped by project, and when an agent needs a decision the prompt floats over whatever app I'm in. I say yes or no without breaking stride.
Cmd+K. Cmd+N for a new session, Cmd+1–9 to switch
Operator configures Claude Code's hooks on launch, but the hook only acts on sessions Operator itself started — it identifies them by the OPERATOR_TERMINAL_ID env var injected into each terminal's environment. A claude run yourself in iTerm or VS Code hits the hook but exits immediately, so Operator stays a session manager, not a machine-wide gateway. If Operator isn't running, the hook fails open and Claude Code works normally.
Electron + React + Vite + Tailwind on the front. Express, better-sqlite3, and node-pty behind it.
In active build, June 2026. Private repo for now.
An interactive terminal in a browser. Type commands to move through the site, change themes, or load a game. The whole thing pretends to be a CRT from 1985 and most of the time you forget it isn't.
A tribute to my first computer, a Commodore 64, and to the command lines I grew up reading.
The portfolio routes you can navigate by command or by URL.
Type the name at the prompt and play. The frame stays in character.
Type theme to cycle, or pick one by name.
Vite + vanilla TypeScript. SVG filter for the CRT barrel distortion. CSS scanlines and color tokens per theme. No frameworks.