Skip to content

JeffKnowlesJr/pii-link

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pii.link

Pii.link is a freelancer-focused business OS: clients, projects, time tracking, invoicing, expenses, and analytics in one static web app backed by Firebase.

Live demo: https://pii.link

Tech stack

Area Choice
Framework Next.js 15 (Pages Router), static export (output: 'export')
UI React 19, Material UI v7, Emotion
Data Firebase Auth, Firestore, Storage (client SDK)
Serverless Optional; this repo targets static hosting + rules deploys
State / data fetching TanStack Query
Charts Recharts
PWA next-pwa
Language TypeScript
Tests Jest, Playwright, Firestore rules unit tests

Architecture (short)

  • Static export: The app ships as static HTML/JS in out/ and is served from Firebase Hosting (or any static host).
  • Client-side Firebase: Configuration comes only from process.env in firebase/config.ts (see .env.local.example). No API keys are committed in source.
  • Multi-tenant data: Business data lives under tenants/{firebaseAuthUid}/.... Firestore security rules are the primary authorization boundary.
  • Roles: userRoles documents and optional custom claims gate admin vs tenant vs client-viewer experiences.

Local development

  1. Copy env template: cp .env.local.example .env.local
  2. Fill in Firebase web app values from Firebase Console → Project settings → Your apps.
  3. npm install
  4. npm run dev

npm run build also generates .env.build.local (gitignored) containing the Git commit SHA and build timestamp for the footer. Your Firebase keys in .env.local are never touched by the build script.

Testing

npm run type-check
npm test
npm run test:rules
npm run test:e2e
npm run build

End-to-end tests expect a running build and test user credentials in env (see playwright.config.ts).

Deployment

Configure .firebaserc for your Firebase project, then build (npm run build) and deploy hosting/rules from your machine or any pipeline you control (for example firebase deploy).

License

MIT — see LICENSE.

About

Pii.link is a freelancer-focused business OS: clients, projects, time tracking, invoicing, expenses, and analytics in one static web app backed by Firebase.

Topics

Resources

License

Stars

Watchers

Forks

Contributors