No description
- Vue 59.4%
- TypeScript 37.9%
- CSS 1.6%
- HTML 0.7%
- JavaScript 0.4%
| public | ||
| src | ||
| .gitignore | ||
| index.html | ||
| package.json | ||
| README.md | ||
| tailwind.config.js | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
Notes App - Vite + Vue 3 + Tailwind CSS
A modern, responsive note-taking application with offline support using IndexDB.
Features
✨ Core Features
- 📁 Project-based Organization: Create projects to organize your documents
- 📄 Rich Documents: Add titles, notes, todo lists, and file attachments
- 🎨 Dark/Light Theme: Toggle between dark and light modes (saved in browser)
- 📱 Responsive Design: Works seamlessly on mobile and desktop
- 💾 Offline First: All data stored in IndexDB, no server required
- ⚡ No Dependencies: Uses plain Vue 3 reactivity and IndexDB APIs
Document Features
- Title (mandatory)
- Note (optional markdown text)
- Todo List (optional, add/edit/delete todos)
- File Attachments (images and PDFs with thumbnails)
- Preview Mode (default) with Edit button
- Edit Mode for updating all content
UI/UX
- Sidebar Navigation: Tree view of projects and documents
- Only Active Project Opens: Click to expand/collapse projects
- Theme Toggle: Button in sidebar to switch themes
- Modal Dialogs: For creating projects and documents
- Responsive Layout: Adapts from mobile to desktop
Tech Stack
- Frontend: Vue 3 with TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS v4
- Storage: IndexDB (native browser API)
- No External Dependencies: For data storage and state management
Getting Started
Prerequisites
- Node.js 16+ and npm
Installation & Development
# Install dependencies
npm install
# Start development server
npm run dev
The app will open at http://localhost:5173
Building for Production
# Build the project
npm run build
# Preview the production build
npm run preview
Project Structure
src/
├── components/
│ ├── App.vue # Main app component
│ ├── Sidebar.vue # Project/document tree navigation
│ └── DocumentEditor.vue # Document preview and editor
├── composables/
│ └── useTheme.ts # Dark/light theme management
├── stores/
│ └── noteStore.ts # IndexDB operations and reactive state
├── style.css # Tailwind CSS configuration
└── main.ts # App entry point
Usage Guide
Creating a Project
- Click "+ New Project" button in the sidebar
- Enter project name and click Create
Adding Documents
- Select a project (click to expand)
- Click "+ Add Document" at the bottom
- Enter document title and click Create
Editing a Document
- Click a document in the sidebar to select it
- Click the ✏️ Edit button to enter edit mode
- Add or modify:
- Document title
- Note text
- Todo items (add/remove as needed)
- File attachments (images and PDFs)
- Click Save to save changes
Uploading Files
- In edit mode, click the file upload area
- Select images or PDFs (max 5MB per file)
- Images show thumbnail previews
- PDFs display with a PDF icon
Theme Toggle
- Click the sun/moon icon (☀️/🌙) in the top right of the sidebar
- Theme preference is saved in browser localStorage
Data Storage
All data is stored in IndexDB with these object stores:
- projects: Project metadata
- documents: Document data (title, note, todos, file references)
- files: Attached files (images and PDFs)
Data persists even after closing the browser and works completely offline.
Dark Mode
The app uses Tailwind's class-based dark mode (triggered by the dark class on <html>).
The theme preference is stored in localStorage and applied on page load based on:
- Stored preference (highest priority)
- System preference (if no stored preference)
- Light mode (default)
Browser Compatibility
- Chrome/Edge 24+
- Firefox 18+
- Safari 10+
- Any browser with IndexDB support
Offline Support
- ✅ Works completely offline
- ✅ All data synced to IndexDB
- ✅ No network requests required
- ✅ Theme preference persists
Future Enhancements
- Export documents to Markdown/PDF
- Search functionality
- Document sharing
- Collaborative editing
- Cloud sync (optional)
License
MIT