Penbook
A social platform for writers and readers, from messaging and live sessions to a writing studio with AI tools, built solo.
- Role
- Solo Engineer
- When
- 2025 - 2026
- Stack
- 1 × Node.js
- 1 × NestJS
- 1 × MongoDB
- 1 × OpenAI
- 1 × React
The job
Penbook was a social network built around books. Writers and readers had their own profiles, public or private, followed each other, posted, messaged one to one and in groups, and went live. Around that social layer sat the reasons to be there: a writing studio for creating books, with AI tools and world-building maps; reading, reading lists and journals; and book clubs that put readers in the same room as the authors.
I built it solo at Bizdesire. That meant the data model, the NestJS API, the OpenAI integration and the React screens that use them. It ran as a live product for a few months; the client has since taken it offline.
One backend, many surfaces
Profiles and privacy, the social graph, posts, messaging, live sessions, writing, reading and clubs share accounts, data conventions and a deployment, but they change for different reasons. A new club feature should not be able to break the editor, and a messaging change should not touch reading.
NestJS modules gave each surface its own boundary inside one deployable. For one engineer, separate services would have been overhead with no payoff. A single unstructured app would have tangled within months. Modules kept the deploy simple and the seams honest.
Data shaped like a book
A story is naturally a document with nested parts, and it is read and saved that way far more often than it is queried across. MongoDB fit that shape without a join for every page view. Indexes followed each surface's own access patterns: the editor loads the part being written, the reader loads what is published, and feeds and club pages read summaries.
AI that stays on the server
The writing tools call OpenAI, and every call goes through the backend. The browser never holds a key. Prompts live in server code, so changing how the assistant behaves is a backend change rather than a front-end release, and usage can be capped per user without trusting the client.
The AI is a tool inside the editor, not the product. Readers could discover, read and join clubs without ever touching it.
The social layer
Every account could be public or private. People followed each other and posted, messaging covered one-to-one and group conversations, and live sessions let writers and readers meet in real time.
Writing, reading and clubs
The writing studio was where books were made: an editor for chapters, world-building maps for the places in a story, and the AI writing tools. Readers read published books, saved them to reading lists and kept journals as they went. Book clubs connected readers with each other and with the authors, and the API kept the paths that lead from a reader back to the writer behind a story.
Questions
- What was Penbook?
- A social platform for writers and readers. People had public or private accounts, followed each other, posted, messaged one to one and in groups, and went live. Writers wrote books in an editor with AI tools and world-building maps; readers read them, built reading lists, kept journals and joined book clubs with other readers and the authors.
- Who built Penbook?
- Abhishek Thakur built it solo at Bizdesire: the data model, the NestJS API, the OpenAI integration and the React front end.
- Why did Penbook call OpenAI from the server instead of the browser?
- Keeping the OpenAI client on the server kept the API key out of the browser, let prompts be changed and versioned without a front-end release, and allowed per-user usage limits that the client could not bypass.
Last updated