diff --git a/README.md b/README.md index d1c68b5..ef7491d 100644 --- a/README.md +++ b/README.md @@ -1 +1,132 @@ -# Todo \ No newline at end of file +# π¦ 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](https://focusden.netlify.app) + +--- + +## πΌοΈ Preview + + + +--- + +## β¨ 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](https://focusden.netlify.app) +π» **GitHub repo:** [github.com/yourusername/focusden](https://github.com/yourusername/focusden) +π§ **Portfolio:** [ulrikasportfolio.netlify.app](https://ulrikasportfolio.netlify.app/) +πΌ **LinkedIn:** [ulrika-einebrant](https://www.linkedin.com/in/ulrika-einebrant/) diff --git a/index.html b/index.html index f7ac4e4..6c85279 100644 --- a/index.html +++ b/index.html @@ -1,16 +1,27 @@ -
- - - -