No description
  • TypeScript 98.9%
  • CSS 1.1%
Find a file
2026-11-14 17:51:14 +01:00
docs Pre-deploy security review fixes 2026-11-14 17:49:35 +01:00
migrations T26 follow-up: per-service MCP switches with scope details, Courses as a service, FIT/Usermap logos, sign-in copy, corner orbit on mobile, compact assistants page, no overview status strip 2026-11-14 17:03:16 +01:00
public/services T26 follow-up: per-service MCP switches with scope details, Courses as a service, FIT/Usermap logos, sign-in copy, corner orbit on mobile, compact assistants page, no overview status strip 2026-11-14 17:03:16 +01:00
scripts T24: verbatim .dev.vars preservation (dotenv syntax), chmod 600 existing files, structural binding lookup (Astra review) 2026-11-14 15:34:54 +01:00
src Pre-deploy security review fixes 2026-11-14 17:49:35 +01:00
test T23: exhaustive grant revocation, orphan-grant cleanup on approval race and MCP use; fix sqlite test proxy for empty get (Astra review) 2026-11-14 15:28:06 +01:00
.dev.vars.example T25: opt-in PostHog page views proxied by the Worker (no PII/IP), baseline security headers 2026-11-14 15:38:37 +01:00
.gitignore T7: fixture recorder + fixes from live verification 2026-11-14 14:43:27 +01:00
biome.json T26 round 3: rotating service-logo orbit on sign-in, real assistant logos, static wordmark, neutral dark links, adaptive calendar columns, overview summary/Next badge/source icons, account preferences 2026-11-14 16:24:19 +01:00
bun.lock T26 round 2: lucide icons, mobile bottom tab bar, single-surface chronological calendar, grouped overview with urgency chips, connections aside, collapsible danger rows 2026-11-14 16:18:06 +01:00
drizzle.config.ts T3: D1 + Drizzle schema, migrations and db:migrate 2026-11-14 12:54:59 +01:00
LICENSE Initial commit: spec, plan, license 2026-11-14 12:38:24 +01:00
package.json T26 round 2: lucide icons, mobile bottom tab bar, single-surface chronological calendar, grouped overview with urgency chips, connections aside, collapsible danger rows 2026-11-14 16:18:06 +01:00
PLAN.md PLAN: link T26 PR 2026-11-14 16:32:12 +01:00
README.md T25: docs/security.md (threat model + controls), PostHog in config reference 2026-11-14 15:55:52 +01:00
SPEC.md Initial commit: spec, plan, license 2026-11-14 12:38:24 +01:00
SPEC.v0.md Initial commit: spec, plan, license 2026-11-14 12:38:24 +01:00
tsconfig.json T1: scaffold TanStack Start on Cloudflare Workers 2026-11-14 12:39:59 +01:00
tsr.config.json T1: scaffold TanStack Start on Cloudflare Workers 2026-11-14 12:39:59 +01:00
vite.config.ts T1: scaffold TanStack Start on Cloudflare Workers 2026-11-14 12:39:59 +01:00
vitest.config.ts T24: self-hosting guide + bun run setup (local .dev.vars/keys/migrations, resource ids, printed deploy checklist) 2026-11-14 15:32:51 +01:00
worker-configuration.d.ts T25: fixes from the whole-repo security audit 2026-11-14 16:05:21 +01:00
wrangler.jsonc Pre-deploy security review fixes 2026-11-14 17:49:35 +01:00

FIT-CVUT-OS

One place for all FIT ČVUT information systems (timetable, grades, Marast, course materials), exposed to AI assistants (ChatGPT, Claude, …) via a remote MCP server. Open source, MIT, deployable to Cloudflare Workers.

v1 in progress — see PLAN.md.

Development

Requirements: bun ≥ 1.4.

bun install
bun run setup                    # .dev.vars with generated secrets + local D1 (fill in FIT_AUTH_CLIENT_*)
bun run dev                      # http://localhost:3000
Script What it does
bun run setup Create/complete .dev.vars, migrate local D1. --production prints the deploy checklist; --d1-id/--kv-id write resource ids
bun run dev Vite + workerd dev server on :3000
bun run build Production build
bun run typecheck tsc --noEmit
bun run lint / format Biome check / autofix
bun run test Vitest
bun run db:generate Generate a SQL migration from src/db/schema.ts (drizzle-kit)
bun run db:migrate Apply migrations to the local D1 database (.wrangler/state)
bun run mcp:smoke MCP smoke test against a running server (--login for the full OAuth flow)
bun run fixtures:record Record PII-scrubbed live API responses for the signed-in dev user (git-ignored)
bun run cf-typegen Regenerate worker-configuration.d.ts from wrangler.jsonc