Releases: SafetyMP/Professional-Service-Automation
Releases · SafetyMP/Professional-Service-Automation
Release list
v0.5.0 — Phase 2 Complete
Phase 2 complete
Demo-ready for professional services firms. See docs/phase-2-complete.md for the full walkthrough.
Highlights
- QuickBooks OAuth — connect and push journal entries from invoices
- Reporting polish — contract/milestone columns, expense-by-category on profitability and project detail
- Xero OAuth (v0.4.0), milestone billing, expense UI v2, contract-aware profitability (v0.2–v0.4)
- Updated README, screenshots, and MVP scope
Optional env vars
XERO_CLIENT_ID, XERO_CLIENT_SECRET, QUICKBOOKS_CLIENT_ID, QUICKBOOKS_CLIENT_SECRET, AUTH_URL
v0.4.1 — Accounting manager access
Fixed
- Managers can access Settings → Accounting and edit chart of accounts
- Sidebar hides Accounting for consultants; Xero connect remains admin-only
v0.4.0 — Xero OAuth & milestone polish
Xero OAuth & milestone polish
- Xero OAuth connect/disconnect in Settings → Accounting
- Push manual journals to Xero from invoice detail
- Optional Xero account codes on chart of accounts
- Milestone contract validation and reorder controls
- Expense summary by category for managers
v0.3.0 — Expense UI v2
Expense UI v2
- Expense categories per organization
- Receipt uploads (JPG, PNG, WebP, PDF up to 5 MB)
- Manager bulk approval
- Category-aware invoice line descriptions
v0.2.0
Phase 2 billing and accounting
Added
- Contract-aware profitability: fixed-fee and retainer projects use invoice totals and remaining contract balance for revenue instead of hours × rate
- Milestone billing:
Milestonemodel with PLANNED → READY → INVOICED workflow, project milestone UI, and milestone-based invoice generation - Accounting export v2: configurable chart of accounts (Settings → Accounting), Xero manual journal CSV, and QuickBooks Online journal CSV formats
Changed
- Profitability rules spec updated for contract vs T&M vs milestone revenue recognition
- Project detail shows "Contract revenue" label for fixed-fee, retainer, and milestone profitability breakdown
- Journal CSV exports use organization account names from settings
Upgrade
- Run
npm run db:migrateafter pulling - Re-apply RLS if you use tenant policies:
psql "$DIRECT_URL" -f prisma/rls.sql - Reseed demo data:
npm run db:seed
v0.1.5
v0.1.4
v0.1.3
Added
- Full UI design system: dark sidebar, teal accent, Inter typography, Lucide icons
- Shared components: PageHeader, StatCard, Table, Badge, EmptyState, Alert
- Mobile navigation drawer and fixed sidebar active-state logic
Changed
- Redesigned login, dashboard, and all app pages
- Regenerated README screenshots and demo GIF
v0.1.2
Added
- Docker deployment:
Dockerfile,docker-compose.stack.yml, and deploy guide - README hero demo GIF and one-command deploy quick start
- Screenshots CI workflow (release, monthly schedule, manual dispatch)
- GitHub Discussions with Q&A template
- Repository description and homepage metadata
Try it
export AUTH_SECRET="$(openssl rand -base64 32)"
docker compose -f docker-compose.stack.yml up --build -d