The goal of this project is to build a "flowtime" focus timer application. As opposed to other "timer" apps like Pomodoro, flowtime's focus isn't centered on hard coded countdowns, but rather tracking how long you spent "focusing" before you began to lose focus. Once you start to lose focus, you 'take a break' and start back up.
In regards to tracking Flow time, the user will either create a new 'project' or resume an existing project designating a project category such as "Studying", "Work Project", "Art", etc. before beginning the timer.
The timer will then count up as you work until you begin to get distracted at which point you'd hit the "Take a Break" button to end the current block of time.
On pausing the timer, the app will ask you how focused you were (from 1-4, 4 being locked in). The app will save the time block and rating to the project and display an "On Break" screen that will allow you to "Resume" starting a new time block.
By saving these focus time blocks along with user rating of focus, you can track how much 'Focus Time' it took you to complete a project, and how much time you spent in each flow state over the course of the project, typically shown at the end of the project by clicking a "Project Complete!" button.
App will have a user dashboard where they can view average time spent in different 'flow states', average motivation per category of project, average flow time spent per category of project, and project history to view project specific details.
- Project will be built with SvelteKit with typescript.
- For styling, TailwindCSS will be used.
- Drizzle ORM will be used to connect with PostgreSQL as the backend database.
- Auth.js will be used for user Authentication via Google and Github OAuth.
- Timer application will utilize Web Workers in order to maintain accuracy of the timer and reduce drift, especially when user tabs out of window
- May incorporate Chart.js for Dashboard analysis.