Skip to main content

Resource Hub

1 min read
Active Project
Type:
Personal Tool
Status:
Active
Project:
Solo Project
Table of contents

Why I Built It

To manage resource links centrally.

Problem

Resource links were scattered across different platforms and difficult to find when needed.

Technical Decisions

Pre-Signed URL Upload Architecture

Used pre-signed URLs for uploads to object storage.

Why?

Instead of:

Client → Server → Object Storage

Used:

Client → Object Storage

Reasoning

The server should not become responsible for transferring large files.

Benefits

  • Reduced server load.
  • Eliminated an unnecessary network hop.
  • Improved scalability.

Limitation

Saving a resource still requires too much friction.

This negatively affects adoption.

Object Storage and Database Consistency

When deleting a document, the file is removed from object storage before the database record is deleted.

Potential edge case: the file is deleted successfully, but the server crashes before the database deletion completes. The database record remains while the file no longer exists — an inconsistent state.

Current status: no orphan-record cleanup mechanism exists yet.

Future improvement: background reconciliation or cleanup jobs to detect and remove orphaned database records.

Future Vision

1. Separate Capture & Organization

Capturing and organizing should not happen together.

2. Collections

Allow users to organize resources into collections.

Technologies Used

Node.jsExpressMongoDBReactGoogle OAuthDockerJWT

Related Projects

Lakshay Mahajan

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

Connect

© 2026 Lakshay Mahajan