├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── custom.md │ └── feature_request.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .prettierrc.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── eslint.config.js ├── index.html ├── package.json ├── public ├── fonts │ └── Vazir-Bold-FD-WOL.woff2 └── penny.webp ├── src ├── App.css ├── App.tsx ├── assets │ └── react.svg ├── components │ ├── charts │ │ └── ProductCharts.tsx │ ├── filters │ │ ├── CategoryFilter.tsx │ │ ├── DateFilter.tsx │ │ └── ExpenseSearch.tsx │ ├── forms │ │ ├── ExpenseForm.tsx │ │ ├── LoginForm.tsx │ │ ├── ProductForm.tsx │ │ ├── UserForm.tsx │ │ └── index.ts │ ├── layout │ │ ├── Container.tsx │ │ ├── Navbar.tsx │ │ └── index.ts │ ├── lists │ │ ├── ExpenseList.tsx │ │ ├── ProductList.tsx │ │ ├── TotalExpense.tsx │ │ ├── UserList.tsx │ │ ├── UserManager.tsx │ │ └── index.ts │ ├── managers │ │ └── ExpenseManager.tsx │ ├── managment │ │ ├── ProductDashboard.tsx │ │ └── ProductManager.tsx │ ├── tables │ │ └── ProductTable.tsx │ ├── ui │ │ ├── Button.tsx │ │ ├── Input.tsx │ │ ├── Modal.tsx │ │ ├── Pagination.tsx │ │ └── index.ts │ └── utils │ │ ├── DownloadExcel.tsx │ │ └── supabaseClient.ts ├── index.css ├── main.tsx ├── pages │ ├── Login.tsx │ └── dashboard.tsx ├── routes │ └── ProtectedRoute.tsx ├── store │ ├── featcher │ │ ├── authSlice.ts │ │ ├── categorySlice.ts │ │ ├── expenseSlice.ts │ │ ├── productSlice.ts │ │ ├── settingsSlice.ts │ │ └── userSlice.ts │ ├── hooks.ts │ ├── middleware │ │ └── authMiddleware.ts │ ├── selectores │ │ └── userSelectors.ts │ └── store.ts ├── styles │ └── fonts.css ├── tests │ ├── UserForm.test.tsx │ └── UserList.test.tsx ├── validation │ └── loginSchema.ts └── vite-env.d.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/.github/ISSUE_TEMPLATE/bug_report.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/custom.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/.github/ISSUE_TEMPLATE/custom.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/.github/ISSUE_TEMPLATE/feature_request.md -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/.github/PULL_REQUEST_TEMPLATE.md -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/.gitignore -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/.prettierrc.json -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/CODE_OF_CONDUCT.md -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/CONTRIBUTING.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/README.md -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/SECURITY.md -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/eslint.config.js -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/index.html -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/package.json -------------------------------------------------------------------------------- /public/fonts/Vazir-Bold-FD-WOL.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/public/fonts/Vazir-Bold-FD-WOL.woff2 -------------------------------------------------------------------------------- /public/penny.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/public/penny.webp -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: vazir; 3 | direction: rtl; 4 | } 5 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/App.tsx -------------------------------------------------------------------------------- /src/assets/react.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/assets/react.svg -------------------------------------------------------------------------------- /src/components/charts/ProductCharts.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/charts/ProductCharts.tsx -------------------------------------------------------------------------------- /src/components/filters/CategoryFilter.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/filters/CategoryFilter.tsx -------------------------------------------------------------------------------- /src/components/filters/DateFilter.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/filters/DateFilter.tsx -------------------------------------------------------------------------------- /src/components/filters/ExpenseSearch.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/filters/ExpenseSearch.tsx -------------------------------------------------------------------------------- /src/components/forms/ExpenseForm.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/forms/ExpenseForm.tsx -------------------------------------------------------------------------------- /src/components/forms/LoginForm.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/forms/LoginForm.tsx -------------------------------------------------------------------------------- /src/components/forms/ProductForm.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/forms/ProductForm.tsx -------------------------------------------------------------------------------- /src/components/forms/UserForm.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/forms/UserForm.tsx -------------------------------------------------------------------------------- /src/components/forms/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/forms/index.ts -------------------------------------------------------------------------------- /src/components/layout/Container.tsx: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/layout/Navbar.tsx: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/layout/index.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/lists/ExpenseList.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/lists/ExpenseList.tsx -------------------------------------------------------------------------------- /src/components/lists/ProductList.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/lists/ProductList.tsx -------------------------------------------------------------------------------- /src/components/lists/TotalExpense.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/lists/TotalExpense.tsx -------------------------------------------------------------------------------- /src/components/lists/UserList.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/lists/UserList.tsx -------------------------------------------------------------------------------- /src/components/lists/UserManager.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/lists/UserManager.tsx -------------------------------------------------------------------------------- /src/components/lists/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/lists/index.ts -------------------------------------------------------------------------------- /src/components/managers/ExpenseManager.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/managers/ExpenseManager.tsx -------------------------------------------------------------------------------- /src/components/managment/ProductDashboard.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/managment/ProductDashboard.tsx -------------------------------------------------------------------------------- /src/components/managment/ProductManager.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/managment/ProductManager.tsx -------------------------------------------------------------------------------- /src/components/tables/ProductTable.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/tables/ProductTable.tsx -------------------------------------------------------------------------------- /src/components/ui/Button.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/ui/Button.tsx -------------------------------------------------------------------------------- /src/components/ui/Input.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/ui/Input.tsx -------------------------------------------------------------------------------- /src/components/ui/Modal.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/ui/Modal.tsx -------------------------------------------------------------------------------- /src/components/ui/Pagination.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/ui/Pagination.tsx -------------------------------------------------------------------------------- /src/components/ui/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/ui/index.ts -------------------------------------------------------------------------------- /src/components/utils/DownloadExcel.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/utils/DownloadExcel.tsx -------------------------------------------------------------------------------- /src/components/utils/supabaseClient.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/components/utils/supabaseClient.ts -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss"; 2 | 3 | body { 4 | font-family: vazir; 5 | direction: rtl; 6 | } 7 | -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/main.tsx -------------------------------------------------------------------------------- /src/pages/Login.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/pages/Login.tsx -------------------------------------------------------------------------------- /src/pages/dashboard.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/pages/dashboard.tsx -------------------------------------------------------------------------------- /src/routes/ProtectedRoute.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/routes/ProtectedRoute.tsx -------------------------------------------------------------------------------- /src/store/featcher/authSlice.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/store/featcher/authSlice.ts -------------------------------------------------------------------------------- /src/store/featcher/categorySlice.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/store/featcher/categorySlice.ts -------------------------------------------------------------------------------- /src/store/featcher/expenseSlice.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/store/featcher/expenseSlice.ts -------------------------------------------------------------------------------- /src/store/featcher/productSlice.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/store/featcher/productSlice.ts -------------------------------------------------------------------------------- /src/store/featcher/settingsSlice.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/store/featcher/userSlice.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/store/featcher/userSlice.ts -------------------------------------------------------------------------------- /src/store/hooks.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/store/hooks.ts -------------------------------------------------------------------------------- /src/store/middleware/authMiddleware.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/store/middleware/authMiddleware.ts -------------------------------------------------------------------------------- /src/store/selectores/userSelectors.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/store/selectores/userSelectors.ts -------------------------------------------------------------------------------- /src/store/store.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/store/store.ts -------------------------------------------------------------------------------- /src/styles/fonts.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/styles/fonts.css -------------------------------------------------------------------------------- /src/tests/UserForm.test.tsx: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/tests/UserList.test.tsx: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/validation/loginSchema.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/src/validation/loginSchema.ts -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /tsconfig.app.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/tsconfig.app.json -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/tsconfig.json -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/tsconfig.node.json -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frau-azadeh/penny-track/HEAD/vite.config.ts --------------------------------------------------------------------------------