Keep track of your working location in Google Calendar.

Clone this repo:

Branches

  1. 37074cd docs: add development doc by Adrià Vilanova Martínez · 6 months ago main
  2. f8196c1 docs: expand README file by Adrià Vilanova Martínez · 6 months ago
  3. 9732b1c feat: add grafana dashboard template by Adrià Vilanova Martínez · 6 months ago
  4. 5cb3125 docs(project-plan): improve wording by Adrià Vilanova Martínez · 6 months ago
  5. c3b00d6 chore: create compose file example by Adrià Vilanova Martínez · 6 months ago

🌚 ZenithPlanner

ZenithPlanner lets you plan (and keep a record of) the locations where you will be working from in Google Calendar.

It creates a daily event for every day of the week, and you can change its title to the desired working location. The color of the event will automatically be updated to reflect the type of location, and you will receive a confirmation email with the change.

Screenshot of Google Calendar, showing the created daily events withdifferent colors.

Afterwards, you can view a dashboard which summarizes where you're working from and helps you keep track of your progress and habits:

Screenshot of the Grafana dashboard, which shows a count for "Total VacationDays" and "Total Study Days", a list of locations, and a pie graph andaccompanying table for the "Location distribution".

Motivation

When I was working full-time for Basetis, I fell in love with an internal tool called Cadiretis (internal documentation –link might not be up to date). At the office, there was a hot desk system: by default employees didn't have a fixed desk; instead, this tool allowed us to book a seat in advance directly from Google Calendar. We could even book adjacent seats for teammates or let a randomizer decide our fate :)

Thus, this project is an effort to replicate part of Cadiretis (on which we have been very heavily inspired) for nostalgic reasons, and to deal with some new personal needs.

Right now I'm in a study impass, and I wanted to track where I will be studying/working from everyday. This is so I can plan my study locations in advance, keep track of my "vacation" days and try to reach a balance between the different working locations, so e.g. I don't stay at home too often.

Initial project plan

If you want to gain more context about this project, you may read the initial project plan at //docs/project_plan, but it is a little bit outdated.

Disclaimer: the initial project plan and the inital version of this project were developed using an LLM (Gemini 2.5 Pro (experimental)). Read more about the process.

Getting started

If you want to use this project, please join me in the fun! Here's what you need to do:

  1. Create a calendar for ZenithPlanner events in Google Calendar.

  2. Create a project in Google Console, enable the Calendar API and create an OAuth client.

  3. Generate a refresh token in order to be able to access your calendar:

    (
        export GOOGLE_CLIENT_ID=changeme
        export GOOGLE_CLIENT_SECRET=changeme
        bazel run //cmd/oauthcli
    )
    
  4. Set up Docker Compose with examples/compose.yml and examples/.env.example.

  5. Start the database with docker compose up -d db, and run the initial database migration via docker compose -f compose.yml exec db psql -U zenithplanner -d zenithplanner < database/schema.sql.

  6. Start the whole ZenithPlanner system with docker compose up -d.

More documentation