DEV Community

Vivek
Vivek

Posted on

I built Stashly — a full-stack content manager with a rich text editor published: false tags: react, node, mongodb, typescript

I wanted one place to save links from YouTube, Twitter, and LinkedIn, and write notes alongside them. Nothing I found did both well, so I built Stashly.



What it does

  • Save links from YouTube, Twitter, LinkedIn — with auto-embeds
  • Write and edit notes with a full rich text editor (Tiptap)
  • Auto-saves notes with a 2s debounce
  • Share any saved item via a public slug URL
  • Sign in with Google or GitHub OAuth
  • Works on mobile (pill nav) and desktop (sidebar) ## Tech stack
Layer Tech
Frontend React 19, TypeScript, Vite, TailwindCSS v4
Editor Tiptap 3
State Redux Toolkit
Backend Express 5, TypeScript
Database MongoDB + Mongoose 9
Auth Better-Auth (Google / GitHub OAuth)
Validation Zod

The editor

Tiptap handles the heavy lifting — headings, lists, code blocks, text alignment, color highlights, images, and links. Notes auto-save in the background so you never have to think about it.

Saving content

Paste a YouTube, Twitter, or LinkedIn URL and Stashly stores it with an embed. You can filter your saved content by platform and delete anything you don't need.

Auth

Better-Auth handles OAuth for both Google and GitHub. The session flow was straightforward to set up and the library keeps things out of your way.

Running it locally

# Backend
cd backend
npm install
cp .env.example .env
npm run dev

# Frontend
cd frontend
npm install
npm run dev
Enter fullscreen mode Exit fullscreen mode

You'll need Node 18+ and a MongoDB instance (local or Atlas). The .env.example covers all the required variables — DB URL, Better-Auth secrets, and OAuth credentials for both providers.

What I'd improve

  • Full-text search across notes and saved links
  • Browser extension for one-click saving

- Folders or tags for organizing content

Source is on GitHub if you want to take a look or contribute. Feedback welcome.

Top comments (0)