Skip to content

🦊 A clean, responsive Todo app built with React, Zustand, and styled-components β€” focused on simplicity, accessibility, and flow.

Notifications You must be signed in to change notification settings

UlrikaRakkaBrant/js-project-todo

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

17 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🦊 FocusDen

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


πŸ–ΌοΈ Preview

FocusDen app screenshot


✨ Features

  • βœ… 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

🧠 Tech Stack

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

πŸ—‚οΈ Folder Structure

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

πŸͺ„ Getting Started

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.


πŸš€ Stretch Goals

πŸ•“ Filter tasks by due date or overdue
🏷️ Add tags / categories
πŸ”” Add reminders or notifications
☁️ Sync tasks with a backend or cloud API


πŸ“± Responsiveness

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

β™Ώ Accessibility

βœ” Visible focus states and proper labels
βœ” aria-live announcements for task counts
βœ” Sufficient color contrast (WCAG AA)
βœ” Keyboard-friendly navigation
βœ” Semantic HTML structure


πŸ‘©β€πŸ’» Author

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.”


πŸͺΆ License

This project is open source and available under the MIT License.


πŸ’« Connect

πŸ”— Live app: focusden.netlify.app
πŸ’» GitHub repo: github.com/yourusername/focusden
🧭 Portfolio: ulrikasportfolio.netlify.app
πŸ’Ό LinkedIn: ulrika-einebrant

About

🦊 A clean, responsive Todo app built with React, Zustand, and styled-components β€” focused on simplicity, accessibility, and flow.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 97.3%
  • HTML 2.2%
  • CSS 0.5%