SecureNotes is a full-stack note-taking app built with React, Node.js, Express, and MongoDB. It supports rich text notes, checklist notes, image attachments, color organization, search, filters, and authenticated private note storage.
The project is structured as a MERN application with a Vite frontend and an Express API backend.
- User registration and login with JWT authentication
- Rich text notes with headings, lists, and code blocks
- Checklist notes with interactive todo items and progress tracking
- Image notes with drag-and-drop image upload support
- Colorful note cards and tag-based organization
- Modal note editing that keeps the dashboard position intact
- Search across titles, content, tags, and checklist items
- Filters for favorites, note type, image notes, and categories
- Pin and favorite actions for note management
- Responsive layout optimized for mobile and desktop screens
- Frontend: React, Vite, React Router, React Quill, DOMPurify, CSS
- Backend: Node.js, Express, Mongoose
- Database: MongoDB
- Authentication: JWT, bcryptjs
- Deployment-ready config: Render backend URL support and Vite environment variables
securenotes-app/
backend/ Express API, MongoDB models, auth and note routes
frontend/ React/Vite client application
.env.example Example environment variables
No production screenshots are included yet. Add real screenshots of the dashboard, mobile layout, and edit modal when available.
- Node.js 18 or newer
- npm
- MongoDB Atlas connection string or a local MongoDB instance
Create environment files before running the app locally.
Root example:
# Backend
PORT=5000
MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/securenotes
MONGO_URI=mongodb+srv://username:password@cluster.mongodb.net/securenotes
JWT_SECRET=replace-with-a-long-random-secret
FRONTEND_URL=http://localhost:5173
# Frontend
VITE_API_URL=http://localhost:5000
# Deployment
RENDER_BACKEND_URL=https://your-render-service.onrender.comBackend:
cd backend
cp ../.env.example .envFrontend:
cd frontend
echo VITE_API_URL=http://localhost:5000 > .envNote: the current backend reads MONGO_URI. MONGODB_URI is included in the examples for clarity and compatibility with common MongoDB naming conventions.
Install backend dependencies:
cd backend
npm installStart the backend API:
npm startIn a second terminal, install frontend dependencies:
cd frontend
npm installStart the frontend:
npm run devOpen the app at:
http://localhost:5173
The frontend expects the API at VITE_API_URL, which defaults to the configured production backend if no local value is provided.
Build the frontend:
cd frontend
npm run buildThe backend exposes authenticated routes for account access and note management:
- Auth: register and login
- Notes: create, read, update, delete, pin, favorite, checklist updates
- Account: profile-related account operations
Ryan Abir
- GitHub: @RyanAbir