Let your hands create what your eyes fear to imagine.
A calm, minimalist productivity app built with React, Zustand, and styled-components.
FocusDen helps you stay organized and present β without noise or clutter.
π Live demo: https://focusden.netlify.app
- β Add, complete, and delete tasks
- β Filter by All / Active / Completed
- β Optional due date and automatic βOverdueβ indicator
- β Character counter on new tasks
- β
Persistent data with
localStorage - β Light & dark mode toggle
- β Clean, responsive layout (320pxβ1600px)
- β 95+ Lighthouse accessibility score
- π¦ Minimalist, focus-friendly design
| Technology | Purpose |
|---|---|
| βοΈ React (Vite) | Core UI framework |
| πͺ£ Zustand | Global state management (no prop drilling) |
| π styled-components | Component-scoped styling |
| π date-fns | Date formatting & overdue logic |
| π localStorage | Persistent task storage |
| π§ͺ ESLint + Vite | Clean, fast developer setup |
src/
ββ assets/
β ββ favicon.jpg
β ββ focusden-preview.png
ββ components/
β ββ TodoForm.jsx
β ββ TodoList.jsx
β ββ TodoItem.jsx
β ββ EmptyState.jsx
β ββ Footer.jsx
ββ store/
β ββ useTodoStore.js
β ββ useThemeStore.js
ββ styles/
β ββ GlobalStyles.js
β ββ media.js
ββ App.jsx
ββ main.jsx
1οΈβ£ Install dependencies
β Run: npm install
2οΈβ£ Start the app locally
β Run: npm run dev
3οΈβ£ Build for production
β Run: npm run build
Then open the generated /dist folder in your browser.
π Filter tasks by due date or overdue
π·οΈ Add tags / categories
π Add reminders or notifications
βοΈ Sync tasks with a backend or cloud API
| Device | Example width | Behavior |
|---|---|---|
| π± Mobile | up to 480px | Stacked layout, larger tap areas |
| π» Tablet | β₯ 768px | Balanced grid, adaptive text |
| π₯οΈ Desktop | β₯ 1024px | Fixed-width centered container |
| π₯οΈ XL screens | β₯ 1440px | Fluid, maximum readability |
β Visible focus states and proper labels
β aria-live announcements for task counts
β Sufficient color contrast (WCAG AA)
β Keyboard-friendly navigation
β Semantic HTML structure
Made with π΅, π§, curiosity, and a generous dose of AI magic by Ulrika Einebrant. Frontend developer passionate about clean design, accessibility, and calm user experiences. βLet your hands create what your eyes fear to imagine.β
This project is open source and available under the MIT License.
π Live app: focusden.netlify.app
π» GitHub repo: github.com/yourusername/focusden
π§ Portfolio: ulrikasportfolio.netlify.app
πΌ LinkedIn: ulrika-einebrant
