JACOB HORNUNG · PORTFOLIO

Engineer. Designer.I build the front end and design it too.

I work across front-end code, interface design, and design systems. The three projects below are ones I designed and built end to end.

CLEVELAND, OH · SOFTWARE ENGINEER @ KEYBANK
FIG. 0 · PROJECT INDEX
DOC 01 LOCAL AI CHAT DOC 02FAMILY FOLDERSHARING DOC 03ILLUSTRATEDSTORY SHARING DOC 04 FOILFORM

Selected work

RETURN TO SELECTED WORK

CASE FILE 01 · LOCAL AI CHAT · DESKTOP APP · 2026

A desktop chat app that keeps the model and the history on your computer.

Web search is there when an answer needs something current. It is off by default, and Private Mode removes it entirely.

WHY I MADE IT
I wanted the privacy of a local model without giving up useful, current answers.
WHAT I BUILT
The desktop interface, image uploads, streamed replies, search controls, source links, and privacy mode.

WORKING STATES

Local AI Chat welcome screen in light mode with a green Ollama online indicator INSPECT IMAGE CLOSE IMAGE
EMPTY STATE · The sidebar names the running model and shows it online. The greeting states the search rule before anything is typed, and three starter prompts stand in for an empty history.
Local AI Chat in dark mode with Private Mode enabled, a Local only badge, and Ollama online INSPECT IMAGE CLOSE IMAGE
PRIVATE MODE · Switching it on marks the window “Local only” and repeats the mode inside the message box, so the state is legible from the toggle, the header, and the spot where you are about to type.
Local AI Chat answer with a Searched the web marker and four visible source links INSPECT IMAGE CLOSE IMAGE
WEB SEARCH · A searched answer carries a “Searched the web” tag, and the globe button opens the exact pages behind it. Sources sit next to the claim instead of a footnote.
FIG 01 · LOCAL BY DEFAULT, SEARCH BY CHOICE
01 · YOUR MESSAGEChat and imagesentered in the interface
send
02 · LOCAL APPHistory and settingskept on this computer
ask
03 · LOCAL MODELThe selected model writes the replyQwen 3.5 through Ollama

Search is the exception. When it is on, the app may send a short keyword query. It does not send the full conversation. Private Mode removes the search path entirely.

IMPLEMENTATION · I built the interface without a UI framework and used FastAPI to stream replies over a WebSocket. Ollama runs Qwen 3.5 9B. Conversations and uploaded images stay in local files.

RETURN TO SELECTED WORK

CASE FILE 02 · FAMILY FOLDER SHARING · WINDOWS UTILITY · 2026

A Windows app for sharing a folder with the people in your house.

Add a person, choose a folder, and pick whether they can view or edit it. The app applies the Windows settings underneath.

WHY I MADE IT
I wanted our files in one place at home, reachable from any device, without signing up for anything.
WHAT I BUILT
The setup flow for adding people, sharing folders, and choosing View or Edit access.

SHARING WORKFLOW

Family Folder Sharing Family screen listing Maya and Noah, each with their own password INSPECT IMAGE CLOSE IMAGE
STEP 1 · FAMILY · Each person becomes an account with a password of their own. The screen deals in people and their names, never in Windows user records.
Family Folder Sharing Folders screen showing the FamilyShare folder, its location, and storage use INSPECT IMAGE CLOSE IMAGE
STEP 2 · FOLDERS · A shared folder shows its real path, what it currently holds, and the space left on the drive. Sharing stops from the same row it started in.
Family Folder Sharing Access screen showing Maya can edit and Noah can view the FamilyShare folder INSPECT IMAGE CLOSE IMAGE
STEP 3 · ACCESS · The legend spells out each level before the choice is made: no access, open and copy, or add and delete. Maya can edit, Noah can only view, and changes save as they are made.
FIG 02 · ONE CHOICE, TWO WINDOWS SETTINGS
01 · WHAT YOU CHOOSENo access · View · Editfor one person and folder
apply
once
02A · NETWORK SHARECan the device reach it?Windows calls this SMB
02B · FOLDER ON THE PCCan the person use it?Windows calls this NTFS

Windows checks both settings. A person gets in only when both allow it, so the app writes the same View or Edit choice to each.

IMPLEMENTATION · I mapped View to SMB Read plus NTFS ReadAndExecute, and Edit to SMB Change plus NTFS Modify. Removing access clears both entries.

RETURN TO SELECTED WORK

CASE FILE 03 · ILLUSTRATED STORY SHARING · AUTHOR + READER · 2026

A short illustrated story, passed from one person to one other.

An author writes the panels and a local model draws each one at publish time. The reader moves through them by hand, one at a time.

WHY I MADE IT
Small things happen and nobody stops for them. I wanted to hand one to another person instead of posting it.
WHAT I BUILT
The author tool, publish flow, canvas reader, word-by-word pacing, keyboard controls, and reduced-motion behavior.

FROM MAKING TO READING

Illustrated Story Sharing author showing two Lantern Cabin panels, each with narrative text, a screen reader description, a scene prompt, and finished art at 128 by 72 INSPECT IMAGE CLOSE IMAGE
AUTHOR · Every panel separates three things: the words a reader sees, the description a screen reader gets, and the prompt the local model draws from. Art renders at 128 × 72 and is reviewed before publishing.
Illustrated Story Sharing reader showing the first Lantern Cabin panel beneath a winter night sky INSPECT IMAGE CLOSE IMAGE
PANEL 1 · NIGHT · The picture settles before the text begins, and the cursor is caught mid line. Nothing advances until the reader taps or presses the arrow key.
Illustrated Story Sharing reader showing a second cabin across the valley at blue dawn INSPECT IMAGE CLOSE IMAGE
PANEL 2 · DAWN · The last panel answers the first with a second lit window across the valley, then stops. The story ends where the author left it rather than rolling into another.
FIG 03 · FROM DRAFT TO READER
01 · AUTHORWrite the story in panelsnarration · scene prompt · alt text
publish
02 · LOCAL ARTDraw one frame for each panelStable Diffusion stays on the author’s PC
save
03 · PUBLISHED STORYBundle text and pixel gridsstatic JSON · no model dependency
open
04 · READERReveal one panel at a timetap · arrow keys · reduced motion

The model is part of publishing, not reading. Once the story is saved, the reader opens finished text and artwork without generating anything new.

IMPLEMENTATION · A local Node server generates each scene at publish time. It reduces the image to a 128 × 72 grid with up to 16 colors, then saves two frames for the canvas shimmer.