Nuvaa Focus is a focus timer app designed to help users stay focused and manage their time effectively. It offers a clean, distraction-free interface and a range of features to optimize productivity, including customizable timers, task management, account management and ADHD-friendly themes. This repository demonstrates selected features, design decisions, and overall architecture for portfolio purposes and an attempt to practice Next.js.
- π Live Preview
- β¨ Features
- π Tech Stack
- π Branch Naming Rules
- π€ Contribution
- π« License & Usage Notice
π Live preview
- User Accounts - Secure access to personal data
- Registration - Create a new user account
- Login - Authenticate users with email and password
- JWT Sessions - Maintain logged-in state using JSON Web Tokens
- Password Security - Passwords are securely hashed with bcrypt
- View Profile - Access user profile information
- Edit Profile - Update personal details
- Account Deletion - Permanently delete user account and related data
- Focus Time - Track focused work sessions
- Short Break - Set a short break after each focus session
- Long Break - Take a longer break after a set number of focus sessions
- Custom Time - Customize focus and break durations to fit your preferences
- Auto-Continue - Automatically transition between focus, short break, and long break
- Add Tasks - Create new tasks
- Edit Tasks - Update existing task details
- Delete Tasks - Remove tasks from your list
- Mark as Complete - Track completed tasks
- Current Task Highlighting - See your active task while focusing
- Stopwatch Mode - Track time outside of focus mode
- Regular Clock - Display current time in the interface
- Choose between soft, ADHD-friendly color themes to personalize your experience
- Local Storage - All settings, tasks, and preferences are saved in your browser
- State Management - Powered by Redux Toolkit for consistent performance
- Next.js 15.3+ - React framework with App Router (SSR/SSG support)
- Redux Toolkit - Modern state management
- Styled Components - CSS-in-JS for custom theming
- Lucide - Icon library
- @dnd-kit/core + @dnd-kit/sortable - Drag-and-drop support for task management
- React Select - Select Input control for ReactJS
- Recharts - A composable charting library built on React components
- Neumorphism - Generate neumorphic designs
Naming conventions for branches:
-
feature/<short-description>- For new features
Example:feature/login-form,feature/add-theme-switcher -
bugfix/<short-description>- For fixing bugs
Example:bugfix/fix-login-crash,bugfix/missing-icon -
hotfix/<short-description>- For quick critical fixes
Example:hotfix/fix-deploy-error -
refactor/<short-description>- For improving code without changing behavior
Example:refactor/cleanup-utils,refactor/rewrite-auth -
chore/<short-description>- For non-feature tasks like updating dependencies
Example:chore/update-eslint,chore/rename-files
This project serves as a personal portfolio website to show off my personal skills. However, I do accept various small, clearly scoped improvements that do not alter the core architecture, UI design system, or technology stack.
There are two ways to contribute:
- Fixing a bug (identify a new one or fix the existing one)
- Introducing a new minor feature
No matter the contribution, it's required that there is an opened issue.
Existing issues:
- You can work on existing issues only if it has a label "open for contribution" and it's assigned to you. If an issue is assigned to someone else (other than me), you can't work on it.
- To work on an existing issue, you need to:
- add comment in this issue by showing interest.
- wait until I respond and assign this issue to you.
- Start working on the issue and read Contribution Rules to get your work approved.
New issues:
- You can open new issues yourself.
- When creating a new issue you will be prompted to choose either "Bug Report" or "Feature Request".
- Fill all the fields in the given description.
- Wait until I respond and assign this issue to you or approve your suggested feature.
Important: Suggested features must be as detailed as possible to save each other's time. A small visual examples would help a lot to get the work started. Proposed features should be clearly described and aligned with the projectβs scope and design direction.
β The following types of changes are not open for public contribution:
- Modifications requiring access to private tokens, secrets, or credentials
- Changes involving production authentication secrets
- Changes requiring access to private APIs or deployment configurations
- Any updates that depend on non-public environment variables
- Such changes are maintained exclusively by the repository owner.
This project is protected under the CC BY-NC-ND 4.0 License.