A full-stack MERN application that provides a centralized platform for creating, editing, organizing, and managing academic or personal notes. Featuring AI-powered summarization, real-time syncing with Socket.io, JWT authentication, and a beautiful Dark/Light mode interface.
- 🔐 Secure Authentication - User registration & login using JWT and Bcrypt password hashing.
- 📝 Full CRUD Operations - Create, read, update, and delete notes seamlessly.
- 📌 Pin Important Notes - Keep priority notes at the top of your dashboard.
- 🏷️ Categories & Tags - Organize notes into custom categories with taggable keywords.
- 🔍 Live Search & Filter - Instantly search notes by title/content and filter by category.
- 🤖 AI Summarization - Generate instant summaries, key points, and revision questions from long notes.
- ⚡ Real-Time Sync - Notes update instantly across all devices using Socket.io (WebSockets).
- 🌙 Dark / Light Mode - Toggle between themes with smooth transitions.
- 📱 Fully Responsive - Works perfectly on desktop, tablet, and mobile.
- React.js (Vite)
- Tailwind CSS
- React Router DOM
- Axios
- Socket.io-client
- Lucide React (Icons)
- Node.js
- Express.js
- MongoDB (Mongoose)
- JWT (JSON Web Token)
- Bcrypt.js
- Socket.io
- Node.js (v16 or higher)
- MongoDB (Local or Atlas)
git clone https://github.com/SIMANTA-stack/note-management-system.git
cd note-management-system
2. Backend Setup
cd backend
npm install
Create a .env file inside the backend/ folder:
PORT=5000
MONGO_URI=mongodb://127.0.0.1:27017/notes_db
JWT_SECRET=supersecretjwtkey_12345
Start the backend server
npm run dev
Server runs on http://localhost:5000
3. Frontend Setup
Open a new terminal:
cd frontend
npm install
npm run dev
App runs on http://localhost:5173
🌐 API Endpoints
Method Endpoint Description
POST /api/auth/register Register a new user
POST /api/auth/login Login user & get JWT
GET /api/auth/profile Get logged-in user profile
GET /api/notes Get all user notes
POST /api/notes Create a new note
GET /api/notes/:id Get a single note
PUT /api/notes/:id Update a note
DELETE /api/notes/:id Delete a note
PUT /api/notes/:id/pin Toggle pin status
GET /api/categories Get all categories
POST /api/categories Create a category
POST /api/ai/summarize Generate AI summary
🔒 Database Models
User: name, email, password (hashed)
Category: name, user (ref)
Note: title, content, tags[], isPinned, category (ref), user (ref)
🎯 Real-World Use Case
Perfect for students and professionals who need a secure digital workspace to manage lecture notes, exam preparation, and personal reminders. Access your notes across multiple devices in real-time, and let AI summarize long notes and generate revision questions for faster studying.
🧪 How to Test Real-Time Sync
Open the app in a regular browser window and log in.
Open an Incognito window and log into the same account.
Place both windows side-by-side.
Create/edit/delete a note in one window and watch it update instantly in the other! ⚡
🤝 Contributing
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
📄 License
This project is licensed under the MIT License.
👨💻 Author
Simanta
GitHub: @SIMANTA-stack




