Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Daylog

Know where your 24 hours actually go.

Daylog is a nightly time-audit app. Once a day, you sit down for five minutes and type out where your hours went — in plain language, keyboard only. Daylog turns that into a timeline, a category breakdown, and a weekly picture of your life.

It is not a tracker that runs in the background, and it is not a to-do list. It is a journal for time, written honestly, after the fact.

office 9-6
> deep work 9-11 #deep
> scrolling 3-3:30 #dis
gym 6:30-7:30 #per
sleep 11pm-7am

That's the whole input. Five lines, about forty seconds.


Why

Most time trackers ask you to start a timer, and most people stop within a week. Daylog inverts it: log nothing during the day, reconstruct the day at night. Reconstruction is imperfect — but an imperfect record you actually keep beats a perfect one you abandon on day four.

The nesting matters too. office 9-6 is one block; the four hours of real work and the ninety minutes of scrolling live inside it. Most tools make you choose between the honest outer shape and the honest inner truth. Daylog keeps both, and attributes every minute to the deepest activity that claims it.


What it does

Type, don't click office 9-6, > deep work 9-11 #deep. Times parse as you type, with a live preview. 9-6 means 9am to 6pm — it figures out am/pm from context.
Nested activities Log the container and what happened inside it. Two levels deep, validated server-side so a child can never escape its parent.
The day spine An SVG timeline of your day — parent blocks full width, children inset, unaccounted time hatched so you can see the gaps you didn't log.
Honest analytics Category donut, context-switch count, longest unbroken focus block, and unaccounted time. Every minute is attributed exactly once.
Week view A 7-day skyline, where the hours went, switches per day, and the activities that keep coming back.
Overnight ranges sleep 11pm-7am splits at midnight and carries into tomorrow's draft automatically.
Your data is yours One-click JSON export of everything. Self-hosted by default.

Try it without installing anything

Live demo: not deployed yet — see deployment to host your own.

email     demo@daylog.app
password  demo@123

That password is public on purpose, and it doesn't unlock a shared account. Logging in with it hands you a fresh sandbox of your own — seeded with five sample days so the Review and Week views have something to show, with tonight left blank for you to log. Nobody else can see it or change it, and it deletes itself after 24 hours.

So go ahead and break things. Delete every entry, rename the categories, export the JSON. You're the only person affected, and the next visitor gets a clean one.


Try it in two minutes

You'll need Node 20+ and Docker (Docker is only for the local Postgres — any Postgres 14+ works).

git clone https://github.com/Harshpratapcodes/daylog.git
cd daylog
npm install

# 1 — start Postgres
docker compose up -d

# 2 — configure the server
cp server/.env.example server/.env     # then set JWT_SECRET to any long random string
npm run migrate

# 3 — run both halves (two terminals)
npm run dev --workspace server         # API   → http://localhost:3001
npm run dev --workspace client         # app   → http://localhost:5173

Open http://localhost:5173, register with any email and a password of 8+ characters, and you'll land on tonight's blank log with nine starter categories ready to go. Type office 9-6, hit Enter, and watch the spine draw itself.

Run the test suite with npm test --workspace server.

Heads up: server/.env holds real credentials and is gitignored. Never commit it, and keep server/.env.example free of anything real.


The nightly ritual

Everything is reachable from the keyboard, because a ritual that needs a mouse is a ritual you'll skip.

Key Does
Enter Commit the line in the command bar
> prefix Nest this entry inside the one above it
#tag Assign a category by prefix — #disWasted / distracted
Tab Accept the autocomplete suggestion
Select an entry
E / Edit / delete the selected entry
Ctrl+D Copy yesterday's top-level structure
Ctrl+Enter Write one reflection line and finalize the day

Three tabs: Tonight (the ritual), Review (any past day, read-only), and Week (the skyline). Plus Settings for categories and export.


Built with

TypeScript end to end. React + Vite on the front, Fastify + PostgreSQL on the back, vitest for tests, and a small shared/ package holding the types and the time parser used by both sides.

No framework magic, no ORM, no state-management library. About 5k lines total.


Documentation

Doc What's in it
Architecture Repo layout, data model, validation rules, how analytics attributes minutes
API reference Every endpoint, with curl examples
Time parser The command-bar grammar and its am/pm disambiguation rules
Deployment Deploying to Render + Neon, or anywhere else
Roadmap What's built, what's next, and the dogfood protocol that decides

Status

Phase 1 is complete and in daily use by its author. Phase 2 — planning your intended day and comparing it against the actual one — gets built only if two weeks of real nightly logging show that this produces honest data at sustainable friction. See the roadmap for how that's being measured.

Issues and PRs are welcome. If you try it and it doesn't survive your first week, that's the most useful bug report there is — please open an issue and say why.


License

Not yet licensed. Until a LICENSE file lands, treat this as source-available for reading and personal use; open an issue if you'd like it under something specific.

About

Know where your 24 hours go, a keyboard-first nightly time-audit tool with nested activities and day/week analytics.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages