[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80449":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":12,"stars7d":14,"stars30d":15,"stars90d":13,"forks30d":13,"starsTrendScore":15,"compositeScore":16,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":8,"pushedAt":8,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":13,"starSnapshotCount":13,"syncStatus":14,"lastSyncTime":24,"discoverSource":25},80449,"kalendly_public","albertshiney\u002Fkalendly_public","albertshiney",null,"TypeScript",56,24,1,0,2,3,4.19,false,"main",true,[],"2026-06-12 02:04:02","# Kalendly\n\nA Linear-style, single-tenant scheduling app — your own self-hosted alternative to Calendly.\n\nPick from your event types, share a public booking page, and let guests grab a slot. Your Google Calendar is the source of truth for availability and where the booking lands.\n\n## Stack\n\n- **Next.js 16** (App Router, Turbopack)\n- **TypeScript**, **Tailwind v4**\n- **NextAuth v5** (credentials, single admin)\n- **MongoDB** (driver, Atlas-friendly)\n- **Composio** for Google Calendar OAuth + busy-time \u002F event creation\n- **Vitest** for unit tests\n- **shadcn-style UI primitives** built on **base-ui** + **Radix** popover\n\n## Features\n\n- Public booking pages with searchable timezone picker (auto-detects, IANA list)\n- Reschedule + cancel via signed magic-link tokens (`\u002Fb\u002F[token]`)\n- Admin dashboard, event types, availability editor, bookings inbox, settings\n- Light \u002F dark \u002F system theme\n- Mobile-friendly Linear-style chrome (hairline borders, mono numerals, single accent)\n- Loading skeletons on every admin route\n\n## Local setup\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Falbertshiney\u002Fkalendly_public.git kalendly\ncd kalendly\nnpm install\ncp .env.example .env.local\n# fill in the values in .env.local — see below\nnpm run dev\n```\n\nOpen [http:\u002F\u002Flocalhost:3000](http:\u002F\u002Flocalhost:3000) and you'll be redirected to `\u002Flogin`. Sign in with the `ADMIN_EMAIL` \u002F `ADMIN_PASSWORD` you set, then connect Google Calendar from **Settings**.\n\n### Environment variables\n\nAll seven are required (see `lib\u002Fenv.ts`):\n\n| Var | What | Example |\n|---|---|---|\n| `MONGODB_URI` | Mongo connection string | `mongodb+srv:\u002F\u002Fuser:pass@cluster.mongodb.net\u002Fkalendly` |\n| `NEXTAUTH_SECRET` | JWT signing secret | `openssl rand -base64 32` |\n| `NEXTAUTH_URL` | Origin used by NextAuth | `http:\u002F\u002Flocalhost:3000` |\n| `ADMIN_EMAIL` | The single admin's email | `you@example.com` |\n| `ADMIN_PASSWORD` | The single admin's password | any non-empty string |\n| `APP_URL` | Public origin (used in invite links \u002F OAuth callback) | `http:\u002F\u002Flocalhost:3000` |\n| `COMPOSIO_API_KEY` | API key from [composio.dev](https:\u002F\u002Fcomposio.dev) | `ak_…` |\n\n## Deployment (Vercel)\n\n1. Import the repo on Vercel.\n2. Add all seven env vars under **Project → Settings → Environment Variables** (Production + Preview).\n3. Set `NEXTAUTH_URL` and `APP_URL` to your final domain (e.g. `https:\u002F\u002Fkalendly.example.com`).\n4. Redeploy.\n\nThe build is tolerant when env vars are missing (won't fail the deploy), but the running site will throw on every request until they're set — set them, then redeploy.\n\n## Scripts\n\n- `npm run dev` — local dev (Turbopack)\n- `npm run build` — production build\n- `npm run start` — production server\n- `npm run lint` — ESLint\n- `npm run test` — Vitest\n- `npm run typecheck` — `tsc --noEmit`\n\n## Project layout\n\n```\napp\u002F\n  (admin)\u002F          dashboard, event types, availability, bookings, settings\n  (auth)\u002Flogin      credentials sign-in\n  (public)\u002F         public profile + booking flow\n  api\u002F              REST handlers for booking + integration callbacks\ncomponents\u002F\n  admin\u002F            admin-specific UI (Sidebar, EventTypeForm, …)\n  public\u002F           BookingShell + calendar\u002Fslot picker\n  ui\u002F               shadcn-style primitives + TimezoneCombobox\nlib\u002F                env, db, calendar, availability, booking, …\nserver-actions\u002F     Next.js server actions\nauth.ts             NextAuth config\nproxy.ts            middleware for protected admin routes\n```\n\n## License\n\nMIT — do whatever you want with this. Attribution appreciated but not required.\n","Kalendly 是一个自托管的日程安排应用，提供了类似Calendly的功能。项目使用了Next.js 16、TypeScript和Tailwind v4等现代技术栈构建，支持通过Google日历来管理可用时间，并允许访客通过公开的预订页面选择合适的时间段进行预约。此外，它还具备重新安排或取消会议、管理员控制面板、事件类型管理、可用性编辑器等功能，以及对暗黑模式的支持。此应用适合需要为客户提供在线预约服务但又希望保持数据私密性和控制权的企业或个人使用。","2026-06-11 04:00:47","CREATED_QUERY"]