Agentero
에이전트를 연결해 로컬 Vault에 연구 컨텍스트를 보관·Zotero에서 무결점 이동·읽고 이해·재활용
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Get it done. Beat your friends. A free, AI-powered to-do PWA where friends compete on a weekly leaderboard.
Stack: Next.js 16 (App Router, Cache Components) · TypeScript · Tailwind CSS v4 · Supabase (Postgres, Auth) · Vercel.
Build steps 1–7 of 12 from the build brief, plus onboarding (pulled forward from step 12).
1. Foundation
/brand: the brand and theme system sheet from the Claude Design handoffproxy.ts, email magic link sign-in (Google behind a flag)profiles table with RLS and a sign-up trigger; settings for theme, accent, coach, username, bio2. Tasks
tasks and subtasks tables with RLS, column grants and server-owned timestamps/add), task options sheet, swipe right to complete and left for options/task/[id]): title, difficulty, date and time, repeat, category, notes, steps, share toggle, delete3. AI
/api/ai: verifies the user, enforces 10 AI actions a day (reset at local midnight), JSON-only model calls4. Points, streaks and badges
point_events written only by database triggers: 5/10/20/35/50 by AI difficulty, +20% on or before the due dateOnboarding
5. Friends
/invite/[code], works signed out, joins after sign-in), WhatsApp, share sheet and an on-demand QR code6. Leaderboard
weekly_board(): you and your friends ranked by this week's points (ties share a rank); resets Monday 00:00 localclose_weeks() hourly via pg_cron records each finished week and awards Giant Slayer for finishing #17. Challenges
/challenge/new, and the full-screen trophy moment8. Feed
proofs bucket, +10 points and a verified tick/api/cron/cleanup-proofs runs daily (vercel.json) and deletes photos older than 7 days; the tick and points stay9. Coach and nudges
send_nudge)coach_recaps); the static lines are the fallback10. Notifications
push_queue), sent by /api/push/flush: right after the action, when anyone opens the app, and every minute from Supabase (supabase/push-schedule.sql)11. Focus timer and weekly recap
/focus: a 25-minute session timed by the server (+5 when it ends, up to 8 a day), from a task, its options, or the Me screen; keeps the screen awake, corrects for a phone clock that's off, and pays out even if you're on another screen (timer pill and toast)/recap: the 1080 × 1920 card from the design (rank, points, streak, top task, your theme and accent), drawn as a PNG by /api/recap/card; share straight to WhatsApp Status or Instagram Stories with your invite link, or download itNext: polish and launch (step 12).
supabase/migrations/ in order (SQL editor, or supabase db push). If you're not sure which have run, paste supabase/catch-up.sql into the SQL editor instead: it applies everything that's missing and is safe to run any number of times. Regenerate it after adding a migration.http://localhost:3000/auth/callback and your production https://…/auth/callback to the redirect URLs.NEXT_PUBLIC_GOOGLE_AUTH_ENABLED=true to show the button.cp .env.example .env.local and fill in the project URL and publishable key, plus SUPABASE_SECRET_KEY and GEMINI_API_KEY (and optionally GROQ_API_KEY) for AI, CRON_SECRET (any long random string) for the daily photo cleanup and push schedule, and the VAPID keys for push (npx web-push generate-vapid-keys). After deploying, fill in and run supabase/push-schedule.sql once. In Vercel, add the same as environment variables.npm install, then npm run dev./ and /brand work without Supabase; sign-in shows a setup note until the env vars are set.
Tokens live in app/globals.css as CSS variables, switched by data-theme and data-accent on <html>. An inline script in app/layout.tsx applies the saved cookie before first paint. The profile is the source of truth across devices (components/theme-sync.tsx).
| Tailwind | Token | Use |
|---|---|---|
bg-bg bg-surface bg-surface-2 | --bg --surface --surface-2 | Grounds, by depth |
border-line | --border | 1 px borders |
text-ink text-muted | --text --text-muted | Text |
bg-accent + text-on-accent | --accent --on-accent | Filled buttons and pills |
text-accent-text | --accent-text | Accent-coloured text (darker in light mode) |
shadow-glow | --accent-glow | Only on #1 and an active streak |
font-display font-sans font-mono | Space Grotesk · Inter · JetBrains Mono | |
text-caption … text-celebration | 12 → 64 px, in rem | Type scale |
rounded-chip rounded-card rounded-sheet | 12 · 16 · 24 px | Radius |
Accent-coloured text in dark mode uses each accent's base hex, except Nova, which uses #AE7BFF: base Nova is only 3.9:1 in a coach bubble and 4.2:1 on surface-2.
app/ routes: / · /login · /auth/* · (app)/ today, add, task/[id], board, feed, me · /settings · /brand
components/ brand/ (Logo, AppIcon, CoachBubble) · ui/ (Button) · install prompt · theme sync
lib/ theme, dates, auth data access, Supabase clients, tasks/ (offline store, types, points), ai/ (providers, prompts, redaction)
public/sw.js service worker (app shell and visited screens; task data syncs via lib/tasks/store.ts)
supabase/ SQL migrations
design/ Claude Design handoff bundle (prototypes, chats, design brief)