A modern, full-stack note-taking application built with cutting-edge web technologies. NoteStack provides a seamless experience for creating, organizing, and managing your notes with real-time synchronization and rich text formatting capabilities.
- 🔐 Secure Authentication - JWT-based authentication with OTP verification
- 📝 Rich Text Editor - Advanced formatting capabilities for your notes
- ⚡ Real-time Sync - Instant saving and synchronization across devices
- 📱 Responsive Design - Optimized for desktop, tablet, and mobile devices
- 🌙 Modern UI/UX - Clean and intuitive interface built with Tailwind CSS
- 🔍 Search & Filter - Quickly find your notes with powerful search functionality
- 🏷️ Organization - Tag and categorize your notes for better management
- React 19 - Latest React with concurrent features
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first CSS framework
- Vite - Lightning-fast build tool
- React Router - Declarative routing
- Axios - Promise-based HTTP client
- Node.js - JavaScript runtime environment
- Express.js - Fast, minimalist web framework
- MongoDB - NoSQL database
- Mongoose - MongoDB object modeling
- JWT - Secure authentication tokens
- Nodemailer - Email sending capabilities
Before you begin, ensure you have the following installed:
- Node.js (v18.0.0 or later) - Download here
- npm or yarn - Package manager
- MongoDB Atlas account or local MongoDB instance
-
Clone the repository
git clone https://github.com/SuchitHubale/NoteStack.git cd NoteStack -
Backend Setup
cd backend npm installUpdate the
.envfile with your configuration (see Environment Variables) -
Frontend Setup
cd ../frontend npm installUpdate the frontend
.envfile with your backend API URL -
Start Development Servers
Terminal 1 (Backend):
cd backend npm run devTerminal 2 (Frontend):
cd frontend npm run dev -
Access the Application
Open your browser and navigate to http://localhost:5173
# Server Configuration
PORT=5000
# Database
MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/notestack
# Authentication
JWT_SECRET=your_super_secret_jwt_key_here
# Email Configuration (for OTP)
EMAIL_USER=your_email@example.com
EMAIL_PASS=your_app_specific_password
# CORS
FRONTEND_URL=http://localhost:5173notestack/
├── backend/
│ ├── config/
│ │ └── db.ts
│ ├── controllers/
│ │ ├── note.controller.ts
│ │ └── user.controller.ts
│ ├── middleware/
│ │ └── auth.ts
│ ├── models/
│ │ ├── note.model.ts
│ │ └── user.model.ts
│ ├── node_modules/
│ ├── routes/
│ │ ├── note.routes.ts
│ │ └── user.routes.ts
│ ├── utils/
│ ├── .env
│ ├── app.ts
│ ├── package.json
│ ├── package-lock.json
│ └── server.ts
│
├── frontend/
│ ├── public/
│ │ ├── sun-icon-blue.svg
│ │ └── vite.svg
│ ├── src/
│ │ ├── assets/
│ │ ├── components/
│ │ ├── pages/
│ │ ├── App.tsx
│ │ ├── index.css
│ │ └── main.tsx
│ ├── .env
│ ├── .gitignore
│ ├── package.json
│ ├── package-lock.json
│ ├── tsconfig.json
│ └── vite.config.ts
│
├── .gitignore
└── README.md
- Set
NODE_ENV=production - Use production MongoDB URI
- Configure secure JWT secrets
- Set up proper CORS origins
We welcome contributions to NoteStack! Please follow these steps:
- 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
- Follow TypeScript best practices
- Write tests for new features
- Use conventional commit messages
- Update documentation as needed
POST /api/auth/register- User registrationPOST /api/auth/login- User loginPOST /api/auth/verify-otp- OTP verificationPOST /api/auth/refresh- Refresh JWT token
GET /api/notes- Get all user notesPOST /api/notes- Create new notePUT /api/notes/:id- Update noteDELETE /api/notes/:id- Delete note
- v2.0.0 - Collaborative editing
- v2.1.0 - Dark mode support
- v2.2.0 - File attachments
- v2.3.0 - Offline synchronization
- v3.0.0 - Mobile applications (iOS/Android)
Suchit Hubale
- Twitter: @suchithubale
- Email: suchithubale@gmail.com
- GitHub: Your GitHub Profile
- React team for the amazing framework
- MongoDB for the reliable database solution
- All contributors who help improve this project
If you have any questions or need help, please:
- Open an issue
- Email me at suchithubale@gmail.com
- Follow me on Twitter @suchithubale
⭐ Star this repository if you found it helpful!