|
| 1 | +# Productify - Personal Productivity Dashboard |
| 2 | + |
| 3 | +A beautiful, feature-rich productivity dashboard built with vanilla HTML, CSS, and JavaScript. Designed with modern aesthetics and multiple theme options. |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | +## 🚀 Features |
| 8 | + |
| 9 | +- **Task Manager** - Create, complete, and delete tasks with filtering options |
| 10 | +- **Quick Notes** - Jot down thoughts with character counting and clipboard copy |
| 11 | +- **Focus Timer** - Pomodoro-style timer with visual ring animation |
| 12 | +- **Weather Widget** - Real-time weather based on your location |
| 13 | +- **Daily Quotes** - Inspirational quotes from external API |
| 14 | +- **8 Color Themes** - Dark and light theme variants |
| 15 | + |
| 16 | +## 🛠️ Technology Stack |
| 17 | + |
| 18 | +| Technology | Purpose | |
| 19 | +|------------|---------| |
| 20 | +| **HTML5** | Semantic structure and accessibility | |
| 21 | +| **CSS3** | Styling, animations, CSS variables for theming | |
| 22 | +| **Vanilla JavaScript** | DOM manipulation, event handling, async APIs | |
| 23 | +| **Lucide Icons** | Modern icon library via CDN | |
| 24 | +| **Google Fonts** | Inter & JetBrains Mono typography | |
| 25 | + |
| 26 | +## 📁 Project Structure |
| 27 | + |
| 28 | +``` |
| 29 | +dashboard/ |
| 30 | +├── index.html # Main HTML structure (483 lines) |
| 31 | +├── style.css # Complete styling & themes (2084 lines) |
| 32 | +├── script.js # Application logic (787 lines) |
| 33 | +└── README.md # Documentation |
| 34 | +``` |
| 35 | + |
| 36 | +## 🏗️ Architecture |
| 37 | + |
| 38 | +### HTML Structure |
| 39 | +``` |
| 40 | +├── Login Page (#login-page) |
| 41 | +│ ├── Login Card (form, inputs) |
| 42 | +│ └── Theme Toggle Button |
| 43 | +│ |
| 44 | +├── App Container (#app-container) |
| 45 | +│ ├── Sidebar (#sidebar) |
| 46 | +│ │ ├── Navigation Items |
| 47 | +│ │ └── User Profile |
| 48 | +│ │ |
| 49 | +│ └── Main Content (.main-content) |
| 50 | +│ ├── Top Header |
| 51 | +│ └── Page Views |
| 52 | +│ ├── Dashboard View (widgets grid) |
| 53 | +│ ├── Tasks View (fullscreen) |
| 54 | +│ ├── Notes View (fullscreen) |
| 55 | +│ └── Focus Timer View (fullscreen) |
| 56 | +│ |
| 57 | +├── Theme Modal (#theme-modal) |
| 58 | +└── Toast Notifications (#toast) |
| 59 | +``` |
| 60 | + |
| 61 | +### CSS Architecture |
| 62 | +- **CSS Custom Properties** for dynamic theming |
| 63 | +- **8 Theme Definitions**: Catppuccin Mocha/Latte, Tokyo Night/Light, Gruvbox Dark, Nord, Dracula, GitHub Light |
| 64 | +- **BEM-like naming** for component organization |
| 65 | +- **Flexbox & CSS Grid** for layouts |
| 66 | +- **CSS Animations** for smooth transitions |
| 67 | + |
| 68 | +### JavaScript Modules |
| 69 | + |
| 70 | +| Module | Description | |
| 71 | +|--------|-------------| |
| 72 | +| **DOM References** | Cached element selectors | |
| 73 | +| **Page Navigation** | View switching logic | |
| 74 | +| **Login System** | Authentication flow (demo) | |
| 75 | +| **Clock & Greeting** | Real-time updates | |
| 76 | +| **Weather API** | Async fetch with Open-Meteo | |
| 77 | +| **Quote API** | Async fetch with Quotable | |
| 78 | +| **Task Manager** | CRUD with event delegation | |
| 79 | +| **Notes** | Input handling & clipboard | |
| 80 | +| **Focus Timer** | Interval-based countdown | |
| 81 | +| **Theme Switcher** | Dynamic CSS variable updates | |
| 82 | + |
| 83 | +## 🌐 External APIs |
| 84 | + |
| 85 | +| API | Endpoint | Purpose | |
| 86 | +|-----|----------|---------| |
| 87 | +| **IP-API** | `ipapi.co/json` | Geolocation for weather | |
| 88 | +| **Open-Meteo** | `api.open-meteo.com` | Weather data | |
| 89 | +| **Quotable** | `api.quotable.io` | Random quotes | |
| 90 | + |
| 91 | +## 🎨 Available Themes |
| 92 | + |
| 93 | +### Dark Themes |
| 94 | +- Catppuccin Mocha (default) |
| 95 | +- Tokyo Night |
| 96 | +- Gruvbox Dark |
| 97 | +- Nord |
| 98 | +- Dracula |
| 99 | + |
| 100 | +### Light Themes |
| 101 | +- Catppuccin Latte |
| 102 | +- Tokyo Light |
| 103 | +- GitHub Light |
| 104 | + |
| 105 | +## 📚 JavaScript Concepts Demonstrated |
| 106 | + |
| 107 | +Per syllabus requirements: |
| 108 | + |
| 109 | +1. **DOM Basics** |
| 110 | + - `document.querySelector()` / `querySelectorAll()` |
| 111 | + - `createElement()` / `appendChild()` |
| 112 | + |
| 113 | +2. **Events** |
| 114 | + - `addEventListener()` with 'click', 'keydown', 'input', 'submit' |
| 115 | + |
| 116 | +3. **Event Delegation** |
| 117 | + - Single listener on `#task-list` handles all task button clicks |
| 118 | + |
| 119 | +4. **Async/Await** |
| 120 | + - `fetchWeather()` - Weather API integration |
| 121 | + - `fetchQuote()` - Quote API integration |
| 122 | + |
| 123 | +## 🚀 Getting Started |
| 124 | + |
| 125 | +1. Clone or download the project |
| 126 | +2. Open `index.html` in any modern browser |
| 127 | +3. Login with any username/password (demo mode) |
| 128 | +4. Explore the dashboard! |
| 129 | + |
| 130 | +## 📱 Responsive Design |
| 131 | + |
| 132 | +- **Desktop**: Full sidebar with collapsible option |
| 133 | +- **Tablet** (≤900px): Hidden sidebar with hamburger menu |
| 134 | +- **Mobile** (≤500px): Optimized layouts and touch-friendly |
| 135 | + |
| 136 | +## 🔧 Customization |
| 137 | + |
| 138 | +### Adding a New Theme |
| 139 | +```css |
| 140 | +[data-theme="your-theme"] { |
| 141 | + --bg-base: #hex; |
| 142 | + --bg-surface: #hex; |
| 143 | + --text-main: #hex; |
| 144 | + --accent: #hex; |
| 145 | + /* ... other variables */ |
| 146 | +} |
| 147 | +``` |
| 148 | + |
| 149 | +### Adding New Icons |
| 150 | +Uses [Lucide Icons](https://lucide.dev/) - add via: |
| 151 | +```html |
| 152 | +<i data-lucide="icon-name"></i> |
| 153 | +``` |
| 154 | + |
| 155 | +## 📄 License |
| 156 | + |
| 157 | +MIT License - Feel free to use and modify! |
| 158 | + |
| 159 | +--- |
| 160 | + |
| 161 | +Built with ❤️ using vanilla web technologies |
0 commit comments