A full-stack notes application built with the MERN stack (MongoDB, Express.js, React, Node.js).
- ✨ Create, Read, Update, and Delete notes
- 🏷️ Categorize notes (General, Work, Personal, Ideas, Todo)
- 📱 Responsive design
- 🎨 Beautiful gradient UI
- ⚡ Real-time updates
- 🗂️ Sort notes by last updated
Frontend:
- React 18
- Axios for API calls
- CSS3 with modern styling
Backend:
- Node.js
- Express.js
- MongoDB with Mongoose
- CORS enabled
Before running this application, make sure you have the following installed:
- Node.js (v14 or higher)
- MongoDB (running locally or MongoDB Atlas URI)
- npm or yarn
cd notes-appcd backend
npm installCreate a .env file in the backend directory (already created with default values):
PORT=5000
MONGODB_URI=mongodb://localhost:27017/notesapp
Note: If you're using MongoDB Atlas, replace the MONGODB_URI with your Atlas connection string.
cd ../frontend
npm installMake sure MongoDB is running on your system:
# If using local MongoDB
mongodOr ensure your MongoDB Atlas cluster is accessible.
cd backend
npm start
# Or for development with auto-restart:
npm run devThe backend server will run on http://localhost:5000
Open a new terminal window:
cd frontend
npm startThe React app will run on http://localhost:3000 and automatically open in your browser.
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/notes | Get all notes |
| GET | /api/notes/:id | Get a single note |
| POST | /api/notes | Create a new note |
| PUT | /api/notes/:id | Update a note |
| DELETE | /api/notes/:id | Delete a note |
NoteMaker/
├── backend/
│ ├── models/
│ │ └── Note.js # Mongoose Note model
│ ├── routes/
│ │ └── notes.js # API routes
│ ├── .env # Environment variables
│ ├── server.js # Express server setup
│ └── package.json
├── frontend/
│ ├── public/
│ │ └── index.html
│ ├── src/
│ │ ├── components/
│ │ │ ├── NoteForm.js
│ │ │ ├── NoteForm.css
│ │ │ ├── NoteList.js
│ │ │ ├── NoteList.css
│ │ │ ├── NoteItem.js
│ │ │ └── NoteItem.css
│ │ ├── App.js
│ │ ├── App.css
│ │ ├── index.js
│ │ └── index.css
│ └── package.json
└── README.md
- Create a Note: Fill in the title, select a category, write your content, and click "Add Note"
- Edit a Note: Click the "Edit" button on any note card, modify the content, and click "Update Note"
- Delete a Note: Click the "Delete" button on any note card and confirm the deletion
- View Notes: All notes are displayed in a grid layout, sorted by last updated time
- 🔍 Search functionality
- 🏷️ Tags support
- 📎 File attachments
- 👤 User authentication
- 🌙 Dark mode
- 📤 Export notes
- ☁️ Cloud sync