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.