Current Status
IdeaHub Alpha is currently live and being used for capturing product ideas and thoughts. It now includes an Inbox for universal thought capture and supports PWA install with read-only offline access.
Problem
Product ideas and thoughts related to them were scattered across multiple applications and notes.
Context was getting lost.
Technical Decisions
1. Centralized Authentication
Integrated Auth Service to keep authentication centralized across personal products.
2. Soft Delete
Implemented soft delete for product ideas.
Why?
If a user accidentally deletes a product idea, they should not lose all associated thoughts.
Benefit
Projects can be restored from Bin.
3. Universal Thought Capture (Inbox)
Added a dedicated Inbox page so users can capture thoughts without first navigating into a specific product or idea. Captured thoughts can be organized into ideas later.
Capturing and organizing should not be forced into a single step — separating them reduces friction in the capture process.
IdeaHub Inbox — capture thoughts quickly and organize them into ideas later
4. PWA Install & Offline Read
The app is installable (add to home screen / download) and cached pages remain browsable offline.
Write operations (create, edit, delete) are intentionally blocked while offline. Background sync and offline-to-server reconciliation have not been implemented yet.
Challenges & Mistakes Encountered
Drizzle .returning() Issue
What Happened
The product thought was successfully created in the database.
However, the API was returning 500 errors.
Initial Assumption
I thought the create operation itself was failing.
Investigation
After 10-15 minutes of debugging, I discovered the issue.
Root Cause
I had forgotten to use .returning() on the Drizzle query.
Lesson
Database success does not automatically mean API success.
Delete Thought API Returning 500
What Happened
Deleting a thought returned a 500 error.
However, after refreshing the page, the thought had already been deleted from the database.
Investigation
I repeatedly tested the flow because the operation was succeeding despite the error.
Root Cause
Incorrect NextResponse implementation.
Fix
Corrected the response construction.
Partial Unique Index Edge Case
Problem
User deletes an idea.
Later creates another idea with the same title.
Unique slug constraint fails.
First Solution
Implemented composite unique index:
slug + isDeletedAt
This solved the initial problem.
New Edge Case
If the same slug was deleted multiple times, uniqueness violations still occurred.
Final Solution
While debugging, I learned about Partial Unique Indexes.
Applied the unique constraint only to active records using a partial unique index.
Lesson
Learned advanced indexing concepts and soft-delete database design.
Limitations
1. Limited Offline Support
Users can install the PWA and browse cached content offline, but all write operations require an active connection. No offline queue or sync mechanism exists yet.
2. Session Expiry
Users are logged out after session expiry.
Access and Refresh Tokens have not been implemented yet.
Impact
IdeaHub is now part of my daily workflow for capturing and organizing product ideas and related thoughts. The Inbox allows me to capture ideas without deciding their final organization at the moment of capture.
Future Vision
1. Offline Sync & Write Support
Implement background sync so captures and edits made offline can be queued and reconciled when connectivity returns.
2. Access & Refresh Tokens
Improve session management.
3. Technical Decision Log
Add a section within each project to store technical decisions along with the reasoning behind them — so tradeoffs and context are captured alongside the idea, not lost over time.
Technologies Used
Last updated August 28, 2026