Lattice
연구를 위한 작업공간
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Crossoff turns today's task list into time blocks on your Google Calendar,
scheduled around everything already on it.
List what you want to get done, most important first, with how long each task
should take and how many sessions to split it into. Crossoff finds your free
time, places the sessions, shows a preview, and adds the plan to your calendar
when you approve it.README 전문 보기 ↗Crossoff turns today's task list into time blocks on your Google Calendar, scheduled around everything already on it.
List what you want to get done, most important first, with how long each task should take and how many sessions to split it into. Crossoff finds your free time, places the sessions, shows a preview, and adds the plan to your calendar when you approve it.
The full design is in
Day Planner — Product & Technical Spec.md.
Crossoff needs a Google OAuth client ID, and each deployment needs its own: a client ID only works on the web addresses registered with it.
In the Google Cloud console, create a project and enable the Google Calendar API (APIs & Services → Library). No billing account is needed.
Open Google Auth Platform (called OAuth consent screen in older consoles):
https://www.googleapis.com/auth/calendar.eventshttps://www.googleapis.com/auth/calendar.freebusyhttps://www.googleapis.com/auth/calendar.calendarlist.readonlyUnder Clients, create an OAuth client ID of type Web application. Add these as Authorized JavaScript origins (no trailing slash):
http://localhost:5173https://your-app.vercel.appLeave Authorized redirect URIs empty, and don't use the client secret anywhere: the browser-only flow doesn't need it.
While the app is in Testing, only listed test users can connect, and they'll see a "Google hasn't verified this app" warning they can click through. Letting anyone connect without the warning requires publishing the app and passing Google's verification for sensitive scopes, which needs a homepage and privacy policy on a domain you own.
Requires Node.js 22 or later.
npm install
cp .env.example .env.local # then set VITE_GOOGLE_CLIENT_ID
npm run dev # http://localhost:5173
The build is a static site in dist/, so any static host works. On Vercel:
npm run build,
output dist).VITE_GOOGLE_CLIENT_ID and redeploy. It's
built into the page, so changes need a new deploy.| Command | What it does |
|---|---|
npm run dev | Start the dev server (localhost:5173) |
npm test | Run the tests once (npm run test:watch to watch) |
npm run lint | Lint with oxlint |
npm run format | Format with Prettier |
npm run build | Type-check and build to dist/ |
GitHub Actions runs lint, the format check, tests and the build on every push.
src/
scheduler/ the planning algorithm: pure functions, no network
calendar/ Google Calendar API calls (free/busy, calendars, events)
auth/ Google sign-in; the token lives in memory only
storage/ saving tasks and settings in local storage
ui/ React components and app state
The scheduler works in minutes since midnight and knows nothing about Google, so most of the logic is covered by fast unit tests.