├── backend ├── app │ ├── __init__.py │ ├── db.py │ └── server.py ├── model │ └── ml_model.py └── .gitignore ├── frontend ├── constants │ └── data.ts ├── helpers │ └── index.ts ├── assets │ └── index.ts ├── .eslintrc.json ├── app │ ├── fonts │ │ ├── GeistVF.woff │ │ └── GeistMonoVF.woff │ ├── globals.css │ ├── layout.tsx │ ├── not-found.tsx │ ├── planning │ │ └── page.tsx │ ├── investment │ │ └── page.tsx │ ├── auth │ │ ├── signin │ │ │ └── page.tsx │ │ └── signup │ │ │ └── page.tsx │ ├── about │ │ └── page.tsx │ ├── transactions │ │ └── page.tsx │ ├── page.tsx │ ├── budgeting │ │ └── page.tsx │ └── contact │ │ └── page.tsx ├── next.config.mjs ├── postcss.config.mjs ├── components │ ├── Income.tsx │ ├── Balance.tsx │ ├── Expense.tsx │ ├── Investment.tsx │ ├── Layout.tsx │ ├── Footer.tsx │ ├── IncomeExpense.tsx │ ├── Transaction.tsx │ ├── Sidebar.tsx │ ├── TransactionList.tsx │ ├── AddTransaction.tsx │ └── Header.tsx ├── tailwind.config.ts ├── package.json ├── tsconfig.json ├── .gitignore └── lib │ └── utils.ts ├── LICENSE └── README.md /backend/app/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /backend/model/ml_model.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/constants/data.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/helpers/index.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/assets/index.ts: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /frontend/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /frontend/app/fonts/GeistVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZEviod/Personal-finance-management/HEAD/frontend/app/fonts/GeistVF.woff -------------------------------------------------------------------------------- /frontend/next.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = {}; 3 | 4 | export default nextConfig; 5 | -------------------------------------------------------------------------------- /frontend/app/fonts/GeistMonoVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZEviod/Personal-finance-management/HEAD/frontend/app/fonts/GeistMonoVF.woff -------------------------------------------------------------------------------- /frontend/postcss.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('postcss-load-config').Config} */ 2 | const config = { 3 | plugins: { 4 | tailwindcss: {}, 5 | }, 6 | }; 7 | 8 | export default config; 9 | -------------------------------------------------------------------------------- /backend/.gitignore: -------------------------------------------------------------------------------- 1 | # Python 2 | __pycache__/ 3 | *.pyc 4 | env/ 5 | venv/ 6 | .venv/ 7 | 8 | # SQLite DB and secret 9 | app/data.db 10 | app/secret.key 11 | 12 | # Editor 13 | .vscode/ 14 | *.swp -------------------------------------------------------------------------------- /frontend/app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | /* Always reserve space for the vertical scrollbar to avoid layout shift 6 | when pages have different heights. */ 7 | html { 8 | overflow-y: scroll; 9 | scrollbar-gutter: stable; 10 | } 11 | 12 | /* Make sure body fills the viewport height */ 13 | body { 14 | min-height: 100vh; 15 | } 16 | -------------------------------------------------------------------------------- /frontend/components/Income.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | const Income: React.FC = () => { 4 | return ( 5 |
6 |
7 |

Month Income

8 |

$0.00

9 |
10 |
11 | ); 12 | }; 13 | 14 | export default Income; 15 | -------------------------------------------------------------------------------- /frontend/components/Balance.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | const Balance: React.FC = () => { 4 | return ( 5 |
6 |
7 |

Your Balance

8 |

$0.00

9 |
10 |
11 | ); 12 | }; 13 | 14 | export default Balance; 15 | -------------------------------------------------------------------------------- /frontend/components/Expense.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | const Expense: React.FC = () => { 4 | return ( 5 |
6 |
7 |

Month Expense

8 |

$0.00

9 |
10 |
11 | ); 12 | }; 13 | 14 | export default Expense; 15 | -------------------------------------------------------------------------------- /frontend/components/Investment.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | const Investment: React.FC = () => { 4 | return ( 5 |
6 |
7 |

Month Income

8 |

$0.00

9 |
10 |
11 | ); 12 | }; 13 | 14 | export default Investment; 15 | -------------------------------------------------------------------------------- /frontend/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from "tailwindcss"; 2 | 3 | const config: Config = { 4 | content: [ 5 | "./pages/**/*.{js,ts,jsx,tsx,mdx}", 6 | "./components/**/*.{js,ts,jsx,tsx,mdx}", 7 | "./app/**/*.{js,ts,jsx,tsx,mdx}", 8 | ], 9 | theme: { 10 | extend: { 11 | colors: { 12 | background: "var(--background)", 13 | foreground: "var(--foreground)", 14 | }, 15 | }, 16 | }, 17 | plugins: [], 18 | }; 19 | export default config; 20 | -------------------------------------------------------------------------------- /frontend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontend", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "next": "14.2.15", 13 | "react": "^18", 14 | "react-dom": "^18", 15 | "react-hot-toast": "^2.4.1" 16 | }, 17 | "devDependencies": { 18 | "@types/node": "^20", 19 | "@types/react": "^18", 20 | "@types/react-dom": "^18", 21 | "eslint": "^8", 22 | "eslint-config-next": "14.2.15", 23 | "postcss": "^8", 24 | "tailwindcss": "^3.4.1", 25 | "typescript": "^5" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /frontend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": ["dom", "dom.iterable", "esnext"], 4 | "allowJs": true, 5 | "skipLibCheck": true, 6 | "strict": true, 7 | "noEmit": true, 8 | "esModuleInterop": true, 9 | "module": "esnext", 10 | "moduleResolution": "bundler", 11 | "resolveJsonModule": true, 12 | "isolatedModules": true, 13 | "jsx": "preserve", 14 | "incremental": true, 15 | "plugins": [ 16 | { 17 | "name": "next" 18 | } 19 | ], 20 | "paths": { 21 | "@/*": ["./*"] 22 | } 23 | }, 24 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 25 | "exclude": ["node_modules"] 26 | } 27 | -------------------------------------------------------------------------------- /frontend/components/Layout.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Header from "./Header"; 3 | import Footer from "./Footer"; 4 | import { Toaster } from "react-hot-toast"; 5 | 6 | const Layout = ({ children }: { children: React.ReactNode }) => { 7 | return ( 8 | <> 9 |
10 | {children} 11 |