Skip to content

About

A modern full-stack Notes Management App built with React, Node.js, Express, and MongoDB. Clean UI, REST API, CRUD operations, theme switching, pinning, archiving, and responsive design.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

ย 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ Notely --- MERN Notes App

Notely is a modern, elegant, and responsive full-stack Notes Management Application built with the MERN stack.

The project is designed as a portfolio-quality CRUD application that demonstrates how a real-world React frontend can communicate with a Node.js/Express backend and MongoDB database while providing a polished user experience.

The main focus of Notely is clean full-stack architecture, efficient state management, REST API integration, performance optimization, responsive UI, and a modern notes experience.


โœจ Project Overview

Notely allows users to create and manage their notes through a clean and professional interface.

Users can:

  • Create notes
  • Edit notes
  • Update notes
  • Pin and unpin notes
  • Archive and unarchive notes
  • Delete individual notes
  • Search notes
  • View all notes
  • View pinned notes
  • View archived notes

The application also includes theme switching, dynamic note colors, sorting, skeleton loading, toast notifications, responsive layouts, validation, and error handling.


๐Ÿš€ Main Features

๐Ÿ“ Note Management

Notely provides the core CRUD functionality required for managing notes:

  • Create a new note
  • Read and view available notes
  • Edit existing notes
  • Update note information
  • Delete individual notes
  • Pin / Unpin notes
  • Archive / Unarchive notes

Notes are deleted individually from the user interface. A "Delete All Notes" action is not exposed to users.


๐Ÿ“‚ Separate Note Views

Notely provides dedicated sections for organizing notes:

All Notes

Displays all available notes from the database.

Pinned Notes

Displays only notes that have been pinned.

Archived Notes

Displays only notes that have been archived.

This makes it easier to organize and access notes without keeping everything in a single view.


๐Ÿ”Ž Search & Performance Optimization

Notely includes a search feature for quickly finding notes.

To prevent unnecessary API requests while the user is typing, the search functionality uses debouncing and throttling techniques.

This helps reduce:

  • Repeated API calls
  • Unnecessary network requests
  • Server load
  • Unnecessary UI updates

The result is a more efficient search experience while maintaining a responsive interface.


๐Ÿ”„ Redux Toolkit State Management

Redux Toolkit is used to manage application state and keep the UI synchronized with backend operations.

Redux manages states related to:

  • Notes
  • Loading
  • Errors
  • API responses
  • Create operations
  • Update operations
  • Delete operations
  • Pin/unpin operations
  • Archive/unarchive operations
  • Search results

When an operation is completed, the relevant Redux state is updated so the UI reflects the latest application data.


๐ŸŽจ Premium & Professional UI

A major focus of Notely is its visual experience.

Instead of creating a basic CRUD interface, the project uses a modern, premium, and professional notes-app design.

The UI focuses on:

  • Clean layouts
  • Modern typography
  • Consistent spacing
  • Minimal visual clutter
  • Professional note cards
  • Interactive states
  • Responsive components
  • Clear feedback
  • Smooth user experience

๐ŸŒˆ Dynamic Note Colors

Notely uses different colors for individual notes to make the interface more visually engaging.

When a user creates a new note, a color is assigned to the note so the notes collection feels more dynamic and easier to scan.

This gives the application a more distinctive visual identity compared with a traditional plain notes list.


๐ŸŒ“ Light & Dark Theme

Notely supports both:

  • โ˜€๏ธ Light Theme
  • ๐ŸŒ™ Dark Theme

The theme system is applied consistently throughout the application, including:

  • Backgrounds
  • Note cards
  • Text
  • Borders
  • Forms
  • Buttons
  • Navigation
  • Notifications
  • Other UI elements

The interface is designed to maintain a consistent experience regardless of the selected theme.


๐Ÿ“… Note Sorting

Notes are organized with the newest notes appearing first and older notes appearing toward the bottom.

This makes recently created or updated content easier to access.

The application combines sorting with:

  • Search
  • Pinning
  • Archiving
  • Filtering

to provide a practical note organization experience.


โณ Skeleton Loading

Notely includes skeleton loading states while API data is being fetched.

