├── postcss.config.js ├── renovate.json ├── .claude └── settings.local.json ├── src ├── main.js ├── router │ └── index.js ├── components │ ├── AllocationResult.vue │ └── AllocationInput.vue ├── stores │ └── allocation.js ├── assets │ └── main.css ├── App.vue └── views │ ├── AboutView.vue │ ├── CalculatorView.vue │ └── ConfigurationView.vue ├── tailwind.config.js.bak ├── .gitignore ├── index.html ├── package.json ├── public ├── manifest.json ├── favicon.ico ├── icon-192.png └── icon-512.png ├── .github └── workflows │ └── build.yml ├── LICENSE ├── vite.config.js └── README.md /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | '@tailwindcss/postcss': {}, 4 | }, 5 | } -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:recommended" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /.claude/settings.local.json: -------------------------------------------------------------------------------- 1 | { 2 | "permissions": { 3 | "allow": [ 4 | "Bash(gh pr view:*)", 5 | "Bash(gh pr diff:*)", 6 | "Bash(gh pr checks:*)", 7 | "Bash(gh pr list:*)", 8 | "WebSearch" 9 | ], 10 | "deny": [], 11 | "ask": [] 12 | } 13 | } -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import { createPinia } from 'pinia' 3 | import App from './App.vue' 4 | import router from './router' 5 | import './assets/main.css' 6 | 7 | const app = createApp(App) 8 | 9 | app.use(createPinia()) 10 | app.use(router) 11 | 12 | app.mount('#app') -------------------------------------------------------------------------------- /tailwind.config.js.bak: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | export default { 3 | content: [ 4 | "./index.html", 5 | "./src/**/*.{vue,js,ts,jsx,tsx}", 6 | ], 7 | theme: { 8 | extend: { 9 | colors: { 10 | 'profit-green': '#10b981', 11 | 'tax-blue': '#3b82f6', 12 | 'owner-purple': '#8b5cf6', 13 | 'opex-orange': '#f97316', 14 | } 15 | }, 16 | }, 17 | plugins: [], 18 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | 26 | # Environment files 27 | .env 28 | .env.local 29 | .env.production 30 | 31 | # Build files 32 | *.tsbuildinfo -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |8 | This app was created by Kevin Griffin as a way to quickly figure out his allocations 9 | after years of doing Profit First for his consulting business. 10 |
11 | 12 |13 | PFCalc is a simple, no-frills calculator designed to help business owners implement 14 | the Profit First methodology. Enter your income, and instantly see how much to allocate 15 | to profit, taxes, owner's pay, and operating expenses. 16 |
17 | 18 |19 | The app works offline, saves your custom allocation percentages, and requires no sign-up 20 | or personal information. It's a tool built by an entrepreneur, for entrepreneurs. 21 |
22 |
35 | 37 | Kevin Griffin is a consultant and entrepreneur who has been successfully implementing 38 | the Profit First methodology in his consulting business for years. After repeatedly 39 | calculating allocations manually, he built PFCalc to streamline the process. 40 |
41 | 42 |100 | Profit First is a cash management system developed by Mike Michalowicz that helps 101 | businesses achieve profitability by flipping the traditional accounting formula. Instead 102 | of Sales - Expenses = Profit, Profit First uses Sales - Profit = Expenses, ensuring 103 | profit is prioritized from day one. 104 |
105 |106 | Learn more about the methodology in Mike Michalowicz's book 107 | 108 | "Profit First: Transform Your Business from a Cash-Eating Monster to a Money-Making Machine" 109 | 110 |
111 |29 | Enter the total amount from your income account to calculate accounts 30 |
31 |103 | A tool built by an entrepreneur, for entrepreneurs. 104 |
105 |115 | The Profit First methodology, developed by Mike Michalowicz, transforms the traditional accounting formula 116 | of Sales - Expenses = Profit to Sales - Profit = Expenses. By allocating profit first, you ensure your 117 | business remains profitable. The default percentages shown are recommendations for businesses with revenue 118 | under $250,000 annually. 119 |
120 |Recommended accounts for businesses under $250K revenue:
112 |119 | These percentages should be adjusted based on your specific business model, industry, and revenue level. 120 |
121 |131 | Your configuration is automatically saved to your browser's local storage. 132 |
133 |135 | Use the Export button to save a backup or share your configuration with others. 136 |
137 |