A full-stack notes application that lets you:
- Write and edit notes in a rich text editor (WYSIWYG-style with Markdown preview).
- Use an integrated drawing editor to sketch diagrams, annotate with pen, or add shapes. Drawings are saved as images and embedded directly into your notes.
- Share notes publicly via a generated shareable link — recipients can view text and drawings without logging in.
-
Text Editor (WYSIWYG/Markdown)
- Clean, distraction-free editing
- Supports text formatting, lists, code blocks
- What-you-see-is-what-you-get preview
-
Drawing Editor
- Freehand drawing (pen tool)
- Shapes (lines, rectangles, circles)
- Export and embed drawing into notes
- Drawing is saved & rendered inline (not just a link)
-
Sharing
- Generate a public URL for any note
- Shared notes display both text & drawings
- Anyone with the link can view the note (read-only)
-
Authentication
- User accounts (sign up, login, JWT authentication)
- Each user manages their own notes
Frontend
- React + Vite
- TailwindCSS
- React Markdown (for rendering note content)
- Axios (API requests)
Backend
- Node.js + Express
- MongoDB + Mongoose (data storage)
- Multer (file uploads for drawings)
- JWT Authentication
git clone https://github.com/saumyaketu/notes-app.git
cd notes-appcd backend
npm install
cp .env.example .env # set MONGO_URI, JWT_SECRET, APP_ORIGIN, CLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY, CLOUDINARY_API_SECRET
npm run devBackend will start at http://localhost:5000
cd frontend
npm install
npm run devFrontend will start at http://localhost:5173
PORT=5000
MONGO_URI=mongodb://localhost:27017/notesapp
JWT_SECRET=your_jwt_secret
APP_ORIGIN=http://localhost:5173
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
VITE_API_URL=http://localhost:5000/api
- Sign up / Login to create your account.
- Create a note and start typing in the editor.
- Open Drawing Editor → sketch, save, and insert the drawing.
- Drawing will appear inline in the editor (
) and is saved to DB.
- Drawing will appear inline in the editor (
- Share a note → generate a link, send it to others.
- Recipients can open the link and view both text & drawings.
POST /api/notes→ create noteGET /api/notes/:id→ fetch notePUT /api/notes/:id→ update noteDELETE /api/notes/:id→ delete notePOST /api/notes/:id/share→ create share linkGET /api/notes/public/:shareId→ fetch public note
POST /api/auth/registerPOST /api/auth/loginGET /api/auth/me
- Richer WYSIWYG editor (bold, italic, headings toolbar)
- Collaborative editing (multi-user live editing)
- Export notes as PDF / Markdown
- Drawing layers & image annotations
Saumyaketu Chand Gupta
LinkedIn: saumyaketu
GitHub: saumyaketu