Skip to main content
You're offline. Create, edit, and delete are not supported while offline.

IdeaHub

3 min readLast updated August 28, 2026
Active Project
Type:
Personal Tool
Status:
Active
Project:
Solo Project
Table of contents

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 laterIdeaHub 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.

Debugging

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.

Debugging

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

Next.jsDrizzle ORMPostgreSQLAuth Service

Last updated August 28, 2026

Related Projects

Lakshay Mahajan

Backend Engineer focused on building reliable systems with Node.js, TypeScript, and AWS.

Connect

© 2026 Lakshay Mahajan