EasyNote is a full-stack note-taking application built with modern web technologies. It features a beautiful, responsive UI with color-coded notes, secure authentication, and real-time email notifications for password resets.
- User Registration & Login - Secure JWT-based authentication
 - Password Reset - Email-based OTP verification system
 - Session Management - Persistent login with localStorage
 - Protected Routes - Secure access to dashboard and notes
 
- Create Notes - Rich note creation with title and description
 - Color Coding - Customizable colors for note organization
 - Edit & Update - In-place editing with real-time updates
 - Delete Notes - Safe deletion with confirmation modal
 - View Details - Full-screen note viewing modal
 
- Responsive Design - Works perfectly on desktop, tablet, and mobile
 - Beautiful Animations - Smooth hover effects and transitions
 - Color Themes - Dynamic color schemes for each note
 - Glass Morphism - Modern glassmorphic design elements
 - Gradient Backgrounds - Eye-catching gradient backgrounds
 
- EmailJS Integration - Send OTP codes via email
 - Password Reset Flow - Complete forgot password workflow
 - OTP Verification - Secure 6-digit OTP system
 - Email Templates - Professional email templates
 
- Rails 7.0.8 - Modern Ruby web framework
 - MongoDB + Mongoid - NoSQL database with ODM
 - Devise - Authentication framework
 - JWT - JSON Web Token authentication
 - Rack-CORS - Cross-origin resource sharing
 - Mail - Email functionality
 - ROTP - OTP generation and verification
 
- React 19.1.1 - Latest React with hooks
 - Vite - Fast build tool and dev server
 - Tailwind CSS 4.1.14 - Utility-first CSS framework
 - React Router 7.9.4 - Client-side routing
 - Axios - HTTP client for API calls
 - EmailJS - Email service integration
 
- MongoDB - Document-based NoSQL database
 - MongoDB Atlas - Cloud database hosting
 - Mongoid - Ruby ODM for MongoDB
 
- Frontend: Vercel
 - Backend: Render
 - Database: MongoDB Atlas
 
- Ruby 3.3.4+
 - Node.js 18+
 - MongoDB (local or Atlas)
 - Git
 
- 
Clone the repository
git clone <repository-url> cd EasyNote
 - 
Install backend dependencies
cd backend bundle install - 
Install frontend dependencies
cd ../frontend npm install cd ..
 - 
Configure MongoDB
- Install MongoDB locally or use MongoDB Atlas
 - Update 
backend/config/mongoid.ymlif needed 
 - 
Start development servers
./start_servers.sh
Or start manually:
Backend (Terminal 1):
cd backend bundle exec rails server -p 5000
Frontend (Terminal 2):
cd frontend npm run dev 
- Frontend: http://localhost:5172
 - Backend API: http://localhost:5000
 - Health Check: http://localhost:5000/health
 
- Home Page β Landing page with app introduction
 - Register β Create new account with email/password
 - Login β Sign in with existing credentials
 - Dashboard β Main notes interface (protected route)
 
- Forgot Password β Enter email address
 - OTP Verification β Enter 6-digit code from email
 - Reset Password β Set new password
 - Login β Sign in with new credentials
 
- Create Note β Click "Add New Note" button
 - Fill Details β Enter title, description, and choose color
 - Save Note β Note appears in dashboard grid
 - Edit Note β Click edit button, modify content
 - View Note β Click card to view full details
 - Delete Note β Click delete button with confirmation
 
POST   /api/v1/users                    # Register new user
POST   /api/v1/users/sign_in            # Login user
DELETE /api/v1/users/sign_out           # Logout user
POST   /api/v1/users/password_reset     # Send OTP email
POST   /api/v1/users/verify_otp         # Verify OTP code
PATCH  /api/v1/users/reset_password     # Reset password
GET    /api/v1/notes                    # Get all user notes
GET    /api/v1/notes/:id                # Get specific note
POST   /api/v1/notes                    # Create new note
PATCH  /api/v1/notes/:id                # Update note
DELETE /api/v1/notes/:id                # Delete note
GET    /health                          # API health status
EasyNote/
βββ backend/                           # Rails API backend
β   βββ app/
β   β   βββ controllers/api/v1/        # API controllers
β   β   β   βββ notes_controller.rb    # Notes CRUD operations
β   β   β   βββ users/                 # User authentication
β   β   βββ models/                    # Data models
β   β   β   βββ user.rb                # User model with Devise
β   β   β   βββ note.rb                # Note model
β   β   βββ serializers/               # JSON serializers
β   β   βββ mailers/                   # Email functionality
β   βββ config/
β   β   βββ mongoid.yml                # MongoDB configuration
β   β   βββ routes.rb                  # API routes
β   β   βββ initializers/             # CORS, Devise config
β   βββ Gemfile                        # Ruby dependencies
β   βββ render.yaml                    # Render deployment config
βββ frontend/                          # React frontend
β   βββ src/
β   β   βββ components/                # React components
β   β   β   βββ Dashboard.jsx          # Main notes interface
β   β   β   βββ NoteCard.jsx           # Individual note display
β   β   β   βββ NoteForm.jsx           # Create/edit note form
β   β   β   βββ Login.jsx              # Login component
β   β   β   βββ Register.jsx           # Registration component
β   β   β   βββ ForgotPassword.jsx     # Password reset flow
β   β   β   βββ VerifyOTP.jsx          # OTP verification
β   β   β   βββ ResetPassword.jsx      # New password form
β   β   βββ services/                  # API service layer
β   β   β   βββ api.js                 # Axios configuration
β   β   βββ config/                    # Configuration files
β   β   β   βββ emailjs.js             # EmailJS setup
β   β   βββ utils/                     # Utility functions
β   βββ package.json                   # Node dependencies
β   βββ vite.config.js                 # Vite configuration
βββ Screenshots/                       # Application screenshots
β   βββ Screenshot_01.png              # Dashboard view
β   βββ Screenshot_02.png              # Features showcase
βββ start_servers.sh                   # Development startup script
βββ DEPLOYMENT.md                      # Deployment guide
βββ README.md                          # This file
The application is configured for easy deployment:
- Frontend: Deploy to Vercel
 - Backend: Deploy to Render
 - Database: MongoDB Atlas
 
- 
Prepare MongoDB Atlas
- Create cluster and database
 - Get connection string
 
 - 
Deploy Backend to Render
# Use render.yaml configuration # Set environment variables: # - MONGODB_URI # - ALLOWED_ORIGINS
 - 
Deploy Frontend to Vercel
# Set environment variable: # - VITE_API_BASE_URL
 - 
Configure EmailJS
- Set up Gmail service
 - Create OTP template
 - Update configuration
 
 
For detailed deployment instructions, see DEPLOYMENT.md.
Backend (Render):
RAILS_ENV=production
MONGODB_URI=mongodb+srv://...
ALLOWED_ORIGINS=https://your-app.vercel.app
SECRET_KEY_BASE=...
JWT_SECRET=...Frontend (Vercel):
VITE_API_BASE_URL=https://your-backend.onrender.com/api/v1- Create EmailJS account at emailjs.com
 - Set up Gmail service
 - Create OTP email template
 - Update 
frontend/src/config/emailjs.jswith your credentials 
For complete EmailJS setup, see COMPLETE_EMAILJS_SETUP.md.
- Color Palette: Dynamic colors for note organization
 - Typography: Clean, readable fonts with proper hierarchy
 - Spacing: Consistent padding and margins
 - Shadows: Subtle depth with layered shadows
 - Animations: Smooth transitions and hover effects
 
- Mobile First: Optimized for mobile devices
 - Tablet Friendly: Perfect layout for tablets
 - Desktop Enhanced: Rich experience on large screens
 - Touch Friendly: Large touch targets for mobile
 
- Keyboard Navigation: Full keyboard support
 - Screen Reader: Semantic HTML structure
 - Color Contrast: High contrast ratios
 - Focus States: Clear focus indicators
 
- JWT Tokens: Secure token-based authentication
 - Password Hashing: Devise handles secure password storage
 - Session Management: Secure session handling
 - CORS Protection: Configured cross-origin policies
 
- Input Validation: Server-side validation for all inputs
 - SQL Injection Protection: Mongoid ODM prevents injection
 - XSS Protection: React's built-in XSS protection
 - HTTPS: Secure communication in production
 
- Vite Build: Fast build times and hot reloading
 - Code Splitting: Automatic code splitting with React Router
 - Image Optimization: Optimized images and assets
 - Caching: Browser caching for static assets
 
- MongoDB Indexing: Optimized database queries
 - Connection Pooling: Efficient database connections
 - Caching: Rails caching for better performance
 - Compression: Gzip compression for API responses
 
- Hot Reloading: Instant updates during development
 - ESLint: Code linting and formatting
 - Debug Tools: Rails console and React DevTools
 - API Testing: Built-in health check endpoint
 
- Manual Testing: Comprehensive manual testing flow
 - API Testing: Test all endpoints with curl/Postman
 - Browser Testing: Cross-browser compatibility
 - Mobile Testing: Responsive design testing
 
- Health Checks: API health monitoring
 - Error Tracking: Automatic error logging
 - Performance Metrics: Built-in performance monitoring
 - User Analytics: Basic usage analytics
 
- Vercel Analytics: Frontend performance metrics
 - Render Monitoring: Backend performance and uptime
 - MongoDB Atlas: Database performance monitoring
 
- Fork the repository
 - Create a feature branch
git checkout -b feature/amazing-feature
 - Make your changes
 - Test thoroughly
 - Commit your changes
git commit -m 'Add 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.
Shiba Prasad
- GitHub: @theshibaprasad
 - Email: Contact via GitHub
 
- Rails Community - For the amazing Ruby on Rails framework
 - React Team - For the powerful React library
 - Tailwind CSS - For the beautiful utility-first CSS framework
 - MongoDB - For the flexible NoSQL database
 - EmailJS - For easy email integration
 - Vercel & Render - For excellent deployment platforms
 
Made with β€οΈ by Shiba Prasad
β Star this repository if you found it helpful!

