A beautiful, interactive note-taking app with drag & drop functionality, dark mode, and smooth animations!
Demo β’ Installation β’ Usage β’ Tech Stack
π― Drag & Drop - Freely move notes anywhere on the canvas
π Dark Mode - Toggle between light and dark themes
πΎ Local Storage - All notes persist across sessions
π« Collision Detection - Notes automatically avoid overlapping
π¨ Animated Bubbles - Beautiful floating background animations
π Pin Icon - Auto-added to every note
β Easy Delete - Remove notes with a single click
β‘ Smooth Animations - Gorgeous transitions and hover effects
π± Responsive Design - Works on all screen sizes
- Node.js (v14 or higher)
- npm or yarn
- Clone the repository
git clone https://github.com/akashasahu07/draggable-notes.git
cd draggable-notes- Install dependencies
npm install- Start the development server
npm start- Open your browser
http://localhost:3000
- Add a Note: Type in the input box and click "Add Note" or press Enter
- Drag Notes: Click and hold any note to drag it around
- Delete Notes: Click the β button on any note to remove it
- Toggle Dark Mode: Click the π/βοΈ button in the top right
- Auto-Save: All changes are automatically saved to localStorage
draggable-notes/
βββ public/
β βββ index.html
β βββ favicon.ico
βββ src/
β βββ App.js # Main component
β βββ App.css # Styles
β βββ index.js # Entry point
β βββ index.css # Global styles
βββ package.json
βββ README.md
- Uses
onMouseDown,onMouseMove, andonMouseUpevents - Calculates offset to maintain grip point
- Bounds checking to keep notes within container
- Calculates bounding rectangles for each note
- Checks for overlaps with padding
- Automatically repositions overlapping notes
- Toggle state saved in localStorage
- Smooth CSS transitions between themes
- Dynamic class switching
- Auto-saves notes on every change
- Loads saved notes on app mount
- Persists dark mode preference
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a new branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Give a βοΈ if you like this project!
Have questions or suggestions? Feel free to reach out!
π§ Email: akashasahu2001@gmail.com π± Instagram: @flashcode07
- Add note colors customization
- Implement search functionality
- Add export/import notes feature
- Add rich text editor
- Implement categories/tags
- Add cloud sync feature
- Mobile app version