尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Track invoices you've already sent and automatically email escalating, polite
payment reminders — via Stripe, UPI, bank transfer, or a QR code — until
they're paid. Not a full invoicing/accounting app: you invoice however you
already do; PayNudge just tracks due dates, payment status, and chases follow-up.檢視完整 README ↗Track invoices you've already sent and automatically email escalating, polite payment reminders — via Stripe, UPI, bank transfer, or a QR code — until they're paid. Not a full invoicing/accounting app: you invoice however you already do; PayNudge just tracks due dates, payment status, and chases follow-up.
draft →
sent/overdue/partially_paid → paid/void. Drafts never get reminders.client_name, invoice_number,
amount, amount_due (reflects partial payments), due_date,
payment_link, days_overdue, upi_id, bank_details — live preview
while editing. Pause/resume or send-now per invoice; both auto-hide once
every step's already been sent./stripe-webhook?uid=<id>) + signing
secret, so payments land directly in their account and auto-confirm without
PayNudge ever holding a Stripe key on their behalf.draft/sent/overdue/partially_paid) but keeps paid/void invoices
as history, just unlinked from the client.React + TypeScript + Tailwind + Vite · Supabase (Postgres, Auth, Edge Functions, Storage) · Nodemailer (any SMTP) · Stripe (client Payment Links + PayNudge's own Billing Portal)
npm install
cp .env.example .env # VITE_SUPABASE_URL / VITE_SUPABASE_ANON_KEY
npm run dev
Provision a real Supabase project before the frontend does much:
npx supabase login
npx supabase link --project-ref <your-project-ref>
npx supabase db push # tables, RLS, default reminder sequence + free plan trigger
Then set secrets and deploy the edge functions:
npx supabase secrets set --env-file supabase/.env # your own copy, git-ignored
npx supabase functions deploy send-reminders
npx supabase functions deploy stripe-webhook
npx supabase functions deploy create-portal-session
SMTP (SMTP_HOST/PORT/SECURE/USER/PASSWORD, REMINDER_FROM_EMAIL) is used
only by send-reminders. Auth emails (confirm/reset) are sent by Supabase
itself — configure Custom SMTP and add <domain>/dashboard +
<domain>/reset-password to Redirect URLs in the Supabase dashboard, or
confirmation/reset links won't redirect right in production.
Stripe: STRIPE_SECRET_KEY is only for PayNudge's own subscription
billing portal — client payments need no key, since users bring their own
Payment Link + webhook secret (entered in Payment settings).
send-reminders needs a daily call with no body and an x-cron-secret header
matching CRON_SECRET. Either use Supabase's dashboard cron scheduler, or
pg_cron + pg_net:
select cron.schedule('send-reminders-daily', '0 9 * * *', $$
select net.http_post(
url := 'https://<project-ref>.supabase.co/functions/v1/send-reminders',
headers := jsonb_build_object('x-cron-secret', '<CRON_SECRET value>')
);
$$);
The in-app "Send reminder now" button calls the same function with
{ invoice_id }, authenticated as the owner, bypassing the day-offset gate
(but not the paused check).
Full invoice/PDF generation, multi-currency, team accounts, SMS/WhatsApp reminders, recurring invoices, paid-plan checkout.