{"slug": "show-hn-a-beautiful-web-app-for-writing-novels-and-stories", "title": "Show HN: A beautiful web app for writing novels and stories", "summary": "Brigid, a self-hosted web app for writing novels and short stories, was released on GitHub by developer jpmoo. The app stores manuscripts as structured outlines, supports compiling to Word or PDF, and offers optional local AI features that analyze narrative shape and character archetypes, all running on the user's own hardware with no accounts or subscriptions. The project was primarily built using Claude, an AI assistant, and is available for Linux, macOS, and Windows via install scripts.", "body_md": "A web application for writing novels and short stories that you run on your own hardware or network. Named after the Celtic goddess of poetry.\n\nBrigid keeps your manuscript as a structured outline rather than one long file, so you can move a chapter without cutting and pasting twenty pages. It handles the things a novel needs and a word processor doesn't: parts and chapters and scenes that know what they are, formatting decided once and applied everywhere, compiling to a submission manuscript, and — if you want it — a local AI that reads the book and tells you what shape it has, maps your characters to archetypes, and lets you chat about your work.\n\nNothing leaves your machine or server until you're ready to compile into a Word document or a PDF. There is no account with anyone, no subscription, and no company that can change the terms later. If you use the AI features, the model runs on hardware you control too.\n\n**This is a vibe-coded app. Claude did most of the heavy lifting.**\n\n**A computer to run it on.** A spare Linux box, a Mac, or a Windows machine. It\ncan be the same computer you write on, or another one on your network that you\nreach from a browser. It needn't be powerful — unless you want the AI features,\nwhich want a decent graphics card.\n\n**About twenty minutes**, most of it waiting for downloads.\n\n**Enough comfort with a terminal** to open one, paste a command, and read what\ncomes back. You don't need to know what any of it means. The installers do the\nwork and tell you what they did.\n\nPick your platform. Each installer does the same job: installs what Brigid needs, sets up its database, builds the application, and arranges for it to start automatically when the computer boots.\n\nAll three are safe to run twice. If one stops partway with an error, fix what it complained about and run it again — it checks what is already done and skips it.\n\n```\ngit clone https://github.com/jpmoo/brigid.git\ncd brigid\n./install.sh\n```\n\nIt will ask for your password once or twice. Installing software and setting up a background service both need administrator rights.\n\nYou need [Homebrew](https://brew.sh) first — that page has a one-line install if\nyou don't have it.\n\n```\ngit clone https://github.com/jpmoo/brigid.git\ncd brigid\n./install-macos.sh\n```\n\nOpen PowerShell **as Administrator** (right-click it, choose \"Run as\nadministrator\"), then:\n\n```\ngit clone https://github.com/jpmoo/brigid.git\ncd brigid\nSet-ExecutionPolicy -Scope Process Bypass -Force\n.\\install-windows.ps1\n```\n\nIt asks for the PostgreSQL password — the one set when PostgreSQL was installed. If the script installs it for you, that's the password you were prompted for during that step.\n\nThe Windows installer is newer than the other two and has had less real-world use. If it goes wrong, the Linux and macOS paths are better trodden.\n\nWhen the installer finishes it prints an address, something like:\n\n```\nhttp://192.168.1.40:8090\n```\n\nOpen it in a browser. The first visit asks you to create an account — one username and password, yours, stored on your own machine. Nothing to confirm by email, nothing to verify.\n\nThen make a manuscript and start writing.\n\n**From another computer on your network**, use the address the installer printed\nrather than `localhost`\n\n. If it doesn't load, see *When something's wrong*.\n\nBrigid runs in the background and starts itself when the computer does. You shouldn't need to think about it. When you do:\n\n| Linux | macOS | Windows | |\n|---|---|---|---|\nUpdate |\n`./restart.sh` |\n`./restart.sh` |\nsee below |\nRestart |\n`sudo systemctl restart brigid` |\n`sudo launchctl kickstart -k system/com.brigid.app` |\n`Restart-ScheduledTask -TaskName Brigid` |\nSee logs |\n`journalctl -u brigid -f` |\n`tail -f data/brigid.log` |\nTask Scheduler → Brigid |\nStop it |\n`sudo systemctl stop brigid` |\n`sudo launchctl bootout system /Library/LaunchDaemons/com.brigid.app.plist` |\n`Stop-ScheduledTask -TaskName Brigid` |\n\nUpdating on Windows:\n\n```\ngit pull; pnpm install; pnpm build:web; pnpm db:migrate; Restart-ScheduledTask -TaskName Brigid\n```\n\nBrigid backs itself up nightly — by default at 1am, keeping the last ten. You\ncan change that, take one immediately, or download one, under **Settings →\nBackup**. Restoring can bring back a single manuscript or everything.\n\n**Keep a copy somewhere else as well.** A backup living on the same disk as the\nthing it is backing up is not really a backup. Downloading one now and then and\nputting it wherever your other important files go is enough.\n\nOptional, and off until you set them up. Brigid can read your manuscript and\ntell you about its shape and its characters. It uses\n[Ollama](https://ollama.com), which runs a language model on your own hardware,\nso the manuscript is never sent anywhere.\n\n- Install Ollama on the machine with the best graphics card — the same one as Brigid, or another on your network.\n- Download a model:\n`ollama pull qwen2.5:14b`\n\n, or any model you prefer. - In Brigid, open\n**Settings → Ollama**, enter the address (usually`http://localhost:11434`\n\n), press Connect, and choose the model.\n\nBrigid works out how much that model can hold and uses all of it, rather than the much smaller default Ollama would otherwise serve.\n\nOnce connected, Brigid **reads the manuscript** in the background, section by\nsection. On a novel that takes roughly an hour. You can carry on writing while\nit happens, and it keeps up with your edits by itself.\n\nWhen it finishes, three tools appear under **Project Settings → AI**.\n\n**Story shape** rates the manuscript against seven narrative frameworks —\nHero's Journey, Freytag's Pyramid, Three-Act, Save the Cat, the Story Circle,\nKishōtenketsu, and Seven-Point — judged on where your turns actually fall rather\nthan on whether they exist at all. A weak fit to all seven is a legitimate\nfinding, not a failure.\n\n**Characters** profiles each character on ten role axes drawn from Vogler and\nPropp — Hero, Mentor, Shadow, Trickster, Ally and so on — as a radar chart whose\n*shape* describes their function in the story. Before anything is profiled you\nreview what the reading gathered: every recorded action can be moved to whoever\nactually did it, reworded, or thrown out. Nothing is scored on a record you\nhaven't approved.\n\n**Chat** discusses the manuscript with you, drawing on everything above plus the\nactual passages your question bears on — so it can talk about your sentences as\nwell as your structure.\n\nThe model is a reader, not an authority. It will sometimes be confidently wrong about your book, and it has no idea what you are trying to do.\n\nEvery score above the lowest is backed by the specific events it rested on, and those are shown so you can check them. That is deliberate: a profile whose evidence you cannot inspect is a profile you should not trust. When something looks wrong, look at what it rested on — often the answer is that the reading misattributed an action, which you can correct.\n\nTreat all of it as one attentive reader's opinion, which is exactly the weight it deserves.\n\n**It doesn't load from another computer.** Brigid is probably running fine and\nthe machine's firewall is in the way. The Linux and Windows installers try to\nopen the port; macOS may prompt you to allow incoming connections the first\ntime, and you have to say yes.\n\n**It worked yesterday and doesn't now.** Look at the logs — the table above says\nhow. The usual cause is PostgreSQL not having started; restarting the machine\ngenerally sorts it, and Brigid waits for the database rather than giving up.\n\n**The AI says the model timed out.** Usually the model is bigger than the\ngraphics card can comfortably hold, so it spills into ordinary memory and runs\nmany times slower. A smaller model is the fix.\n\n**The reading is taking forever.** Roughly a minute a section, so a long novel is\nan hour or more. You can stop it and pick it up later — **Characters → Stop\nreading** — and nothing already read is lost.\n\n**Anything else.** The logs almost always say. They are in plain English, and\nthe last twenty lines are usually enough.\n\nIn PostgreSQL, on your own machine, in a database called `brigid`\n\n. The\napplication's settings live in `.env.local`\n\nand `data/brigid.config.json`\n\ninside\nthe folder you cloned.\n\nNothing is in the cloud, because there isn't one. That is the point of Brigid, and it is also why the backups are your responsibility rather than someone else's.\n\nTo do it by hand, or to run Brigid behind a reverse proxy — including under a\nsubpath like `example.com/brigid`\n\n— see [docs/deploy.md](/jpmoo/brigid/blob/main/docs/deploy.md), with\nthe systemd unit in [deploy/brigid.service](/jpmoo/brigid/blob/main/deploy/brigid.service).\n\nBrigid is a pnpm workspace: a Fastify server and a React client, TypeScript\nthroughout, PostgreSQL underneath with hand-written numbered migrations. The\ndesign notes are in [docs/brigid-spec.md](/jpmoo/brigid/blob/main/docs/brigid-spec.md).\n\n```\npnpm dev:server   # and, in another shell, pnpm dev:web\n```\n\nVite proxies `/api`\n\nto port 8090, so the session cookie behaves exactly as it\ndoes in production.\n\nMIT — see [LICENSE](/jpmoo/brigid/blob/main/LICENSE). Use it, change it, run it, share it. It comes with\nno warranty, which for something holding a novel is worth reading as: keep your\nown backups.", "url": "https://wpnews.pro/news/show-hn-a-beautiful-web-app-for-writing-novels-and-stories", "canonical_source": "https://github.com/jpmoo/brigid", "published_at": "2026-08-03 11:30:23+00:00", "updated_at": "2026-08-03 11:54:31.579104+00:00", "lang": "en", "topics": ["ai-tools", "generative-ai"], "entities": ["Brigid", "jpmoo", "Claude", "GitHub", "Homebrew", "PostgreSQL"], "alternates": {"html": "https://wpnews.pro/news/show-hn-a-beautiful-web-app-for-writing-novels-and-stories", "markdown": "https://wpnews.pro/news/show-hn-a-beautiful-web-app-for-writing-novels-and-stories.md", "text": "https://wpnews.pro/news/show-hn-a-beautiful-web-app-for-writing-novels-and-stories.txt", "jsonld": "https://wpnews.pro/news/show-hn-a-beautiful-web-app-for-writing-novels-and-stories.jsonld"}}