A beautiful, modern notes application with iOS-inspired design
A minimalist notes app built with vanilla JavaScript, featuring a clean iOS-inspired UI, dark/light themes, multilingual support, and intuitive note management.
Features โข Demo โข Installation โข Usage โข Contributing
iOS Notes is a lightweight, browser-based notes application that brings the elegance of iOS design to the web. Built entirely with vanilla JavaScript, HTML, and CSS - no frameworks, no dependencies, just pure code.
- ๐จ iOS-Inspired Design - Beautiful, clean interface inspired by Apple's Notes app
- โก Zero Dependencies - No build process, no npm, just open and use
| Feature | Description |
|---|---|
| ๐ Pin Notes | Pin important notes to keep them at the top |
| ๐ Smart Search | Real-time search through all notes by title or content |
| ๐จ Themes | Light and dark themes with system preference detection |
| ๐ Multilingual | English and Russian language support (easily extensible) |
| ๐ฑ Responsive Design | Optimized for mobile, tablet, and desktop |
| ๐ฏ Selection Mode | Select multiple notes for batch operations |
| ๐ View Modes | Switch between list and gallery views |
| ๐พ Local Storage | All data stored locally in your browser |
| โจ Smooth Animations | Beautiful UI transitions and micro-interactions |
| ๐ Smart Grouping | Notes automatically grouped by time (Today, Yesterday, This Week, etc.) |
| ๐ Duplicate Notes | Quickly duplicate any note |
| ๐๏ธ Batch Delete | Delete multiple notes at once |
| ๐ Rich Editing | Clean, distraction-free editing experience |
No dependencies required! Just a modern web browser.
- Clone the repository:
git clone https://github.com/shishkannov/ios-notes.git- Navigate to the project directory:
cd notes-app- Open
index.htmlin your web browser.
That's it! The app runs entirely in the browser with no build process needed.
You can run the app in several ways:
Option 1: Direct file opening
- Simply double-click
index.htmlto open it in your default browser
Option 2: Local server (recommended)
- Using Python:
python -m http.server 8000- Using Node.js (with http-server):
npx http-server- Using PHP:
php -S localhost:8000Then open http://localhost:8000 in your browser.
notes-app/
โโโ index.html # Main HTML file
โโโ css/ # Stylesheets
โ โโโ main.css # Main CSS file (imports all modules)
โ โโโ variables.css # CSS variables and theme definitions
โ โโโ base.css # Base styles and reset
โ โโโ components.css # Component styles (modals, buttons, cards, etc.)
โ โโโ media-small-mobile.css # Styles for small mobile devices (โค480px)
โ โโโ media-mobile.css # Styles for mobile devices (โค768px)
โ โโโ media-tablet.css # Styles for tablet devices (769px-1024px)
โ โโโ media-desktop.css # Styles for desktop devices (โฅ1025px)
โ โโโ media-landscape.css # Landscape orientation styles
โโโ js/ # JavaScript modules
โ โโโ state.js # Application state management
โ โโโ dom.js # DOM element references
โ โโโ localization.js # Internationalization (i18n)
โ โโโ utils.js # Utility functions (date formatting, text truncation, etc.)
โ โโโ notes.js # Note management (CRUD operations, rendering)
โ โโโ ui.js # UI components (modals, toasts, menus, selection mode)
โ โโโ main.js # Application initialization and event handlers
โโโ README.md # Project documentation
โโโ LICENSE # MIT License
โโโ .gitignore # Git ignore rules
state.js- Manages global application state (notes array, current note ID, search query, language, view mode, selection mode)dom.js- Contains all DOM element references for easy access throughout the applicationlocalization.js- Handles translations and language switching (English/Russian)utils.js- Helper functions: HTML escaping, text truncation, date formatting, Russian pluralizationnotes.js- Core note functionality: CRUD operations, rendering, time-based grouping, note cards creationui.js- UI components: toast notifications, modals, menus, theme switching, view mode, selection modemain.js- Application entry point: initialization, event handlers setup, periodic updates
variables.css- CSS custom properties for colors, spacing, and theme definitionsbase.css- Reset styles, base typography, scrollbar styling, container layoutcomponents.css- All component styles: header, notes, modals, toasts, menus, selection modemedia-small-mobile.css- Responsive styles for small mobile devices (max-width: 480px)media-mobile.css- Responsive styles for mobile devices (max-width: 768px)media-tablet.css- Responsive styles for tablet devices (769px - 1024px)media-desktop.css- Responsive styles for desktop and large desktop devices (โฅ1025px)media-landscape.css- Landscape orientation styles for mobile devicesmain.css- Main file that imports all CSS modules in the correct order
- Click the + button at the bottom of the screen
- Enter a title and content
- Click Save
- Click on any note card to open it for editing
- Make your changes and click Save
- Open a note for editing
- Click the Pin button in the modal actions
- Pinned notes appear at the top in a separate section
- Type in the search bar to filter notes by title or content
- The search icon changes to a clear button (ร) when there's text
- Click the menu button (โฎ) in the top right
- Select "Select" option
- Use checkboxes to select notes
- Use "Select all" to select all visible notes
- Use "Deselect all" to clear selection
- Click "Delete" to remove selected notes
- Click "Done" (checkmark icon) to exit selection mode
- List View - Single column layout
- Gallery View - Multi-column grid layout (2 columns on desktop)
Switch between modes via the menu (โฎ) โ "Show as gallery" / "Show as list"
Toggle between light and dark themes via the menu (โฎ) โ "Toggle theme"
The app automatically detects your system theme preference on first load.
Switch between English and Russian via the menu (โฎ) โ "Switch language"
- HTML5 - Semantic markup
- CSS3 - Modern styling with CSS variables, flexbox, and grid
- Vanilla JavaScript - No frameworks, pure ES6+
- LocalStorage API - Client-side data persistence
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
The app is fully responsive and optimized for all screen sizes:
- Small Mobile (โค480px) - Optimized layout with smaller fonts and spacing
- Mobile (โค768px) - Single column layout, full-width modals
- Tablet (769px-1024px) - Adjusted grid layout, medium-sized containers
- Desktop (โฅ1025px) - Full-width layout with optimal spacing
- Large Desktop (โฅ1440px) - Expanded layout with increased container width
All responsive styles are organized in separate CSS files for better maintainability.
- iOS-inspired UI - Clean, modern interface
- Glassmorphism - Frosted glass effects on modals and buttons
- Smooth Animations - CSS transitions and keyframe animations
- Responsive Design - Mobile-first approach
- Accessibility - Semantic HTML and ARIA labels
All notes are stored locally in your browser's localStorage. Your data never leaves your device.
Edit js/localization.js and add translations to the translations object:
const translations = {
en: { /* English translations */ },
ru: { /* Russian translations */ },
// Add your language here
es: {
title: 'Notas',
// ... more translations
}
};Edit css/variables.css to customize the color scheme:
:root {
--accent: #007aff; /* Change accent color */
--danger: #ff3b30; /* Change danger color */
/* ... */
}Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Design inspired by iOS Notes app
- Icons from custom SVG designs
- Font stack: SF Pro Display, Segoe UI, Roboto
- Lines of Code: ~1,200+ (JavaScript + CSS)
- Modules: 7 JavaScript modules, 9 CSS modules
- Languages: JavaScript, HTML, CSS
- Dependencies: None
- Browser Support: Modern browsers (Chrome, Firefox, Safari, Edge)
If you find this project useful, please consider giving it a โญ on GitHub!
- ๐ Found a bug? Open an issue
- ๐ก Have a suggestion? Create a feature request
- ๐ค Want to contribute? See CONTRIBUTING.md
This project is licensed under the MIT License - see the LICENSE file for details.
Made with โค๏ธ using vanilla JavaScript