Kronos is a productivity tool designed to help users reach flow state, by aligning tasks with organically evolving mindsets and with layered personal goals.
It is a long-lived passion of mine, to make a computer understand human time and goals, in order to be a companion who is aware of our most valuable asset: time.
Aside from my research in turning flow-state and well-known time management paradigms into an algorithm, Kronos draws from my personal life as I learn how to juggle my goals, everyday life, and my obstacles, and observe useful or bad patterns.
Automatically schedules tasks into ideal calendar gaps using constraints like:
- Preferred time of day (morning, afternoon, evening)
- Ideal days of week
- Repetition rules (daily, weekly, hourly)
- Time durations
Avoids overlaps with existing events using a gap-finding and conflict resolution strategy.
Uses Next.js searchParams to open modals for editing tasks/events while preserving the current route.
Modals behave like overlays but retain full routing capabilities.
The UI si designed with a dynamic accent colour, reflective of the ongoing task.
Transitions and animations are created with Framer Motion
MultiSelect, DateTime, and Mindset selectors are modular React components, fully controlled via props and Redux state sync.
- /app - routing and pages
- /components - client-side UI and forms
- /lib - database interface, shared types, utilities
Uses Next.js searchParams to open modals for editing tasks/events while preserving the current route.
Modals behave like overlays but retain full routing capabilities.
Mock database layer using pg-mem and Jest for unit testing the organiser algorithm
Development and preview databases separated via .env, .env.development.local, .env.test
Hosted on Vercel with Postgres.
Preview deployments use a separate database to avoid schema drift.