54 lines
2.8 KiB
Markdown
54 lines
2.8 KiB
Markdown
# 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 or 2024-10-22 12233500.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:
|
|
|
|
```bash
|
|
go build -o bin/chronological ./cmd/chronological
|
|
```
|
|
|
|
This will create the `chronological` executable in the `bin` directory. You can then run it with:
|
|
|
|
```bash
|
|
./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. |