尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Attendance for the night seder program and the daf yomi shiur. One user, one phone, meant to be used standing in the room with one thumb.
Some of the men are paid. Tick Gets paid on a person and give him a usual monthly amount; then under More → Payments add a period (usually a Jewish month — the name fills itself in from the date) and record what each man actually got. A payment can be more or less than the usual amount, and a month can be settled in more than one go.
Next.js (App Router) and TypeScript, Tailwind for styling, Supabase for the database and sign-in, deployed on Vercel.
Do these in order. Steps 1 to 5 get it running on your laptop; 6 to 9 put it on your phone.
Go to supabase.com, sign in, and create a new project. Give it a name ("night-seder" is fine), pick a region near New York, and save the database password somewhere — you won't need it for this app, but you will want it eventually. The project takes a minute or two to finish setting up.
In your new project, open SQL Editor in the left sidebar and click
New query. Open supabase/001_schema.sql in this
repo, copy the whole file, paste it in, and press Run.
That creates every table, turns on row level security, and inserts the single settings row. You should see "Success. No rows returned."
If a later change is ever needed, it goes in a new numbered file
(supabase/002_....sql) for you to paste the same way. Nothing in this app
alters the live database on its own.
Still in Supabase:
That second step matters: the whole security model is "there is exactly one account, and anybody signed in is you". With sign-ups open, anyone could make themselves an account and read everything.
.env.localIn Supabase go to Project Settings → API keys. You need two values:
https://abcdefgh.supabase.coIn this folder, copy .env.example to .env.local and fill both in:
cp .env.example .env.local
NEXT_PUBLIC_SUPABASE_URL=https://abcdefgh.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
Never put the service role key anywhere. It bypasses row level security. The anon key is safe to ship to the browser — that's what it's for.
npm install
npm run dev
Open http://localhost:3000, sign in with the email and password from step 3. You'll land on Tonight with nothing in it. Add a zman under More → Zmanim, add people under More → People, pair them up on the zman's page, and Tonight fills in.
Make an empty repository on GitHub (no README, no .gitignore — this folder already has both), then:
git remote add origin https://github.com/YOUR-USERNAME/night-seder.git
git push -u origin main
Go to vercel.com, sign in with GitHub, and Add New →
Project. Import the night-seder repository.
Before you click Deploy, open Environment Variables and add the same two values from step 4:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYThen deploy. You'll get a URL like https://night-seder.vercel.app.
On the phone, open the Vercel URL in Safari (not Chrome — only Safari can install a home-screen app). Tap the Share button, scroll down, tap Add to Home Screen, and tap Add.
Open it from the home-screen icon and sign in again. This is not a bug: a home-screen app has its own storage, separate from Safari, so the session you created in Safari isn't there. Once you've signed in inside the app, it stays signed in.
A free Supabase project pauses itself after about a week with no database activity. If you come back from a long break and the app can't load anything, go to the Supabase dashboard and click Restore project. It comes back with all your data. Using the app at all counts as activity, so during a zman this will never happen.
npm run dev # http://localhost:3000
npm run build # production build, fails on any type error
npm test # unit tests for the date and attendance rules
npm run lint
The rules that are easy to get wrong live in lib/ and are unit-tested:
lib/dates.ts — calendar dates in America/New_York. The night program starts
at 8:30 pm Eastern, which is already tomorrow in UTC, so "today" is computed
in New York and calendar dates never pass through a timestamp.lib/attendance.ts — derived schedules, which sessions count as held, what
each person was expected at, and missed streaks.lib/contact.ts — who lands in "Needs attention" and why.lib/money.ts — amounts as whole cents. Money is never a float, so a ledger
can't drift a cent at a time.Run npm test after touching any of them.