DeepSeek Harness Remote
DeepSeek Harness Remote 可將手機或另一台電腦與你運行 DeepSeek Harness 的電腦安全連接,隨時隨地繼續你的工作,方便隨時查看進度並繼續工作。
AI 翻譯
A calm full-year Google Calendar and Tasks view
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Your whole year on one screen. Julian lays out Google Calendar events and Google Tasks as a twelve-column year, so trips, sprints, and holidays read at a glance. It is fully keyboard-driven, works on phones, and prints the year on a single landscape page.
Try the live demo: no sign-in, sample data, changes stay in your browser.
/ to
search, ? for every shortcut./2026, /2026/03, and a shareable /demo/2026.| Area | What to look at |
|---|---|
| Effect end to end | Google services as Context.Services with live and test layers, tagged errors, retry Schedules (packages/google); UI loads run as fibers that cancel in-flight requests (use-latest-fiber.ts) |
| Edge Worker | One Effect pipeline: bot filter, rate limits, OAuth proxy with an origin lock, streamed body cap, Schema-validated grants, and a Redacted client secret (apps/edge) |
| Hexagonal UI | The year view talks to ports; the live app plugs in Google, the demo plugs in an in-memory store, so the demo runs the real component (year-view-ports.ts) |
| Pure domain | Date math and lane layout with no React or I/O, tested across five time zones (packages/domain) |
| Security | The client secret never reaches the browser; CSP and hardening headers defined once (packages/security); threat model in docs/security.md |
| Releases | Semver from Conventional Commits, preview per PR, nightly channel, gradual stable rollout with automatic rollback (docs/releasing.md) |
flowchart LR
browser["Browser<br/>apps/web + apps/marketing"]
edge["Cloudflare Worker<br/>apps/edge"]
google["Google Calendar<br/>and Tasks APIs"]
oauth["Google OAuth<br/>token endpoint"]
telemetry["Sentry + PostHog<br/>production telemetry"]
browser -- "pages and assets" --> edge
browser -- "PKCE code / refresh token" --> edge
edge -- "adds client secret" --> oauth
browser -- "bearer token, direct" --> google
browser -- "minimized errors, timings, page categories" --> telemetry
The browser calls Google directly with its own access token; the Worker only
serves assets and adds the client secret to token exchanges. There is no
database. Production uses Sentry for minimized errors and 5% sampled performance
traces, and cookieless PostHog page analytics. Calendar content, OAuth values and
personal state are excluded. See docs/observability.md.
Details: docs/architecture.md.
| Path | Purpose |
|---|---|
apps/web | The calendar app: Vite, React 19, TanStack Router, Effect |
apps/marketing | Static home, privacy, and terms pages |
apps/edge | Cloudflare Worker: routing, OAuth proxy, protections |
apps/e2e | Playwright, axe accessibility scans, Lighthouse CI |
packages/domain | Pure calendar logic: dates, events, year-grid layout |
packages/google | Effect services for Google OAuth, Calendar, and Tasks |
packages/security | Security headers shared by the Worker and the build |
packages/observability | Production browser telemetry with privacy allowlists |
packages/release | Version strings for each release channel |
packages/config | Shared TypeScript configuration |
infra | Cloudflare resources as code (Alchemy, Effect) |
Every PR runs these in CI; coverage thresholds are per package and only go up.
| Check | Command |
|---|---|
| oxlint, oxfmt, dead code, functional rules | bun run quality:static |
| TypeScript + Effect language-service diagnostics | bun run typecheck |
| Unit tests with coverage thresholds | bun run test:coverage |
| Date tests in five time zones | bun run test:tz:dates |
| End-to-end and accessibility (Playwright, axe) | bun run test:e2e |
| Lighthouse (performance, a11y, best practices) | bun run test:lighthouse |
Prerequisites: Node 24.15.0 and Bun 1.4.4 (both pinned in package.json).
git clone https://github.com/krmznkr/julian.git
cd julian
bun install
bun run dev
Open http://127.0.0.1:3000/demo. Signing in with Google locally needs the
OAuth setup in docs/development.md.
docs/architecture.md: request pipeline, OAuth
sequence, data flow, storage, failure behavior.docs/development.md: setup and commands.docs/releasing.md: versioning, channels, rollout, rollback.docs/infrastructure.md: Cloudflare as code with Alchemy.docs/observability.md: telemetry privacy and private source maps.docs/security.md: threat model, edge hardening, smoke tests.docs/follow-ups.md: known gaps and manual steps.docs/roadmap.md: what is done and what is next.See CONTRIBUTING.md, SUPPORT.md, and
SECURITY.md for contributing, help, and private vulnerability
reports.