Instead of displaying an empty screen while waiting for the backend response, the application displays UI placeholders that represent the structure of the content being loaded.

This improves perceived performance and provides a smoother user experience.


๐Ÿ”” Toast Notifications

The application provides immediate feedback through toast notifications.

Notifications are used for actions such as:

  • Note creation
  • Note update
  • Pin / Unpin
  • Archive / Unarchive
  • Note deletion
  • Errors
  • Other important application events

This allows users to understand the result of their actions without interrupting their workflow.


๐Ÿ› ๏ธ Technology Stack

Frontend

  • React.js
  • Redux Toolkit
  • React Router
  • Tailwind CSS
  • Axios
  • React Icons
  • Sonner

Backend

  • Node.js
  • Express.js
  • MongoDB
  • Mongoose

Development Tools

  • Git
  • GitHub
  • VS Code
  • Postman

๐Ÿ”Œ API Features

The backend provides separate APIs for different note operations.

API Operation Purpose


Get All Notes Retrieves all available notes Get Pinned Notes Retrieves pinned notes Get Archived Notes Retrieves archived notes Search Notes Searches notes based on user input Create Note Creates a new note Edit Note Edits an existing note Update Note Updates note information Update By ID Updates a specific note using its ID Delete Note Deletes a specific note Pin / Unpin Changes the pinned state Archive / Unarchive Changes the archived state

The backend is responsible for communicating with MongoDB and returning appropriate responses to the frontend.


๐Ÿงฉ Backend Architecture

The backend is organized into separate responsibilities for better maintainability.

Controllers

Handle the application logic for note-related operations.

Database

Contains the database connection and database-related configuration.

Models

Defines the MongoDB/Mongoose note model and its structure.

Routes

Defines the API endpoints used by the frontend.

App

Configures the Express application and middleware.

Server

Starts the backend server.

This separation keeps the backend easier to understand, maintain, and extend.


๐ŸŽฏ Validation & Error Handling

Notely includes validation and error handling on the backend.

The application checks whether requested notes are available before returning them.

For example:

  • If notes exist, they are returned to the frontend.
  • If no notes are available, the application returns an appropriate empty/error state.
  • Invalid note IDs are handled.
  • Invalid requests are handled.
  • Database errors are caught.
  • Unexpected server errors are handled.

Asynchronous backend operations are protected with try...catch blocks to prevent unhandled errors.

The frontend also handles API errors and displays appropriate feedback through the UI.


๐Ÿ“ฑ Responsive Design

Notely is designed to work across different screen sizes.

Supported devices

  • ๐Ÿ“ฑ Mobile
  • ๐Ÿ“ฒ Tablet
  • ๐Ÿ’ป Laptop
  • ๐Ÿ–ฅ๏ธ Desktop

The layout adapts to different screen sizes while maintaining usability and visual consistency.

Responsive behavior is applied to the major parts of the application, including:

  • Navigation
  • Note cards
  • Forms
  • Search
  • Content layouts
  • Theme controls
  • Toast notifications

๐Ÿ—๏ธ Project Structure

The project is divided into separate Backend and Frontend applications.

Notely/
โ”‚
โ”œโ”€โ”€ Backend/
โ”‚   โ”œโ”€โ”€ node_modules/
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ controllers/
โ”‚   โ”‚   โ”œโ”€โ”€ db/
โ”‚   โ”‚   โ”œโ”€โ”€ models/
โ”‚   โ”‚   โ””โ”€โ”€ routes/
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ app.js
โ”‚   โ”œโ”€โ”€ package-lock.json
โ”‚   โ”œโ”€โ”€ package.json
โ”‚   โ””โ”€โ”€ server.js
โ”‚
โ”œโ”€โ”€ Frontend/
โ”‚   โ”œโ”€โ”€ node_modules/
โ”‚   โ”œโ”€โ”€ public/
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ api/
โ”‚   โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ context/
โ”‚   โ”‚   โ”œโ”€โ”€ pages/
โ”‚   โ”‚   โ”œโ”€โ”€ redux/
โ”‚   โ”‚   โ”œโ”€โ”€ skeleton/
โ”‚   โ”‚   โ”œโ”€โ”€ App.jsx
โ”‚   โ”‚   โ”œโ”€โ”€ index.css
โ”‚   โ”‚   โ””โ”€โ”€ main.jsx
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ eslint.config.js
โ”‚
โ””โ”€โ”€ README.md

