diff --git a/hosts/heather/caddy.nix b/hosts/heather/caddy.nix index d3d1b4b..0b43f66 100644 --- a/hosts/heather/caddy.nix +++ b/hosts/heather/caddy.nix @@ -106,6 +106,14 @@ Allow: /" 200 reverse_proxy 127.0.0.1:3002 ''; + # Public OAuth consent pages for the personal gcalcli application. + "gcalcli.iscg.dev".extraConfig = '' + root * /etc/gcalcli-site + try_files {path} {path}.html + file_server + encode zstd gzip + ''; + # paseo daemon endpoint для desktop/mobile-клиентов. # Basic Auth здесь намеренно нет: мобильный клиент Paseo его не умеет. # Доступ защищён встроенным PASEO_PASSWORD самого демона. diff --git a/hosts/heather/default.nix b/hosts/heather/default.nix index 0291760..5699f61 100644 --- a/hosts/heather/default.nix +++ b/hosts/heather/default.nix @@ -45,6 +45,14 @@ python3 ]; + # Static public pages used by the personal gcalcli OAuth application. + environment.etc = { + "gcalcli-site/index.html".source = ./gcalcli-site/index.html; + "gcalcli-site/privacy.html".source = ./gcalcli-site/privacy.html; + "gcalcli-site/terms.html".source = ./gcalcli-site/terms.html; + "gcalcli-site/style.css".source = ./gcalcli-site/style.css; + }; + # Docker requires forwarding; AstrNet ingress is blocked by astrnet-guard. boot.kernel.sysctl."net.ipv4.ip_forward" = 1; diff --git a/hosts/heather/gcalcli-site/index.html b/hosts/heather/gcalcli-site/index.html new file mode 100644 index 0000000..2527edd --- /dev/null +++ b/hosts/heather/gcalcli-site/index.html @@ -0,0 +1,23 @@ + + + + + + gcalcli — personal calendar tool + + + + +
+

gcalcli · personal utility

+

Google Calendar, without the ceremony.

+

This OAuth application is a private, local tool used by its owner to read and edit events in Google Calendar through gcalcli.

+ +

This is not a public service. It does not offer accounts, subscriptions, or access for other users.

+ +
+ + diff --git a/hosts/heather/gcalcli-site/privacy.html b/hosts/heather/gcalcli-site/privacy.html new file mode 100644 index 0000000..42f986a --- /dev/null +++ b/hosts/heather/gcalcli-site/privacy.html @@ -0,0 +1,28 @@ + + + + + + Privacy policy — gcalcli + + + +
+

gcalcli

+

Privacy policy

+

This application is a private personal tool used by one person to manage their own Google Calendar.

+

What data is accessed

+

With the owner’s permission, the application can access Google Calendar data needed to list, create, update, and delete calendar events.

+

How data is used

+

Calendar data is used only for the owner’s calendar management. It is not sold, rented, published, or shared with third parties by this application. The application does not use calendar data for advertising or profiling.

+

Storage and security

+

OAuth credentials are stored locally on the owner’s computer. This website does not collect or store calendar events, Google passwords, or OAuth tokens.

+

Revoking access

+

The owner can revoke access at any time from their Google Account connections page.

+

Contact

+

Questions can be sent to unprovableaxiom@gmail.com.

+ + +
+ + diff --git a/hosts/heather/gcalcli-site/style.css b/hosts/heather/gcalcli-site/style.css new file mode 100644 index 0000000..24c6d9b --- /dev/null +++ b/hosts/heather/gcalcli-site/style.css @@ -0,0 +1,48 @@ +:root { + color-scheme: light; + --ink: #1d1d1f; + --muted: #6d6d72; + --line: #dededb; + --paper: #f7f7f4; + --accent: #315c8a; +} + +* { box-sizing: border-box; } + +body { + margin: 0; + background: var(--paper); + color: var(--ink); + font: 16px/1.65 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; +} + +main { + width: min(720px, calc(100% - 40px)); + margin: 0 auto; + padding: 12vh 0 10vh; +} + +.eyebrow { + margin: 0 0 1.5rem; + color: var(--muted); + font-size: .78rem; + font-weight: 650; + letter-spacing: .14em; + text-transform: uppercase; +} + +h1, h2 { line-height: 1.15; letter-spacing: -.025em; } +h1 { max-width: 620px; margin: 0 0 1.5rem; font-size: clamp(2.4rem, 7vw, 5rem); } +h2 { margin: 2.8rem 0 .8rem; font-size: 1.35rem; } +p { max-width: 60ch; margin: 0 0 1.1rem; } +.lead { max-width: 600px; color: #454549; font-size: 1.18rem; } + +nav { display: flex; flex-wrap: wrap; gap: 1.1rem; margin-top: 3rem; padding-top: 1rem; border-top: 1px solid var(--line); } +a { color: var(--accent); text-underline-offset: 3px; } +nav a { text-decoration: none; } +nav a:hover { text-decoration: underline; } + +.meta { margin-top: 4rem; color: var(--muted); font-size: .9rem; } +ul { padding-left: 1.3rem; } +footer { margin-top: 4rem; color: var(--muted); font-size: .9rem; } +@media (max-width: 520px) { main { padding-top: 8vh; } } diff --git a/hosts/heather/gcalcli-site/terms.html b/hosts/heather/gcalcli-site/terms.html new file mode 100644 index 0000000..cab60df --- /dev/null +++ b/hosts/heather/gcalcli-site/terms.html @@ -0,0 +1,24 @@ + + + + + + Terms of service — gcalcli + + + +
+

gcalcli

+

Terms of service

+

This application is a private personal utility for its owner. It is not offered as a public hosted service and does not create user accounts or charge fees.

+

Use of the application

+

The application is provided for the owner’s personal calendar management. The owner is responsible for reviewing changes before they are made and for maintaining access to their Google account.

+

Availability

+

The application is provided as-is, without guarantees of availability, accuracy, or suitability for a particular purpose. Google Calendar remains the source of truth for calendar data.

+

Contact

+

Questions can be sent to unprovableaxiom@gmail.com.

+ + +
+ +