Skip to content

Repository files navigation

Secretary — Website

Marketing & download landing page for Secretary
a free, open-source Android assistant for todos, reminders and a journal — by ShuttleLab.

🌐 secretary.shuttlelab.org  ·  📱 Android app: ShuttleLab/secretary-android  ·  🔌 Server: ShuttleLab/Secretary

This repo is just the website. The Secretary Android app (Kotlin / Compose) lives at ShuttleLab/secretary-android and its Go server at ShuttleLab/Secretary. Bilingual (English / 中文), static export, deployable anywhere.

What Secretary is

You type what you need the way you'd say it — "remind me to take the bins out at 8 tomorrow", "every weekday at 9, stand up", "I finished the report" — and an assistant on the server turns it into a task, a recurring reminder, or a journal entry.

The part that's actually hard is the reminder arriving. Android freezes backgrounded apps and push can queue behind a dead socket, so Secretary schedules an exact alarm on the device itself as the primary path — it fires offline, without Google services, and through a push outage — and sends over Telegram and Discord as independent backups. The paths recognise each other, so you get one notification rather than three, and every delivery is logged per channel so a missing reminder is something you can read rather than guess at.

Screenshots

Secretary — task and reminder list

Secretary — screenshot 2 Secretary — screenshot 3 Secretary — screenshot 4

Development

npm install
npm run dev        # then open /en or /zh — see the caveat below
npm run build      # next build + postbuild (promotes out/en → out/, patches lang, writes sw.js)
npx serve out      # preview a real build; `npm run start` does NOT work (no server runtime)
npm run lint

Caveats

  • / 404s under npm run dev. The English-at-the-root promotion is a postbuild step, so in dev the locales live at /en and /zh. Production / is correct.
  • Delete out/ before rebuilding — the postbuild copy uses force: false, so stale files persist.

Before this goes live

  • Tag a release in the app repo. The download button points at releases/latest/download/Secretary.apk, and no v* tag has been pushed yet, so it 404s until one is. (The release workflow already publishes that fixed filename for this purpose.)
  • Point the secretary.shuttlelab.org DNS record at the Worker.

Deploy

Static export → Cloudflare Workers static assets.

npm run build
npx wrangler deploy      # [assets] directory = "./out"

Structure

app/[locale]/        home, privacy, terms
app/                 layout (MobileApplication JSON-LD), robots, sitemap, manifest, OG + icon routes
components/          header, footer, seo-faq (use cases + comparison + FAQ), theme/palette, ui/
messages/            en.json, zh.json — keep in parity
i18n/, lib/i18n/     next-intl routing + locale metadata
lib/seo.ts           canonical / hreflang helpers (trailing slashes matter)
scripts/postbuild.mjs  en→root promotion, <html lang> patch, service-worker generation

See AGENTS.md for the detailed briefing.

License

AGPL-3.0-only — same as the Secretary app and server.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages