What is this app?
A custody time calculator for co-parents who need to occasionally swap childcare windows — without losing track of the overall balance.
Every week follows a default schedule (e.g. Mother has Tue 9–20, Fri 9–Sat 20). When either parent needs to swap a window — a work trip, a birthday, a school event — you edit that specific day. The app tracks exactly how many hours each parent has gained or lost across School, Sleep, and Free time.
Color system
| Color | Meaning |
|---|---|
| Purple | Mother's custody time |
| Blue | Father's custody time |
| Orange dot | Day has been manually modified |
| Orange badge | School day |
| Green badge | Vacation / no school day |
Reading the Calendar
Each cell shows one day. Here's what every element means.
② Sch = school day
③ Proportional 24h bar
④ Blue bg = sleep time
⑤ Yellow bg = daytime
Weekends are auto-Vac.
Orange dot = modified
Purple bar = swap block
Italic = note/comment
The 24-hour time bar
The colored bar inside each cell represents the full day (0 to 24). Its width is proportional to time:
- Purple segment — hours the child is with Mother
- Light blue segment — hours the child is with Father
- Numbers inside each segment show start–end hour (e.g.
9-20) - Very narrow segments (under ~2h) show two stacked numbers instead of a range
Background gradient
The cell background shows a soft day/night pattern based on your sleep settings:
- Light blue background — sleep time (e.g. 20:00–09:00)
- Light yellow background — daytime / awake hours
This makes it easy to see at a glance whether a custody window is "quality time" or just overnight.
Navigating months
Use the ← → buttons in the header to move between months. The app remembers all changes regardless of which month you're viewing.
Balance Bar
Shown below the header — tracks how many hours each parent has this month, broken into three meaningful categories plus a total.
The three categories
| Category | What counts | Why it matters |
|---|---|---|
| School | Overlapping hours with school schedule (Mon–Fri 8–15 by default) | Child is at school — neither parent really "has" them, but someone must drop-off/pick-up |
| Sleep | Overlapping hours with sleep window (20:00–09:00 by default) | Child is asleep — custody is mainly about where they wake up |
| Free | All remaining hours (awake, not at school) | Most meaningful — actual quality time spent with the child |
Delta pills
The colored pill shows the change compared to the default schedule for this month:
- = — No change from default
- M +3h — Mother gained 3 extra hours vs. her default
- F +3h — Father gained 3h (Mother gave up 3h vs. her default)
The balance bar updates instantly as you edit days.
Editing a Day
Click any day on the calendar to open the Edit Day panel. This is where you make all per-day changes.
Day type toggle (top right)
Day summary cards
The three cards (School / Sleep / Free) show exactly how many hours each parent has today, after all blocks and vacation status are taken into account. Father's hours are the remaining time not covered by Mother's blocks.
Adding a note / comment
Adding a custom time block
Removing a block
Each block in the list has a Remove button. Click it to delete that specific window. The timeline bar and balance update instantly.
Reset to Default
The red Reset to Default button discards all manual changes for this day — all added blocks, vacation override, and note are cleared — and restores the default schedule.
Settings
Click ⚙ Settings below the balance bar to configure the default weekly schedule, school hours, and sleep time.
Custody Schedule — Mother's default windows
Defines which time windows Mother has the child by default, every week. Everything not covered here belongs to Father.
Default: Tue 9–20 (Mother), Fri 9–24 (Mother), Sat 0–20 (Mother). All other time belongs to Father.
School Schedule
Defines when the child is at school. School time is tracked separately in the balance bar and shown differently in per-day summaries.
Sleep Time
A daily window when the child is asleep. Applies to every day. If the end hour is earlier than the start hour, it wraps across midnight.
- Default: Bedtime 20, Wake up 9 (i.e. 20:00–09:00 next morning)
- Sleep time is tracked separately in the balance bar
- The calendar cell background shows a subtle blue tint during sleep hours
Apply & Regenerate Calendar
After changing any setting, press this button. It:
- Saves the new school/sleep/custody defaults
- Clears all per-day manual overrides
- Rebuilds the calendar from scratch
Export / Import
Share your calendar data with your co-parent, or back it up before making big changes.
Export
custody-2026-05.json (month-named) is downloaded automatically.The exported file contains everything:
- Default custody schedule, school schedule, sleep schedule
- All per-day swap overrides
- Vacation day markings
- Day notes / comments
Import
.json file from your device.Sync workflow with co-parent
- Parent A makes changes, clicks Export, sends the file.
- Parent B receives the file, clicks Import.
- Both now have identical data.
- If both made changes independently, one person's changes will overwrite the other's — coordinate to avoid conflicts.
Printing
Click 🖨 Print in the toolbar to open the browser print dialog.
The print layout is optimised for paper:
- Landscape orientation — set automatically
- All colors preserved — timeline bars, gradient backgrounds, badges all print in full color
- Full detail shown — Sch/Vac badges and swap entries are shown even if the screen was in mobile-compact mode
- UI hidden — Settings panel, nav buttons, and modals do not print
FAQ
My data disappeared after clearing the browser
All data lives in localStorage, which is cleared with browser history. Always Export regularly to keep a backup.
I changed the default schedule but old overrides are still showing
Clicking Apply & Regenerate clears all overrides and rebuilds from the new defaults. This is intentional — your manual edits are per-day and tied to the old schedule.
Can I set different school hours for different days?
Yes — in Settings → School Schedule, add individual rows for each day. You can have Mon 8–15 and Wed 8–12, for example.
A day shows "Vac" but it's a school day
That day-of-week isn't in your School Schedule. Add it in Settings → School Schedule → + Add School Day.
How do I mark a school holiday (a weekday with no school)?
Click the day → in the modal, click the School Day button to switch it to Vacation Day. Only that specific date is affected.
Can I track custody for more than one child?
The current app tracks one child's schedule. For multiple children with different schedules, open separate browser tabs or export/import separate files per child.
What does "Reset to Default" in the Edit Day modal do exactly?
It removes the day from the overrides store, deletes any vacation day marking for that date, and removes the comment. The day reverts to whatever the default weekly schedule says.
How do I completely reset the app to factory defaults?
Open the browser console (Cmd+Option+J on Mac, F12 on Windows) and run:
['ces_schedule','ces_school','ces_sleep','ces_overrides','ces_vacation','ces_comments'].forEach(k => localStorage.removeItem(k));
Then reload the page.