A feature-rich, client-side note-taking application built with vanilla JavaScript, HTML5, and CSS3. Jotter Note offers a seamless, app-like experience in your browser with offline capabilities through local storage.
Jotter Note follows a modular architecture with clear separation of concerns:
jotter-note/
├── index.html # Main HTML structure
├── style.css # All styling and animations
├── script.js # Core application logic
└── README.md # Project documentation
-
Data Layer
- Uses
localStoragefor persistent note storage - Implements CRUD operations for notes
- Handles data validation and sanitization
- Uses
-
Presentation Layer
- Responsive layout using CSS Grid and Flexbox
- Smooth animations and transitions
- Dark theme with customizable color variables
-
Business Logic
- Text formatting using
document.execCommand - Event delegation for dynamic elements
- Form handling and validation
- Text formatting using
- Bold/Italic/Underline text formatting
- Real-time preview of formatted content
- Preserves formatting when editing notes
- Keyboard Shortcuts:
Ctrl + Enter: Save noteTab: Navigate between fieldsEscape: Close modals
- Responsive Design: Adapts to different screen sizes
- Visual Feedback: Hover states and loading indicators
- Local Storage: Notes persist between sessions
- CRUD Operations: Full support for Create, Read, Update, Delete
- State Management: Tracks active note and UI state
- Modern web browser (Chrome 80+, Firefox 75+, Safari 13.1+)
- JavaScript enabled
- No server or database required
-
Clone the repository:
git clone https://github.com/yourusername/jotter-note.git cd jotter-note -
Launch the application:
- Option 1: Double-click
index.html - Option 2: Use a local server (recommended):
# Using Python's built-in server python -m http.server 8000 # Then open http://localhost:8000 in your browser
- Option 1: Double-click
-
Start taking notes! Your notes will be automatically saved to your browser's local storage.
-
Create a Note:
- Type your title in the top field
- Write your note in the main text area
- Click the
+button or pressCtrl + Enterto save
-
Format Text:
- Select text and use the B/I/U buttons to apply formatting
- Or use standard keyboard shortcuts (Ctrl+B, Ctrl+I, Ctrl+U)
-
Edit/Delete Notes:
- Click the eye icon to view a note
- Click the pencil icon to edit
- Click the trash icon to delete
-
Initialization:
- Load notes from localStorage
- Render note list
- Set up event listeners
-
Note Creation:
function addNote() { const note = { id: Date.now(), title: titleInput.value, content: noteInput.innerHTML, createdAt: new Date().toISOString() }; // Save to localStorage and update UI }
-
Text Formatting:
- Uses
document.execCommandfor rich text editing - Maintains selection state during formatting
- Handles edge cases with nested elements
- Uses
- Debounced Saving: Prevents excessive localStorage writes
- Event Delegation: Efficient handling of dynamic elements
- Minimal Dependencies: Vanilla JS for better performance
- Primary:
#2E236C(Dark Blue) - Secondary:
#433D8B(Lighter Blue) - Accent:
#C8ACD6(Lavender) - Text:
#F5F5F5(White) - Background:
#17153B(Dark Navy)
- Primary Font: Nunito (Clean, readable sans-serif)
- Headings: DM Serif Display (Elegant serif for contrast)
- Code: Monospace for technical elements
- Button Hover: Subtle scale and color transitions
- Modal Transitions: Smooth fade and slide effects
- Note Addition/Removal: Visual feedback with animations
- HTML5: Semantic markup and structure
- CSS3: Styling, animations, and responsive design
- JavaScript (ES6+): Core application logic
- Local Storage API: For data persistence
- CSS Variables: For theme management
- Flexbox/Grid: Modern layout techniques
- Font Awesome: For icons
- Google Fonts: Typography
- Browser DevTools: For debugging
- Git: Version control
- VS Code: Code editor with extensions for linting
- Note categories/tags
- Search functionality
- Markdown support
- Note sharing
- Dark/Light theme toggle
- Add unit tests
- Improve accessibility
- Add service worker for offline support
- 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
- Limited text formatting options
- No image support
- Basic error handling
This project is licensed under the MIT License - see the LICENSE file for details.
- Font Awesome for icons
- Google Fonts for typography
- Modern CSS techniques from CSS-Tricks
Made with ❤️ by [Your Name] | Live Demo | Report Bug | Contribute
