A modern, responsive daily-use dashboard web application built with vanilla HTML, CSS, and JavaScript. Features a 3×3 grid layout with 9 customizable cards for managing tasks, ideas, reminders, and more, plus a powerful PeerJS P2P File Sharing feature.
- 9 Category Cards: To Do, Running Tasks, Ideas, Completed Tasks, Timer, Reminder, Exam Schedule, Problem List, and New Things to Learn
- File View Card: Dedicated card to view and manage received shared files
- Click to View: Click any category card to view all items in a detailed modal
- Persistent Storage: All data saved to IndexedDB for better performance and capacity
- Add Items: Click "Add Item" button in modal or use dedicated add.html page
- Task Management: Mark tasks as complete/incomplete, delete items
- Timer: Functional timer with start, pause, and reset controls
- Date Tracking: Optional date field with status badges (overdue, today, upcoming)
- Reminders: Displays upcoming items with dates
- Data Management: Export, import, and clear all data with one click
- Simple 3-Step Process: Enter room code → Select file → Send
- Peer-to-Peer Transfer: Direct file sharing between devices without uploading to any server
- Host/Client Pattern: First device becomes host, second auto-connects as client
- 4-Digit Room Codes: Easy-to-share room codes for quick pairing (e.g., 1234)
- No File Size Limits: Share files of any size (limited only by available memory)
- Connection Persistence: Connection stays alive between multiple file transfers
- Progress Tracking: Real-time progress bars for sending and receiving
- Secure: Files transfer directly between devices via encrypted WebRTC connection
- Local Storage: Received files stored in IndexedDB for offline access
- Cross-Platform: Share files from mobile to browser, computer to computer, or any combination
- IndexedDB: All data stored in IndexedDB for better performance
- Larger Capacity: Can store much more data than localStorage
- Binary Files: Store received files with full metadata
- 4 Data Stores: Items, Timer, Settings, Files
- Export/Import: Backup and restore all data (v2.0 format includes files)
- Clear Data: Complete data wipe with double confirmation
-
Download the files to your local machine:
daily-use-dashboard/ ├── index.html ├── add.html ├── style.css ├── app.js └── README.md -
Open in Browser:
- Simply double-click
index.htmlto open in your default browser - Or right-click → Open With → Choose your browser
- Create a shortcut of index.html on the desktop and always open with same browser as the data is stored in browser's IndexedDB
- Simply double-click
-
Start Using:
- Dashboard opens automatically
- Hover over ⚙️ icon (top-left) to access Export/Import/Clear data
- Click any card (except Timer) to view all items in that category
- Click "➕ Add Item" in the modal to add new items
- Use the dark mode toggle (🌙) in the top-right corner
- Click the file share button (📁) in the bottom-right to transfer files!
- Click 📁 File Share button (bottom-right floating button)
- Enter a 4-digit room code (e.g.,
1234) - Wait for Device 2 to connect
- Click 📁 File Share button
- Enter the same 4-digit room code as Device 1
- Automatically connects to Device 1
- Once connected, click 📤 Select File
- Choose the file to send
- File transfers automatically with progress bar
- Connection stays alive for multiple file transfers
- First device = Host: Creates the room and waits
- Second device = Client: Auto-connects to the host
- No Codes to Copy: Just share the 4-digit room number
- Persistent Connection: Send multiple files without reconnecting
- Works Across Networks: Uses STUN servers for NAT traversal
- Progress Tracking: See real-time progress of transfers
- File Management: View, download, or delete received files in Files card
- Both devices must be online during the transfer
- Works across different networks (uses STUN servers)
- No file size limits - transfer large files directly
- Files are NOT uploaded to any server - completely P2P
- Received files stored locally in IndexedDB
- Connection persists until you close the overlay or reload page
- Hover over ⚙️ icon → Click 📥 Export
- Downloads JSON file with all data (items, timer, settings, files)
- Format:
dashboard-backup-YYYY-MM-DD.json - Version 2.0 format includes shared files
- Hover over ⚙️ icon → Click 📤 Import
- Select previously exported JSON file
- Replaces all current data with imported data
- Supports both v1.0 (old) and v2.0 (new) formats
- Hover over ⚙️ icon → Click 🗑️ Clear
- Double confirmation required
- Permanently deletes all data (items, timer, settings, files)
- Cannot be undone - use Export first to backup!
daily-use-dashboard/
│
├── index.html # Main dashboard page (3×3 grid + file share)
├── add.html # Add item form page
├── style.css # All styling (light/dark mode, responsive design)
├── app.js # Application logic (IndexedDB, PeerJS, data management)
└── README.md # This file
The app uses modular components:
DBManager
├── init() # Initialize IndexedDB
├── getAll() # Get all items from store
├── get() # Get single item
├── put() # Add/update item
├── delete() # Delete item
└── clear() # Clear entire store
FileShareManager
├── connect() # Connect as host or client
├── sendFile() # Send file with progress
├── saveReceivedFile() # Save to IndexedDB
└── close() # Close connection
DashboardApp
├── loadItems() # Load items from IndexedDB
├── exportData() # Export all data to JSON
├── importData() # Import data from JSON
├── clearAllData() # Clear all data with confirmation
├── Timer Management # Start, pause, reset timer
└── UI Management # Dark mode, modals, notificationsAll data is stored in browser's IndexedDB with 4 object stores:
{
id: "1234567890",
category: "todo",
title: "Complete project",
description: "Finish the dashboard app",
date: "2026-01-25",
completed: false,
createdAt: "2026-01-22T10:30:00.000Z"
}{
id: "state",
seconds: 3600,
running: false
}{
key: "darkMode",
enabled: true
}{
id: 1,
name: "document.pdf",
size: 1048576,
type: "application/pdf",
data: ArrayBuffer,
timestamp: 1706112000000
}- HTML5: Semantic markup
- CSS3: Modern styling with CSS Grid, Flexbox, Custom Properties
- JavaScript ES6+: Async/await, Modules, Classes
- IndexedDB API: Client-side storage
- PeerJS v1.5.2: WebRTC abstraction for P2P connections
- WebRTC: Direct peer-to-peer data transfer
- ✅ No Dependencies: Pure vanilla JavaScript (PeerJS via CDN)
- ✅ Responsive Design: Works on mobile, tablet, and desktop
- ✅ Dark Mode: System-aware with manual toggle
- ✅ Offline Capable: All data stored locally
- ✅ Fast & Lightweight: No build tools, no frameworks
- ✅ Privacy-Focused: No server, no tracking, no cloud storage
- Chrome/Edge 89+
- Firefox 87+
- Safari 14+
- Opera 75+
Requires:
- IndexedDB support
- WebRTC support (for file sharing)
- JavaScript enabled
This project is free to use and modify. No attribution required.
Feel free to fork, modify, and improve this project!
For issues or questions, please check:
- Browser console for JavaScript errors
- IndexedDB support in your browser
- JavaScript enabled
- WebRTC support (for file sharing feature)
Built with ❤️ using vanilla HTML, CSS & JavaScript
No frameworks. No dependencies. Just pure web development.