Files
chronological/README.md
2025-12-10 11:10:52 +01:00

2.8 KiB

Chronological

Calendar, Diary, Photos A single application that combines regualr calendar events, sheduled maintainace and chores, journaling and photos in a single timeline view.

The Timeline

The main view shows a continuous,scrollable calendar grid with monthly sections on the left side. Days with events, journal entries or photos are highlighted with a corresponding icon. The right side shows a detailed, scrollable timeline view of the selected month, with all events, journal entries and photos displayed in chronological order. From either the calendar grid or the timeline view, the user can click on a specific day to see more details or add new entries.

Technical Details

General Information

  • Build using go and HTMX.
  • Single user application without any login or authentication.
  • App uses server-side rendering with HTMX for dynamic updates.
  • No database, all data is stored in local files.

Data Storage

  • Data storage is configurable using a config file
  • The following sources are configurable:
    • Local path to .ics file for calendar events
    • Local path to .ics file for diary entries
    • CalDAV data that syncs calendar events from a remote server and local .ics files
    • folder path for photos
  • Photos are organized in the following manner:
    • The photo root folder is configured in the config file.
    • Inside the root folder, there are subfolders for each year (e.g., "2023", "2024").
    • Inside each year folder the photos are stored directly.
    • Photos are named using the following format: "YYYY-MM-DD_description.ext" (e.g., "2024-06-15_BirthdayParty.jpg").
  • The diary entries are stored in an .ics file with each entry representing a journal entry for a specific day.
  • Only one diary entry per day is supported.
  • That entry is always an all-day event called "Chronolog" in the .ics file.
  • The description field of that all-day event contains the actual journal text.

Frontend

  • The frontend is built using HTMX for dynamic content updates.
  • TODO: It is not yet deceided what CSS framework to use, if any.

Deployment

  • The application is compiled into a single binary (plus a config file) for easy deployment.
  • Configuration is done via a config file that is read at startup.
  • The application can be run as a standalone server on a specified port.
  • Static files (CSS, JS, images) are inculeded in the binary using Go's embed package.

Building

To compile the application and create a runnable binary in the bin folder:

go build -o bin/chronological ./cmd/chronological

This will create the chronological executable in the bin directory. You can then run it with:

./bin/chronological -config config.ini

If no config file is specified, the application will look for config.ini in the current directory and use default settings if not found.