๐Ÿ“ Frontend Structure

The frontend is organized into feature-oriented folders:

Folder Responsibility


api/ API communication and backend requests components/ Reusable UI components context/ React Context functionality pages/ Application pages/screens redux/ Redux Toolkit state management skeleton/ Skeleton loading components App.jsx Main application component and routing index.css Global styles and theme-related styling main.jsx React application entry point


๐Ÿ“ Backend Structure

The backend follows a simple and maintainable structure:

Folder / File Responsibility


controllers/ Business logic for note operations db/ MongoDB database connection models/ Mongoose models routes/ Express API routes app.js Express application configuration server.js Backend server entry point


๐Ÿ”„ Application Architecture

The main data flow of Notely can be represented as:

User
  โ†“
React UI
  โ†“
Redux Toolkit
  โ†“
API Layer
  โ†“
Express.js Routes
  โ†“
Controllers
  โ†“
Mongoose
  โ†“
MongoDB
  โ†“
API Response
  โ†“
Redux State
  โ†“
Updated UI

This architecture keeps the frontend state, API communication, backend logic, and database responsibilities separated.


๐Ÿง  Core Project Concepts

Notely demonstrates practical implementation of several full-stack development concepts:

  • MERN stack development
  • CRUD operations
  • REST API development
  • React component architecture
  • Redux Toolkit state management
  • API integration
  • MongoDB & Mongoose
  • Express.js routing
  • Async operations
  • Debouncing
  • Throttling
  • Search optimization
  • Form validation
  • Error handling
  • Try/catch handling
  • Sorting
  • Filtering
  • Theme management
  • Responsive design
  • Skeleton loading
  • Toast notifications

๐ŸŽฏ Project Goals

The goal of Notely was to go beyond creating a simple CRUD application.

The project focuses on building a complete full-stack product experience where backend functionality and frontend user experience work together.

The major goals were:

Full-Stack Development

Build a complete application with React on the frontend and Node.js, Express.js, and MongoDB on the backend.

Clean Architecture

Keep frontend and backend responsibilities separated and make the project structure easy to understand.

Efficient State Management

Use Redux Toolkit to manage application data and synchronize UI changes.

Performance Optimization

Use debounce and throttling techniques to reduce unnecessary search requests.

Professional User Experience

Add themes, dynamic note colors, skeleton loading, sorting, responsive layouts, and toast notifications.

Reliable Backend

Implement validation, error handling, database checks, and protected asynchronous operations.


๐Ÿ”ฎ Future Improvements

Potential improvements for future versions include:

  • ๐Ÿ” User authentication and authorization
  • ๐Ÿ‘ค User-specific notes
  • ๐Ÿ”‘ JWT authentication
  • ๐Ÿท๏ธ Note tags and categories
  • ๐Ÿ“Ž File/image attachments
  • โฐ Note reminders
  • โ˜๏ธ Cloud deployment
  • ๐Ÿ”„ Real-time synchronization
  • ๐Ÿ“Š User dashboard and analytics
  • ๐Ÿงช Automated testing
  • ๐Ÿ“„ Pagination for large note collections

๐Ÿ“Œ Project Highlights

Notely is a full-stack MERN Notes Management Application focused on clean architecture, modern UI, efficient API communication, state management, performance optimization, and responsive user experience.

The project combines traditional CRUD functionality with modern frontend practices such as Redux Toolkit, optimized search, dynamic note colors, theme switching, skeleton loading, sorting, responsive design, and toast notifications.


๐Ÿ‘จโ€๐Ÿ’ป Developer

Shoaib

Full-Stack Web Developer

Built with โค๏ธ using the MERN Stack.

About

A modern full-stack Notes Management App built with React, Node.js, Express, and MongoDB. Clean UI, REST API, CRUD operations, theme switching, pinning, archiving, and responsive design.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages