PROJECT NOTES
PublishedThe Book Nook
Reading web application
A Gothic reading app with a cinematic book-to-desk interaction, private shelves and a personal reading journal.
- Project type
- Independent application
- My contribution
- Concept, design & testing

PROJECT AT A GLANCE
The idea and the experience.
Who it is for
Readers discovering books and organizing their reading.
The problem explored
Connect an expressive reading room with useful discovery and private account-based tools.
What it demonstrates
- Public book search and detail pages
- Optional book-to-desk interaction
- Personal shelves and journal with an account
A CLOSER LOOK
Inside the experience.
Select a screenshot to see the details.
THE TECHNOLOGY
- Next.js
- React
- TypeScript
- Tailwind CSS
- Drizzle
- PostgreSQL
- Better Auth
- PGlite
- Neon
- Vercel
Project overview
The Book Nook is a literary web application that connects book discovery with private reading tools. A Gothic library gives the product a distinct atmosphere; shelves, edition-aware progress and a personal journal give readers practical reasons to return.
The portfolio demo is hosted on Vercel with Neon PostgreSQL. The source repository is private.
My contribution
- Concept: a reading application that connects discovery with personal shelves and a journal.
- Design: the Gothic visual direction and presentation of the reading experience.
- Testing: review and testing of the experience as it developed.
The challenge
Make a reading app feel like a place to spend time, while keeping discovery and personal organization clear. The experience needed to connect a visually expressive reading room to dependable account-based features, rather than stopping at an attractive landing page.
A connected reading journey
Readers can search and filter the catalog, open a book, save it to their library, track their place and write a private reflection. Favorites are independent of reading status, and pausing a book preserves progress.
Selecting a cover begins the signature book-to-desk transition: the volume lifts from the catalog, lands on an antique desk and opens into its detail page. Skip, Escape, replay and reduced-motion behavior keep the interaction optional. The open book is a visual title page, not a licensed ebook reader.
The architectural scenes were generated for this project and do not represent verified real locations. The cover illustrations are original project artwork. The screenshots show the actual interface, including the mobile reading room and a catalog search.
Explore the demo
Browse the public catalog, search for a title or author and open a book to experience the book-to-desk transition.
The reading room, catalog and book detail pages are public. Personal shelves and journal features require an account.
Architecture and data
Next.js App Router and React provide the application and interface. TypeScript and Tailwind CSS support its implementation. Better Auth manages accounts and server sessions; Drizzle connects the application to PostgreSQL.
Local development uses PGlite, while the deployed demo uses Neon through the PostgreSQL driver. Both environments use the same schema and queries. Hosted migrations are explicit release steps, separate from ordinary requests.
Public discovery and protected reader tools share one application, with account ownership enforced in server-side queries. Zod validates incoming actions, and database constraints cover relationships, progress ranges and uniqueness rules.
Decisions that matter
- Progress belongs to an edition. Page-based tracking requires a known page total for the selected edition. Other editions use reader-entered percentages instead of an invented work-level page count.
- Private writing stays separate from public reviews. Journal entries are private. Publishing a review is an explicit action, with moderation and reporting support.
- Removing a shelf entry preserves writing. A reader can reorganize their library without losing a reflection linked to the same book.
- Saving is deliberate and recoverable. The journal uses explicit saves, tab-scoped draft recovery and version checks to handle stale edits.
- Motion supports navigation. The cinematic transition includes escape and reduced-motion paths; essential controls remain ordinary interface elements.
Validation evidence
The project's delivery report, dated 22 October 2026, records four domain tests, 39 isolated PostgreSQL integration checks and 20 hosted smoke checks, alongside type checking and a production build. The documented coverage includes account isolation, progress rules, journal conflicts, review consent and moderation.
These are recorded results from the original project's verification. This portfolio update checked the demo homepage, reviewed the implementation and reused the documented interface screenshots; it did not rerun the original application's account-creating test suite.
Trade-offs and next steps
The local embedded database supports one application process at a time. Catalog tags and collection membership use a bounded text/JSONB model; a larger editorial operation could justify further normalization.
Email verification and email-based password recovery require a mail provider. Public reviews are gated until an administrator is provisioned. Broader monitoring, backup drills and independent accessibility or security review remain separate service-launch work.
The project demonstrates a deployed reading experience. No commercial outcomes, community activity, field performance results or security certifications are claimed.
LET’S TALK ABOUT YOUR PROJECT
Have a similar project
in mind?
Share your idea or existing website. We’ll clarify what you need and whether I’m the right fit.
Discuss a Similar Project