尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证NorthPay — Canadian payroll SaaS built with Next.js 14, TypeScript, and Framer Motion
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Canadian payroll. Finally beautiful.
A premium payroll SaaS built for modern Canadian businesses outside Quebec. Apple-inspired interface, calm motion, real CRA-grade math.
cd northpay
npm install
npm run dev
Open http://localhost:3000.
Hero with floating gradient + animated payroll cards, six-feature grid, automation flow, province coverage list, paystub preview, employees rail, and footer. Subtle GPU-friendly motion via Framer Motion.
Located in lib/payroll/. Modular and scalable.
| File | Purpose |
|---|---|
constants.ts | 2026 CRA constants (CPP, EI, federal/provincial brackets, BPA) |
federal-tax.ts | Federal income tax with bracketed calculation + BPA credit |
provincial-tax.ts | Per-province tax + Ontario surtax |
cpp.ts | CPP1 + CPP2 (tiered above YMPE) |
ei.ts | EI premium + employer match (1.4×) |
engine.ts | Orchestrator: gross → net per period |
types.ts | All shared interfaces |
Zustand + localStorage persistence (lib/store/):
employees — seeded with four sample employeespayroll — payroll-run historysettings — company, theme, notificationspersist middlewareThe 2026 CRA T4127 (Payroll Deductions Formulas) is typically published in
Q4 2025. Where 2026 numbers are not finalized, this scaffold uses confirmed
2025 brackets with conservative indexation. Update lib/payroll/constants.ts
when the official 2026 tables are released.
This is a working scaffold. Always verify with an accountant before filing real-world remittances.
app/
├── layout.tsx Root layout + theme script
├── globals.css Design tokens, glass utilities, dark mode
├── page.tsx Landing page
└── dashboard/
├── layout.tsx Sidebar + top bar + transition shell
├── page.tsx → redirects to /employees
├── employees/page.tsx
├── payroll/page.tsx
├── paystubs/page.tsx
└── settings/page.tsx
components/
├── landing/ Hero, features, automation, provinces, paystub, employees, footer
├── dashboard/ 4-tab views + sidebar + topbar
└── ui/ Button, Input, Select, Dialog, Switch, Card, Badge, ...
lib/
├── payroll/ Engine + tax modules + constants + types
├── store/ Zustand stores (employees, payroll, settings)
└── utils.ts cn(), formatCAD, formatDate, uid
SUPPORTED_PROVINCES in lib/payroll/types.ts.ProvincialTaxConfig entry to PROVINCIAL_TAX in lib/payroll/constants.ts.OVERTIME_WEEKLY_HOURS.PROVINCE_NAMES.That's it — the engine, UI, and forms pick it up automatically.
UNLICENSED — internal prototype.