Skip to content

Commit 67252bc

Browse files
committed
chore: align package branding with FocusFlow
1 parent b5ef908 commit 67252bc

3 files changed

Lines changed: 133 additions & 75 deletions

File tree

README.md

Lines changed: 130 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,111 @@
1+
<div align="center">
2+
13
# FocusFlow
24

3-
FocusFlow is an installable Angular productivity workspace for focused work, lightweight task planning, and healthier recovery habits.
5+
**A wellness-aware Angular PWA for focused work, task flow, and sustainable recovery.**
6+
7+
FocusFlow combines a focus timer, Pomodoro workflows, Kanban planning, and lightweight wellness prompts in a local-first productivity workspace.
8+
9+
![Angular](https://img.shields.io/badge/Angular-21-DD0031?style=flat-square&logo=angular&logoColor=white)
10+
![TypeScript](https://img.shields.io/badge/TypeScript-5.9-3178C6?style=flat-square&logo=typescript&logoColor=white)
11+
![RxJS](https://img.shields.io/badge/RxJS-7.8-B7178C?style=flat-square&logo=reactivex&logoColor=white)
12+
![PWA](https://img.shields.io/badge/PWA-Installable-5A0FC8?style=flat-square)
13+
![Cypress](https://img.shields.io/badge/Cypress-E2E-17202C?style=flat-square&logo=cypress&logoColor=white)
14+
![i18n](https://img.shields.io/badge/i18n-EN%20%7C%20ES%20%7C%20FR-2563EB?style=flat-square)
15+
![Offline first](https://img.shields.io/badge/Offline--first-localStorage-0F766E?style=flat-square)
16+
![Accessibility](https://img.shields.io/badge/Accessibility-keyboard%20ready-4B5563?style=flat-square)
417

5-
It combines a focus timer, Pomodoro workflows, a Kanban board, and wellness-aware break suggestions in a frontend-only PWA that works well on desktop, tablet, and mobile.
18+
</div>
19+
20+
---
621

722
## Overview
823

9-
FocusFlow is built around a simple idea: productivity tools should support attention without ignoring recovery. The app helps users plan tasks, run focused sessions, track meaningful daily progress, and take small movement or wellness breaks without adding noise to the workflow.
24+
FocusFlow is a frontend-only productivity app designed for people who want structure without extra noise. It helps users plan tasks, run focused sessions, follow Pomodoro rhythms, and take short recovery breaks without leaving the workspace.
25+
26+
The product philosophy is simple: focus and recovery belong in the same workflow. FocusFlow keeps productivity metrics practical, wellness prompts lightweight, and all user data local to the browser.
27+
28+
## Why FocusFlow
1029

11-
The application is fully client-side and offline-first. User preferences, sessions, tasks, wellness exercises, language settings, and productivity state are persisted locally with safe restoration and fallback behavior.
30+
- **Focused by default:** start sessions quickly, track meaningful progress, and keep the active task visible when needed.
31+
- **Wellness-aware:** use Wellness or Hybrid mode for movement-friendly breaks and concise exercise suggestions.
32+
- **Local-first:** tasks, sessions, settings, language, theme, and custom exercises persist offline.
33+
- **Installable:** runs as a desktop or mobile PWA after the production build is deployed.
34+
- **Portfolio-ready:** built as a polished Angular application with realistic product constraints.
1235

1336
## Features
1437

15-
- Focus timer with completion tracking and daily productivity stats
38+
### Productivity
39+
40+
- Focus timer with completion, skipped-session, streak, and focus-minute tracking
1641
- Pomodoro mode with configurable focus, short break, and long break durations
17-
- Wellness mode for movement-friendly work sessions
18-
- Hybrid mode that blends focus sessions with active recovery prompts
19-
- Kanban workspace with task creation, editing, completion, archiving, restore, filtering, sorting, and drag/drop-ready workflows
20-
- Custom wellness exercises by category, including stretching, mobility, cardio, strength, and Pilates
21-
- Sound personalization with volume, preset, and repeat alert settings
22-
- Runtime internationalization for English, Spanish, and French
23-
- Installable PWA support with manifest, service worker, offline asset caching, and app-like standalone behavior
24-
- LocalStorage-backed offline persistence with defensive normalization for legacy or malformed data
25-
- Responsive layouts for desktop, installed PWA windows, tablets, and mobile screens
26-
- Accessibility-minded interaction design with keyboard navigation, focus handling, labels, and live announcements
42+
- Kanban workspace with create, edit, complete, archive, restore, filter, sort, and drag/drop-ready task flows
43+
- Daily productivity stats derived from canonical task and session history
44+
- Sound presets, volume control, and optional repeating completion alerts
45+
46+
### Wellness
47+
48+
- Wellness mode for recovery-oriented sessions
49+
- Hybrid mode for focus sessions with active break suggestions
50+
- Custom wellness exercises grouped by stretching, mobility, cardio, strength, and Pilates
51+
- Recovery Rhythm insights for completed and omitted recovery interactions
52+
- Mode-aware session notifications with concise recovery suggestions
53+
54+
### PWA & Offline
55+
56+
- Angular service worker integration
57+
- Installable standalone app behavior
58+
- Offline asset caching after first visit
59+
- LocalStorage persistence with defensive restore logic
60+
- Desktop, tablet, mobile, and installed PWA responsive polish
61+
62+
### Accessibility & i18n
63+
64+
- Keyboard-friendly primary flows
65+
- Visible focus states and focus restoration
66+
- ARIA labels and live announcements for meaningful state changes
67+
- Runtime language switching for English, Spanish, and French
68+
- Responsive controls designed to remain usable on small screens
2769

2870
## Tech Stack
2971

30-
- Angular
31-
- TypeScript
32-
- RxJS
33-
- SCSS
34-
- Angular CDK
35-
- Angular service worker / PWA support
36-
- ngx-translate
37-
- Vitest / Angular test runner
38-
- Cypress
72+
| Area | Tools |
73+
| --- | --- |
74+
| Framework | Angular |
75+
| Language | TypeScript |
76+
| State & async | RxJS |
77+
| Styling | SCSS |
78+
| UI behavior | Angular CDK |
79+
| PWA | Angular service worker, web app manifest |
80+
| i18n | ngx-translate |
81+
| Testing | Angular test runner, Vitest, Cypress |
3982

4083
## Architecture
4184

42-
FocusFlow uses a frontend-only Angular architecture with feature modules for the timer and Kanban workspace. State is owned by focused Angular services and exposed through RxJS streams so UI components can stay mostly presentational.
85+
FocusFlow uses a modular Angular structure with service-owned state and focused UI components.
4386

44-
The app does not require a backend. Persistence is handled through localStorage with validation and normalization on restore. Productivity metrics are derived from canonical session and task history instead of separate drifting counters.
87+
```text
88+
src/app/
89+
features/
90+
kanban/
91+
components/
92+
models/
93+
services/
94+
timer/
95+
components/
96+
models/
97+
services/
98+
models/
99+
services/
100+
```
45101

46-
Core architectural choices:
102+
Architecture highlights:
47103

48-
- Client-side only, deployable as static assets
49-
- Offline-first PWA behavior after the first visit
50-
- Service-owned state for timer, session history, tasks, wellness preferences, shortcuts, language, and workspace mode
51-
- Derived productivity stats for completed sessions, skipped sessions, focus minutes, streaks, completed tasks, and recovery rhythm
52-
- Lightweight persistence with safe fallbacks instead of sync infrastructure
104+
- Frontend-only application deployable as static assets
105+
- LocalStorage persistence with validation and normalization on restore
106+
- Canonical session and task history for productivity metrics
107+
- RxJS streams for timer, session, task, shortcut, language, wellness, and workspace-mode state
108+
- No backend, native wrapper, external store, or sync requirement
53109

54110
## Installation
55111

@@ -59,13 +115,13 @@ Install dependencies:
59115
npm install
60116
```
61117

62-
Run the development server:
118+
Run the local development server:
63119

64120
```bash
65121
npm start
66122
```
67123

68-
Open the app:
124+
Open:
69125

70126
```text
71127
http://localhost:4200/
@@ -77,86 +133,88 @@ Create a production build:
77133
npm run build
78134
```
79135

80-
Run the unit test suite:
136+
Run unit tests:
81137

82138
```bash
83139
npm test -- --watch=false
84140
```
85141

86-
Run Cypress E2E tests:
142+
Run Cypress:
87143

88144
```bash
89145
npm run e2e
90146
```
91147

92148
## PWA Support
93149

94-
FocusFlow includes Angular service worker support and a configured web app manifest.
150+
FocusFlow is configured as an Angular PWA for production builds.
95151

96-
The production build supports:
152+
Supported behavior:
97153

98-
- Desktop installation in Chromium-based browsers such as Chrome and Edge
99-
- Android installation through supported mobile browsers
154+
- Desktop install in Chrome and Edge
155+
- Android install in supported mobile browsers
100156
- Standalone app display mode
101157
- Offline reload after the first successful visit
102158
- Cached application shell and static assets
103-
- Local persistence for tasks, settings, wellness exercises, language, theme, and productivity history
159+
- Local persistence for tasks, sessions, settings, language, theme, sounds, and wellness exercises
104160

105-
Because the app is frontend-only, offline support is intentionally local-first. There is no account system or cloud sync layer.
161+
The app intentionally remains local-first. There is no account system, backend sync, or server dependency.
106162

107163
## Accessibility
108164

109-
Accessibility is treated as part of the product surface, not as a separate mode.
110-
111-
The app includes:
165+
FocusFlow includes accessibility support across the main interaction paths:
112166

113-
- Keyboard-accessible primary flows
114-
- Visible focus states
115-
- Focus restoration for settings and dialog-like interactions
167+
- Keyboard navigation for settings, task controls, timer actions, and modal-like flows
168+
- Focus restoration after settings interactions
116169
- Escape handling where appropriate
117-
- Form labels and accessible control names
118-
- ARIA live announcements for important timer and task state changes
119-
- Responsive layouts that preserve readable controls on small screens
120-
- Reduced-motion considerations in the UI layer
170+
- Screen-reader labels for controls and form fields
171+
- ARIA live regions for timer, task, and wellness announcements
172+
- Reduced interruption design for wellness prompts and completion states
121173

122174
## Screenshots
123175

124-
Screenshots are intentionally left as placeholders so they can reflect the final deployed build.
125-
126-
### Desktop
176+
Screenshots should be captured from the deployed production build so they reflect the final PWA behavior.
127177

128-
Add a desktop screenshot here.
178+
| View | Placeholder |
179+
| --- | --- |
180+
| Desktop workspace | Add desktop screenshot |
181+
| Mobile layout | Add mobile screenshot |
182+
| Wellness mode | Add wellness mode screenshot |
183+
| Kanban workspace | Add Kanban screenshot |
184+
| Installed PWA | Add installed PWA screenshot |
129185

130-
### Mobile
186+
## Deployment Notes
131187

132-
Add a mobile screenshot here.
188+
FocusFlow builds to static assets and can be hosted on platforms such as GitHub Pages, Vercel, Netlify, or any static hosting provider.
133189

134-
### Wellness Mode
190+
Recommended release checks:
135191

136-
Add a wellness mode screenshot here.
137-
138-
### Kanban Workspace
192+
```bash
193+
npm ci
194+
npm run build
195+
npm test -- --watch=false
196+
```
139197

140-
Add a Kanban workspace screenshot here.
198+
For PWA behavior, validate installability and offline reload from a production build over HTTPS or localhost.
141199

142200
## Future Improvements
143201

144-
FocusFlow is intentionally complete as a local-first PWA, but a few realistic extensions would fit the product:
202+
The current app is complete as a local-first PWA. Realistic future additions could include:
145203

146-
- Optional cloud sync for users who want multi-device continuity
204+
- Optional cloud sync for multi-device continuity
205+
- Import/export for local data portability
147206
- Richer productivity and recovery analytics
148207
- More built-in wellness exercise presets
149-
- Optional import/export for local data portability
150208
- Additional language packs
151209

152-
## Release Notes
210+
## Project Notes
153211

154-
FocusFlow is designed as a polished portfolio project that demonstrates production-minded Angular development:
212+
FocusFlow demonstrates production-minded frontend work:
155213

156-
- Modular frontend architecture
214+
- Modular Angular architecture
157215
- Offline-first PWA integration
158-
- Responsive operational UI
159-
- Local persistence and defensive state restoration
216+
- Responsive application layout
217+
- Defensive local persistence
160218
- Runtime i18n
161219
- Accessibility-aware interaction design
162-
- Behavior-focused tests around session tracking, tasks, wellness logic, and productivity stats
220+
- Behavior-focused testing around sessions, tasks, wellness logic, and productivity stats

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "devbreak-timer",
2+
"name": "focusflow-app",
33
"version": "0.0.0",
44
"engines": {
55
"node": ">=22",

0 commit comments

Comments
 (0)