Privacy‑first, offline‑capable schedule management app for students.
Built with Next.js + React + TailwindCSS + shadcn/ui.
100% client‑side, no accounts, no tracking, manage date via JSON.
- Overview
- Core Concepts
- Data Management
- Subject Management
- Schedule Table Management
- Time Slot Management
- Conflict Detection
- Text Generation & Export
- Accessibility Features
- Keyboard Shortcuts
- Contribution
Click to expand
Local Storage Scheduler is a privacy‑first, offline‑capable schedule management application designed for students.
All data is stored in the browser’s localStorage.
Philosophy:
- 🔒 Your data, your control
⚠️ Conflict‑first design- ♿ Accessibility‑focused
- 📤 Export freedom (JSON import/export)
Click to expand
Click to expand
- Import Data: Upload JSON, validate, confirm overwrite
- Export Data: Download JSON backup (
scheduler-data-YYYY-MM-DD.json) - Clear All Data: Wipe everything with confirmation
Click to expand
- Create, Edit, Delete subjects
- Color palette (orange, teal, purple, pink)
- Subject cards show name, stub, teacher, room
Click to expand
- Create new schedules (semester, quarter, session)
- Switch via dropdown
- Edit names, delete schedules (with confirmation)
Click to expand
- Grid layout: Time (vertical), Days (horizontal)
- Add/Edit/Delete slots with validation
- Conflicts checked automatically
Click to expand
- Overlaps on same day = conflict
- Visual indicators: red background, warning icon
- Conflict counter at top
- Workflow: edit times/days to resolve
Click to expand
- Detailed Format (multi‑line)
- Inline Format (compact)
- Options: toggle room/teacher/codes/notes, time format, spacing
- Actions: Copy to clipboard, Download
.txt - Live preview
Click to expand
- Font size adjustment (small → extra large)
- High contrast mode (WCAG AAA)
- Reduced motion (no animations)
- Screen reader support (ARIA, semantic HTML, NVDA/JAWS/VoiceOver tested)
Click to expand
| Shortcut | Action |
|---|---|
| Alt+1 | Schedule tab |
| Alt+2 | Subjects tab |
| Alt+3 | Guide tab |
| Alt+4 | Settings tab |
| Ctrl/⌘+K | Keyboard shortcuts dialog |
| Esc | Close dialog |
| Tab / Shift+Tab | Navigate |
| Enter | Activate |
| Space | Toggle |
Click to expand
- Fork the repo, clone, install dependencies, run dev build.
- Report issues with browser/version, repro steps, screenshots, console errors.
- Submit feature PR requests with description, use case, mockups.
- Frameworks: Next.js 16, React 19.2, TypeScript
- Styling: TailwindCSS v4, shadcn/ui, dark mode orange accent
- State: Context API + localStorage
- Libraries: date-fns, lucide-react, sonner
- Storage:
localStoragekeyscheduler-app-state - Components:
/components/subjects/*,/components/schedule/*,/components/settings/* - Performance: Lazy loading, memoization, debounced writes, virtual scrolling
- Future Enhancements: Themes, drag‑and‑drop, iCal export, conflict resolution suggestions
MIT License — open source, free to use and contribute.


