A simple, elegant note-taking app with Pomodoro timer and optional user authentication. Built with React, Node.js, and MongoDB.
- Guest Mode: Start taking notes immediately without an account
- User Accounts: Create an account to sync notes across devices
- Seamless Sync: Convert guest notes to user notes with one click
- Offline Support: Works completely offline in guest mode
- Cloud Backup: Authenticated users get automatic cloud sync
- 25/5/15 intervals: Classic Pomodoro technique
- Work sessions: 25-minute focused work periods
- Short breaks: 5-minute breaks between sessions
- Long breaks: 15-minute breaks after 4 pomodoros
- Visual progress: See your timer progress
- Notifications: Browser notifications when sessions end
- Session tracking: Count completed pomodoros
- Secure Registration: Email and password-based accounts
- JWT Authentication: Secure token-based authentication
- Password Hashing: bcryptjs for secure password storage
- Session Management: Persistent login across browser sessions
- User Profiles: Personal note collections per user
- Clean design: Beautiful, responsive interface
- Dark theme: Easy on the eyes
- Mobile-friendly: Works great on all devices
- Smooth animations: Polished user experience
- Toast notifications: User-friendly feedback
- Node.js (v16 or higher)
- npm or yarn
- MongoDB database
-
Navigate to backend directory
cd backend -
Install dependencies
npm install
-
Set up environment variables Create a
.envfile in the backend directory:MONGO_URI=your_mongodb_connection_string JWT_SECRET=your_jwt_secret_key NODE_ENV=development
-
Start the backend server
npm run dev
-
Navigate to frontend directory
cd frontend -
Install dependencies
npm install
-
Start the development server
npm run dev
-
Open your browser Navigate to
http://localhost:5173
- Start immediately: No account required
- Create notes: Click "New Note" to start taking notes
- Local storage: Notes are saved in your browser
- Sync later: Create an account to sync your notes to the cloud
- Create account: Click "Sign Up" to register
- Login: Use your email and password to sign in
- Cloud sync: All notes are automatically synced
- Cross-device: Access your notes from any device
- Create notes in guest mode: Start taking notes immediately
- Register account: Click "Sign Up" when ready
- Sync notes: Click "Sync Notes" to transfer guest notes to your account
- Continue seamlessly: All your notes are now in your account
- Click "Pomodoro" in the navigation
- Choose your mode: Work, Short Break, or Long Break
- Click "Start" to begin your session
- Take breaks when the timer ends
- Track your productivity with completed pomodoros
- React 19: Latest React features and performance
- Vite: Fast development and build process
- Tailwind CSS: Utility-first styling
- DaisyUI: Beautiful component library
- Axios: HTTP client for API communication
- React Router: Client-side routing
- Node.js: JavaScript runtime
- Express: Web framework
- MongoDB: NoSQL database
- Mongoose: MongoDB object modeling
- JWT: JSON Web Tokens for authentication
- bcryptjs: Password hashing
- CORS: Cross-origin resource sharing
- JWT Tokens: Secure authentication
- Password Hashing: bcryptjs for security
- Session Management: Persistent login state
- Guest Mode: Optional authentication
npm run dev # Start frontend development server
npm run build # Build frontend for production
npm run preview # Preview production build
npm run lint # Run ESLintcd backend
npm run dev # Start backend development server
npm start # Start production servercd frontend
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLintNotesMadeEasy/
βββ backend/
β βββ src/
β β βββ config/ # Database and Redis config
β β βββ controllers/ # API controllers
β β βββ middleware/ # Auth and rate limiting
β β βββ models/ # Mongoose models
β β βββ routes/ # API routes
β β βββ server.js # Express server
β βββ package.json
βββ frontend/
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Page components
β β βββ lib/ # Services and utilities
β β βββ App.jsx # Main app component
β βββ package.json
βββ README.md
- User visits the app
- Can immediately start taking notes
- Notes are stored in localStorage
- No account required
- User clicks "Sign Up"
- Fills out registration form
- Account is created with hashed password
- JWT token is generated and stored
- User is redirected to home page
- User clicks "Login"
- Enters email and password
- Credentials are verified
- JWT token is generated and stored
- User is redirected to home page
- User with guest notes registers/logs in
- "Sync Notes" button appears in navigation
- User clicks sync button
- Guest notes are transferred to user account
- Guest notes are cleared from localStorage
- User sees all notes in their account
- Guest note-taking with localStorage
- User registration and login
- JWT-based authentication
- Guest note sync to user accounts
- Hybrid note system (guest + authenticated)
- Pomodoro timer with notifications
- Responsive design and modern UI
- Offline support for guest mode
- Secure password handling
- Session persistence
- Password reset functionality
- Email verification
- Social login (Google, GitHub)
- User profile management
- Note sharing between users
- Advanced note features (tags, categories, search)
- Mobile app development
- Real-time collaboration features
This project is open source and available under the MIT License.
Note: This is v1 with optional authentication. Users can start immediately in guest mode and optionally create accounts to sync their notes to the cloud.