A beautiful, user-friendly notes application with themes, customizable note sizes, and emoji support. Built with Node.js, Express, MongoDB, and vanilla JavaScript.
- 🔐 User Authentication - Secure login and registration
- 📝 Create & Edit Notes - Rich text notes with drag-and-drop positioning
- 🎨 Customizable Notes - Multiple colors and sizes
- 😊 Emoji Support - Add emojis to your notes
- 🌙 Dark/Light Theme - Toggle between themes
- 👤 User Profiles - Profile management with image upload
- 📱 Responsive Design - Works on desktop and mobile
- ☁️ Cloud Storage - Notes saved to MongoDB Atlas
- Frontend: HTML5, CSS3, Vanilla JavaScript
- Backend: Node.js, Express.js
- Database: MongoDB Atlas
- Authentication: JWT (JSON Web Tokens)
- Password Hashing: bcryptjs
- Styling: CSS Variables, Font Awesome Icons
Before running this project, make sure you have:
- Node.js (v18 or higher)
- MongoDB Atlas account
- Git
-
Clone the repository
git clone https://github.com/CatherinGino/NoteItDown.git cd noteitdown -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env
Edit
.envfile with your actual values:MONGODB_URI: Your MongoDB Atlas connection stringJWT_SECRET: A secure random string for JWT signingPORT: Server port (default: 3000)
-
Start the development server
npm run dev
-
Open your browser Navigate to
http://localhost:3000
- Create a MongoDB Atlas account at mongodb.com/atlas
- Create a new cluster
- Create a database user with read/write permissions
- Whitelist your IP address
- Get your connection string and add it to
.env
noteitdown/
├── public/
│ ├── index.html # Main HTML file
│ ├── styles.css # CSS styles
│ └── script.js # Client-side JavaScript
├── server.js # Express server
├── package.json # Dependencies and scripts
├── .env.example # Environment variables template
├── .gitignore # Git ignore rules
├── vercel.json # Vercel deployment config
└── README.md # Project documentation
-
Install Vercel CLI
npm i -g vercel
-
Deploy
vercel
-
Set environment variables in Vercel dashboard
-
Redeploy for production
vercel --prod
- Push your code to GitHub
- Connect your repository to Render
- Set environment variables
- Deploy!
- Password hashing with bcryptjs
- JWT token authentication
- Input validation and sanitization
- CORS protection
- Environment variable protection
- Register a new account or login with existing credentials
- Create notes by clicking the "New Note" button
- Customize notes with different colors and sizes
- Add emojis by clicking the emoji button or right-clicking on note content
- Drag notes around the screen to organize them
- Switch themes using the theme toggle button
- Manage your profile by clicking the user menu
- Fork the repository
- Create a feature 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.
Catherin Gino A
- GitHub: @CatherinGino
- Email: [email protected]
- Font Awesome for icons
- MongoDB Atlas for database hosting
- Vercel for deployment platform
If you have any questions or run into issues, please open an issue on GitHub or contact me directly.
⭐ Star this repository if you found it helpful!
