# WritingDeveloper > Personal blog and portfolio by Si Hyeong Lee (이시형) — a solo full-stack developer and entrepreneur who designs, builds, and ships products end to end. > Dev stories, tech tutorials, and the startup journey behind the projects below. ## About - [About (Korean)](https://writingdeveloper.blog/about): Developer and entrepreneur building products with technology. - [About (English)](https://writingdeveloper.blog/en/about): Developer and entrepreneur building products with technology. ## Blog Posts (Korean) - [제 홈서버는 노트북입니다](https://writingdeveloper.blog/blog/building-my-homelab): RTX 4080 노트북 한 대와 Oracle Cloud VM 하나를 Tailscale 사설망으로 묶어 생성 파이프라인과 내부 도구들을 직접 돌리고 있습니다. 무엇을 집에 두고 무엇을 클라우드에 뒀는지, 무엇을 공개하고 무엇을 잠갔는지 정리했습니다. - [발모벽을 고치려고 만든 앱, 아직 못 고친 이야기](https://writingdeveloper.blog/blog/building-dont-touch): 손이 머리로 가는 걸 스스로 인지하지 못한다는 게 발모벽의 진짜 문제였습니다. 웹캠으로 그 순간을 잡아주는 앱 Don't Touch를 만들고, 쓰고, 방치하고, 한 통의 이메일을 받기까지의 정직한 기록입니다. - [어기면 돈이 자선단체로 가는 금주 앱](https://writingdeveloper.blog/blog/building-sobriety-app): 음주측정기를 사서 친구에게 매번 결과를 보내고, 안 보내면 벌금을 내던 시절이 있었습니다. 그 어설픈 장치가 생각보다 잘 작동해서, 이번엔 제대로 만들어보고 있습니다. 실패하면 스테이크가 자선단체로 가는 금주 앱의 설계 기록입니다. - [박사도 아닌 내가 멘탈헬스 앱을 만들어도 될까](https://writingdeveloper.blog/blog/healframe-safety-pipeline): 도서관에서 빌린 책 한 권에서 시작해, 위기 신호를 놓치면 안 되는 AI 파이프라인을 설계하기까지. HealFrame을 만들며 가장 오래 붙잡고 있는 질문은 기술이 아니라 자격에 대한 것이었습니다. - [공개 API가 없어서 만든 '정직한 추정기'](https://writingdeveloper.blog/blog/rentrights-honest-estimator): LA에서 룸쉐어 렌트비가 갑자기 올랐을 때, 저는 그게 합법인지조차 몰라서 그냥 더 냈습니다. 내 주소에 어떤 임대료 규제가 적용되는지 알려주는 공식 API가 없는 현실에서, RentRights라는 오픈소스 추정기를 만든 기록입니다. - [요즘 만들고 있는 것들](https://writingdeveloper.blog/blog/recent-builds-2026): 지난 몇 달간 분야를 가리지 않고 쏟아낸 사이드 프로젝트들을 한자리에 정리했습니다. 무엇을, 왜 만들었는지에 대한 짧은 기록입니다. - [Keystatic CMS 도입기: 파일 기반을 고집한 이유](https://writingdeveloper.blog/blog/introducing-keystatic-cms): 블로그에 CMS를 붙이기로 했을 때, 진짜 문제는 "어떤 CMS냐"였습니다. 콘텐츠의 원본을 내 저장소 밖으로 내보내지 않겠다는 기준으로 Keystatic을 고른 과정과, 도입 후에도 남아 있는 한계를 기록합니다. - [베풂에 대한 생각](https://writingdeveloper.blog/blog/thoughts-about-giving-back): 미국 생활 석 달 반, 받기만 하며 지낸 시간에 대하여. 『권력의 법칙』을 읽다가 오히려 분명해진, 내가 되고 싶은 쪽에 대한 기록입니다. - [ChatGPT로 영어 공부하기, 그리고 영어 면접에서 배운 것](https://writingdeveloper.blog/blog/studying-english-with-chatgpt): 미국에 온 지 두 달째, AI 도구로 영어를 공부하는 방법과 첫 영어 면접에서 깨달은 것들을 적어둡니다. ## Blog Posts (English) - [My Home Server Is a Laptop](https://writingdeveloper.blog/en/blog/building-my-homelab): One RTX 4080 laptop and one Oracle Cloud VM, tied together over a Tailscale mesh, run my generative pipelines and internal tools. Here's what lives at home, what lives in the cloud, what's public, and what stays locked. - [I Built an App to Fix My Hair-Pulling Habit (Not Fixed Yet)](https://writingdeveloper.blog/en/blog/building-dont-touch): The real problem with trichotillomania is that you don't notice your hand going up — so I built Don't Touch, a webcam app that catches the moment. - [I'm Building a Sobriety App That Donates My Money If I Fail](https://writingdeveloper.blog/en/blog/building-sobriety-app): A breathalyzer, a friend, and a fine for every missed reading kept me sober once. Now I'm building it properly: a sobriety app that donates your stake if you fail. - [Should Someone Like Me Be Building a Mental Health App?](https://writingdeveloper.blog/en/blog/healframe-safety-pipeline): It started with a library book and became an AI pipeline that can't miss a crisis signal. My hardest question building HealFrame isn't technical — it's about legitimacy. - [There Was No Public API, So I Built an Honest Estimator](https://writingdeveloper.blog/en/blog/rentrights-honest-estimator): My LA rent jumped and I had no idea whether it was even legal, so I just paid. RentRights estimates which rent-control rules likely apply to a given address. - [What I've Been Building Lately](https://writingdeveloper.blog/en/blog/recent-builds-2026): A roundup of the side projects I've poured out over the past few months, across wildly different domains — a short record of what I built and why. - [Adopting Keystatic CMS — Why I Insisted on File-Based](https://writingdeveloper.blog/en/blog/introducing-keystatic-cms): Adding a CMS to this blog, the real question was which kind. I chose Keystatic on one rule — the source of truth never leaves my repo — plus its limits. - [Thoughts about giving back](https://writingdeveloper.blog/en/blog/thoughts-about-giving-back): Three and a half months into life in the US, a record of a season spent receiving — and how reading The 48 Laws of Power made it clearer, not murkier, what kind of person I want to be. - [Learn English with ChatGPT and experience the use of English in interviews](https://writingdeveloper.blog/en/blog/studying-english-with-chatgpt): My journey of learning English using AI tools and lessons from a real interview experience in the US. ## Projects - [citefirst](https://github.com/writingdeveloper/citefirst): A RAG system that verifies every citation against the retrieved chunks before it ever reaches the screen, and answers the question of retrieval quality by measuring it rather than asserting it. - [toolsmith](https://toolsmith.writingdeveloper.blog): A set of file-conversion tools that run entirely inside the browser, with no upload. - [CoinRace](https://race.writingdeveloper.blog): A Next.js + Turborepo monorepo I assembled to ship many MVPs quickly, and the crypto horse-racing game actually shipped on top of it. - Wishing Stones: An Android game I am building in Unreal Engine 5.8, built around a cairn of wishing stones with night ambience, a kept bell, and round-robin knock sounds. - unitwise: A Chrome extension that overlays normalized unit prices ($/oz, $/fl oz, $/ct) directly onto Amazon, Weee and Target product pages, so comparing across mismatched package sizes stops being mental arithmetic. - Amazon Chat Archiver: A Chrome Manifest V3 extension that records Amazon desktop customer-support chats locally and exports a readable PDF plus a verifiable evidence ZIP. - sitesmith: A pipeline for finding local businesses, building them a static site up front, and pitching it through cold outreach. - [Drymora](https://drymora.writingdeveloper.blog): An evidence-based, bilingual (EN/es-US) sobriety PWA that also ships as an Android app. - [FitCheck](https://fitcheck.writingdeveloper.blog): A web app that scores your outfit honestly from a single photo — rating color, fit, sizing, shoes, and situational appropriateness, then giving blunt advice. - [Studio Apartment](https://studio-apartment.vercel.app): A first-person, photorealistic walkthrough of an old one-bed Taiwanese apartment. - [SiteDeck](https://github.com/writingdeveloper/SiteDeck): A local Electron dashboard that summarizes the key metrics of many Google Analytics 4 properties on one screen. - MarketDeck: A local-first Windows (Electron) tool + MCP I built to manage the marketing readiness of my whole ~40-project portfolio on one screen. - [Liminal Bestiary](https://liminal-bestiary.vercel.app): A gallery of six procedurally-generated low-poly Backrooms horror creatures, built from pure Three.js geometry — no Blender, no textures. - [Notro](https://github.com/writingdeveloper/Notro): A tray companion for Discord free users. - [YouTube Rhythm Game](https://github.com/writingdeveloper/youtube-rhythm-game): A tool that turns any YouTube URL into a falling-lane rhythm game you play in the browser. - [Unclog LA](https://unclog-la.vercel.app): A browser simulator for turning car-centric LA into a transit city. - [shipwright](https://github.com/writingdeveloper/shipwright): An AI-native Next.js + Turborepo starter you assemble and own for shipping many MVPs fast — not a rented SaaS boilerplate, not a black-box fork. - [Kindling](https://kindling.writingdeveloper.blog): An anonymous venting PWA — the successor to Minddump. - studios: A five-modality personal generation factory where Claude drives image, video, 3D, voice, and music through MCP tools — generate → machine gate → inspect the thumbnail directly → retry. - ai-4080-ops: An operations toolkit for driving my 4080 AI server over SSH (via Tailscale). - nag-coach: A personal-productivity program that synthesizes my favorite character's voice to nag me about my to-dos on a tablet PC. - Soursea: AI sourcing assistant SaaS I built while preparing my own sourcing business. - [HealFrame](https://healframe.app): A mental health SaaS I designed around Judith Herman's three-stage trauma recovery model. - [Argus Fusion](https://argus-fusion.vercel.app): A real-time OSINT situational-awareness web app styled as an intelligence watch floor. - [Don't Touch](https://github.com/writingdeveloper/dont-touch-electron): A habit-breaking app I built from my own experience with trichotillomania. - [RentRights](https://rentrights.writingdeveloper.blog): An open-source, bilingual (EN/ES) web app that estimates which rent law protects an LA renter — City RSO, AB 1482, LA County RSTPO, or just-cause — from their address, plus the current legal increase cap and a rent-increase legality checker. - [DevDeck](https://github.com/writingdeveloper/devdeck): An Electron command deck for developers juggling a pile of Claude Code, Codex and Antigravity projects. - [Zodiacly](https://zodiacly.writingdeveloper.blog): A horoscope content platform aimed at the US and Latin American markets, now also an Android app. - [TransitLA](https://transitla.writingdeveloper.blog): A web app for discovering places across Greater LA — beaches, hikes, date courses — reachable without a car. - [Receipt Tracker](https://receo.writingdeveloper.blog): A multi-user PWA that turns a receipt photo into a tidy budget entry — Gemini OCR extracts merchant, total, date, and category. - [Hoverslam](https://github.com/writingdeveloper/hoverslam): A real-physics multiplayer browser game inspired by SpaceX's Mechazilla booster catch. - ComfyUI Web: A self-hosted image and video generation platform that uses Claude Code as an automated prompt engineer — turning Korean or English input into optimized prompts and ComfyUI API-format workflow JSON. - [KL125 Controller](https://github.com/writingdeveloper/kl125-blink): A Windows tray app for the TP-Link Kasa KL125 smart bulb. - [Normandy Cliff Defense](https://normandy-cliff-defense.pages.dev): A WW2 browser FPS/defense game holding the 1944 Normandy cliffs. - Piano Scribe: A local tool that auto-transcribes piano performances from an audio file or a YouTube URL into sheet music (PDF/MusicXML) and MIDI. - [Observer of Lines](https://observer-of-lines.vercel.app): A real-time, participatory web app inspired by the divergence meter in Steins;Gate. - [Growgle](https://growgle-frontend.vercel.app): A local-business review-analysis SaaS: paste a Google Maps or Yelp URL and it scrapes the reviews, analyzes them with AI, and returns scores, keywords, and growth suggestions. - [Mini Games Hub](https://games.writingdeveloper.blog): A web hub collecting several mini-games plus a standalone Socket.io multiplayer server. - [Tantrum Tower](https://tantrum-tower.writingdeveloper.blog): A comedic PS2-retro construction-management game where a hot-tempered foreman bullies incompetent workers into raising a building. ## Project Graveyard - [Project Graveyard (Korean)](https://writingdeveloper.blog/graveyard): A memorial to projects Si Hyeong Lee built and then failed or discontinued — each with its cause of death, an honest post-mortem, and lessons learned. - [Project Graveyard (English)](https://writingdeveloper.blog/en/graveyard): A memorial to projects Si Hyeong Lee built and then failed or discontinued — each with its cause of death, an honest post-mortem, and lessons learned. ## Technical Stack React, Next.js, TypeScript, Tailwind CSS, Three.js / React Three Fiber, NestJS, Node.js, Python, FastAPI, Electron, Expo / React Native, PostgreSQL, Prisma, Supabase, Stripe, Docker ## Links - Website: https://writingdeveloper.blog - Full post text for LLMs: https://writingdeveloper.blog/llms-full.txt - RSS Feed: https://writingdeveloper.blog/feed.xml - Sitemap: https://writingdeveloper.blog/sitemap.xml