BRIANNA_BRUNNER.exe

// click a folder to open

PROJECTS
ABOUT ME
RESUME.PDF
CONTACT
Portfolio Browser
brianna://
PROJECTS
📚
MARGIN
Reading app for book lovers — notes, quotes, shelves, and sharing.
React TypeScript PostgreSQL PWA
🛸
NASA MN SPACE GRANT
Self-cleaning solar panel station. Autonomous. $500 budget. Minnesota winter.
Hardware IoT Arduino LoRa

MARGIN.
Your books, your thoughts — stitched together.

// WHAT IS IT

Margin is a personal reading companion that connects your highlights, notes, and reviews directly to books. Build a library that's actually yours — organized into reading, read, and want-to-read — then share it with friends who care about books as much as you do.

PWA INSTALL GUIDE
iPhone (Safari): Open link, tap Share, tap "Add to Home Screen"
Android (Chrome): Open link, tap menu, tap "Add to Home Screen"
// HOW IT WORKS
🔍
SEARCH
📡
API FETCH
💾
CACHE
📱
DISPLAY
✍️
NOTES & INSIGHTS
// TECH STACK (hover each)
React + TS
Vite build tool — type-safe frontend with fast HMR from day one
Tailwind + shadcn
shadcn/ui (New York style) for accessible, consistent components without fighting CSS
TanStack Query
Server state, caching, and background refetching — no Redux, no boilerplate
Wouter
Lightweight client-side routing — React Router's vibes, fraction of the bundle size
Node + Express
TypeScript ES modules backend with clean RESTful /api/* routes
PostgreSQL
Primary data store with connect-pg-simple for session storage
Drizzle ORM
Type-safe queries + drizzle-zod means one schema definition flows the whole stack
Open Library API
Free book search with no API key. Google Books as fallback for richer metadata
Replit Auth
OpenID Connect via Passport.js — solid auth without building it from scratch
PWA
Custom service worker: cache-first for static assets, network-only for API calls
Zod
Runtime validation on both ends — drizzle-zod generates schemas straight from DB models
node-cron
Scheduled analytics digests + cache cleanup, delivered via Nodemailer + Gmail SMTP
// SCREENSHOTS
// WHAT I'D BUILD NEXT
  • 01Kindle plugin — auto-import your Kindle highlights directly into Margin
  • 02Multi-language support — read and annotate in any language
  • 03Launch on the App Store as a native app
// LESSONS LEARNED
01
APIS COST MONEY
Google Books API racks up charges fast. Switched to Open Library as primary (free, no key), Google as fallback only. Added caching + a home-grown book DB so common searches never hit the API at all.
02
NAMES MATTER
Initially users only had a username — no display name. Finding and adding friends was a real friction point. Added a name field. Simple fix that should have been there from day one.
03
BUILD THE EXIT
Forgot to let people leave groups or delete misfiled books. Had to go back and add delete/leave functionality post-launch. If you can join, you need to be able to leave.
04
KNOW YOUR USERS
Built a daily email digest: active users, new books added, insights logged. Turns passive curiosity into actual data. Wish I had set this up earlier.
05
INVITES > LINKS
First version of groups required copy-pasting a link via text. Clunky. Built proper in-app invites and friend adding. Adoption went up immediately.
06
THE GROUP BUG
Book clubs only showed books already in your own library — and they wouldn't appear for members who didn't have the same book. Fixed: add any book to a club and it auto-downloads with only your own insights, not your groupmates'.
NASA MN SPACE GRANT.
Keep transmitting. No matter what Minnesota winter throws at you.
// THE CHALLENGE

MN Space Grant Consortium gave us one mission: build a solar-powered weather station that keeps transmitting even when buried in dirt and snow. No grid power. No human help. Just engineering, creativity, and a $500 budget.

// REQUIREMENTS
Powered exclusively by solar panel
Transmit temperature continuously
Transmit humidity continuously
Transmit barometric pressure continuously
One additional data type (UV index)
Autonomous self-cleaning of solar panel
Operate at −10°C without failure
Total cost under $500
// OUR APPROACH
01

SELF-CLEANING MECHANISM

A light sensor on the top and bottom of the panel monitored output. When enough blockage was detected, it triggered a servo motor to drive a wiper arm across the panel surface, clearing debris by mechanical sweep.

02

SENSOR SUITE

Four environmental sensors fed data continuously — temperature, humidity, pressure, and UV index — transmitted via an Arduino Nano.

03

BUDGET DISCIPLINE

Kept the full build under $500 through careful component selection and sourcing.

// MEDIA

Demo video — replace with your embed

YouTube / Vimeo iframe goes here
// WHAT I'D DO DIFFERENTLY
💭 LOOKING BACK
💡

More sensor coverage — We only used a light sensor on the top and bottom of the panel. If both happened to be blocked at the same time, the wiper or rotation wouldn't trigger at all. More distributed sensing — or a different detection strategy — would have made the system more reliable.

💡

Design for the edge case first — The obvious failure mode (partial blockage hitting both sensors) was something we only fully understood in retrospect. Starting with "how does this break?" before "how does this work?" would have changed some early design decisions.

HI! I'M BRI 👋
I absolutely love to learn. I've worked across physical and digital systems — playing with bowl feeders, CAD models, and automating workflows. My coffee order is a miel (espresso, honey, cinnamon, and steamed milk). I've had one in 14 countries and counting. ☕
🛠 THINGS I WORK WITH
CAD / SOLIDWORKS 3D Printing Rapid Prototyping WordPress + CSS n8n Automation Salesforce Dynamics 365 Process Improvement Technical Docs
✈ 14 COUNTRIES & COUNTING
🇨🇴 Colombia
🇨🇷 Costa Rica
🇯🇵 Japan
🇲🇽 Mexico
🇨🇦 Canada
🇧🇿 Belize
🇸🇻 El Salvador
🇫🇷 France
🇬🇧 UK
🇩🇪 Germany
🇨🇿 Czech Rep.
🇮🇹 Italy
🇳🇱 Netherlands
🇦🇪 UAE
🎯 OUTSIDE THE OFFICE
🤿
SCUBA DIVING
Open water certified. Best dives in Belize and Costa Rica.
🎨
WATERCOLOR PAINTING
Still figuring out water-to-paint ratios. Turns out iteration and patience matter here too.
🏚️
HOME RENOVATIONS
There is no better prototyping environment than a room you have to live in afterward.
🧘
YOGA & PUZZLES
One is analog problem-solving, one is meditative movement. Both require more patience than I usually think I have.
📺 CURRENTLY INTO
🌊 Planet Earth — narrated by David Attenborough
📖 Whatever just landed in my Margin library
🗣️ Learning Japanese (slowly, but genuinely)
⬇ DOWNLOAD PDF Brianna_Brunner_Resume.pdf

PDF viewer not supported.
Click here to download.

SAY HELLO

Based in St. Louis Park, MN. Open to roles in engineering, ops, product, and anything that involves building something real. Whether you want to talk shop, swap travel recs, or compare notes on whatever deep dive you've been on lately — I'm here for it.

📞 763-954-0692
[email protected]
SEND A MESSAGE
✓ Message sent! I'll write back soon.
BB♥OS
00:00