fin-tracker Tailwind Templates

Fin Tracker

Finance planner app to track and calculate finance info from expenses, banking, investments, savings, insurance and get advice from AI features. Developed with MERN, Firebase, Go, GraphQL, Redis, Postgresql, and ML based APIs.

financeplanner.io


Finance planner app to track and calculate finance info from expenses, banking, investments, savings, insurance and get advice from AI features. Developed with MERN, Firebase, Go, GraphQL, Redis, Postgresql, and ML based APIs.

The structure of the codebase is as follows:

└── πŸ“fin-tracker
    └── πŸ“public
        └── android-chrome-192x192.png
        └── android-chrome-512x512.png
        └── apple-touch-icon.png
        └── favicon-16x16.png
        └── favicon-32x32.png
        └── favicon.ico
        └── index.html
        └── logo192.png
        └── logo512.png
        └── manifest.json
        └── robots.txt
        └── site.webmanifest
    └── πŸ“src
        └── πŸ“assets
            └── blog-featured-what-is-chatbot.svg
            └── close-button.svg
            └── sunset-1373171_1280.jpg
        └── πŸ“components
            └── πŸ“shared
                └── πŸ“about-links
                    └── about-links.component.tsx
                    └── about-links.styles.scss
                └── πŸ“button
                    └── button.component.tsx
                    └── button.styles.scss
                    └── button.styles.tsx
                └── πŸ“chatbot
                    └── πŸ“chatbot-response
                        └── chatbot-response.component.tsx
                        └── chatbot-response.styles.scss
                        └── chatbot-response.styles.tsx
                └── πŸ“drop-button
                    └── drop-button.styles.tsx
                └── πŸ“form-input
                    └── form-input.component.tsx
                    └── form-input.styles.scss
                    └── form-input.styles.tsx
                └── πŸ“market-view
                    └── πŸ“market-data-graph
                        └── market-data-graph.component.tsx
                        └── market-data-graph.styles.scss
                        └── market-data-graph.styles.tsx
                    └── πŸ“market-data-search
                        └── market-data-search.component.tsx
                        └── market-data-search.styles.scss
                        └── market-data-search.styles.tsx
                └── πŸ“mui
                    └── πŸ“accordion
                        └── accordion.component.tsx
                        └── accordion.styles.scss
                    └── πŸ“card
                        └── card.component.tsx
                        └── card.styles.scss
                    └── πŸ“drawer
                        └── drawer.component.tsx
                        └── drawer.styles.scss
                    └── πŸ“floating-action-button
                        └── floating-action-button.component.tsx
                        └── floating-action-button.styles.scss
                    └── πŸ“hidden-drawer
                        └── hidden-drawer.component.tsx
                        └── hidden-drawer.styles.scss
                    └── πŸ“media-card
                        └── media-card.component.tsx
                        └── media-card.styles.jsx
                    └── πŸ“paper
                        └── paper.component.tsx
                        └── paper.styles.scss
                    └── πŸ“responsive-drawer
                        └── responsive-drawer.component.tsx
                        └── responsive-drawer.styles.scss
                    └── πŸ“tabs
                        └── tabs.component.tsx
                        └── tabs.styles.scss
                └── πŸ“savings-goal-calculator
                    └── πŸ“savings-goal-calculator-result
                        └── savings-goal-graph.component.tsx
                        └── savings-goal-graph.styles.scss
                        └── savings-goal-graph.styles.tsx
                        └── savings-goal-result.component.tsx
                        └── savings-goal-result.styles.scss
                        └── savings-goal-result.styles.tsx
                        └── savings-goal-table.component.tsx
                        └── savings-goal-table.styles.scss
                        └── savings-goal-table.styles.tsx
                    └── savings-goal-calculator.component.tsx
                    └── savings-goal-calculator.styles.scss
                    └── savings-goal-calculator.styles.tsx
                └── πŸ“useful-tools
                    └── πŸ“currency-converter
                        └── currency-converter-result.component.tsx
                        └── currency-converter-result.styles.scss
                        └── currency-converter-result.styles.tsx
                        └── currency-converter.component.tsx
                        └── currency-converter.styles.scss
                        └── currency-converter.styles.tsx
                    └── πŸ“exchange-rate
                        └── exchange-rate-result.component.tsx
                        └── exchange-rate-result.styles.scss
                        └── exchange-rate-result.styles.tsx
                        └── exchange-rate.component.tsx
                        └── exchange-rate.styles.scss
                        └── exchange-rate.styles.tsx
                    └── πŸ“mortgage-calculator
                        └── mortgage-calculator-result.component.tsx
                        └── mortgage-calculator-result.styles.scss
                        └── mortgage-calculator-result.styles.tsx
                        └── mortgage-calculator.component.tsx
                        └── mortgage-calculator.styles.scss
                        └── mortgage-calculator.styles.tsx
            └── πŸ“signed-in
                └── πŸ“banking
                    └── πŸ“action-list
                        └── action-list.component.jsx
                        └── action-list.styles.jsx
                        └── action-list.styles.scss
                    └── πŸ“all-banking-summary
                        └── all-banking-summary.component.jsx
                        └── all-banking-summary.styles.jsx
                        └── all-banking-summary.styles.scss
                    └── πŸ“bank-account-form
                        └── bank-account-form.component.jsx
                        └── bank-account-form.styles.jsx
                        └── bank-account-form.styles.scss
                    └── πŸ“bank-accounts
                        └── bank-accounts.component.jsx
                        └── bank-accounts.styles.jsx
                        └── bank-accounts.styles.scss
                    └── πŸ“close-account
                        └── close-account.component.jsx
                        └── close-account.styles.jsx
                        └── close-account.styless.scss
                    └── πŸ“create-account
                        └── create-account.component.jsx
                        └── create-account.styles.jsx
                        └── create-account.styles.scss
                    └── πŸ“deposit
                        └── deposit.component.jsx
                        └── deposit.styles.jsx
                        └── deposit.styles.scss
                    └── πŸ“summary
                        └── summary.component.jsx
                        └── summary.styles.jsx
                        └── summary.styles.scss
                    └── πŸ“summary-graph
                        └── summary-graph.component.jsx
                        └── summary-graph.styles.jsx
                        └── summary-graph.styles.scss
                    └── πŸ“transaction
                        └── transaction.component.jsx
                        └── transaction.styles.jsx
                        └── transaction.styles.scss
                    └── πŸ“transactions
                        └── transactions.component.jsx
                        └── transactions.styles.jsx
                        └── transactions.styles.scss
                    └── πŸ“transfer-money
                        └── transfer-money.component.jsx
                        └── transfer-money.styles.jsx
                        └── transfer-money.styles.scss
                    └── πŸ“withdraw
                        └── withdraw.component.jsx
                        └── withdraw.styles.jsx
                        └── withdraw.styles.scss
                └── πŸ“expenses
                    └── πŸ“add-expense
                        └── add-expense.component.jsx
                        └── add-expense.styles.scss
                    └── πŸ“delete-expense
                        └── delete-expense.component.jsx
                        └── delete-expense.styles.scss
                    └── πŸ“expenses-filter
                        └── expense-filter.component.jsx
                        └── expense-filter.styles.jsx
                        └── expense-filter.styles.scss
                    └── πŸ“expenses-filter-info
                        └── expenses-filter-info.component.jsx
                        └── expenses-filter-info.styles.jsx
                    └── πŸ“expenses-form
                        └── expenses-form.component.jsx
                        └── expenses-form.styles.jsx
                        └── expenses-form.styles.scss
                    └── πŸ“expenses-graph
                        └── expenses-graph.component.jsx
                        └── expenses-graph.styles.jsx
                        └── expenses-graph.styles.scss
                    └── πŸ“expenses-summary
                        └── expenses-summary.component.jsx
                        └── expenses-summary.styles.jsx
                        └── expenses-summary.styles.scss
                    └── πŸ“expenses-table
                        └── expenses-table.component.jsx
                        └── expenses-table.styles.jsx
                        └── expenses-table.styles.scss
                    └── πŸ“schedule
                        └── πŸ“schedule-calendar
                            └── schedule-calendar.component.jsx
                            └── schedule-calendar.styles.jsx
                            └── schedule-calendar.styles.scss
                        └── πŸ“schedule-day-info
                            └── schedule-day-info.component.jsx
                            └── schedule-day-info.styles.jsx
                            └── schedule-day-info.styles.scss
                └── πŸ“exports
                    └── πŸ“email-export
                        └── email-export.component.jsx
                        └── email-export.styles.scss
                        └── email-icon.png
                    └── πŸ“export-box
                        └── export-box.component.jsx
                        └── export-box.styles.scss
                    └── πŸ“pdf-export
                        └── pdf-export.component.jsx
                        └── pdf-export.styles.scss
                        └── pdf-icon.png
                    └── πŸ“txt-export
                        └── txt-export.component.jsx
                        └── txt-export.styles.scss
                        └── txt-icon.png
                └── πŸ“finance-tracker-item
                    └── finance-tracker-item.component.jsx
                    └── finance-tracker-item.styles.scss
                └── πŸ“finance-tracker-item-info
                    └── finance-tracker-item-info.component.jsx
                    └── finance-tracker-item-info.styles.scss
                └── πŸ“finance-tracker-item-summary
                    └── finance-tracker-item-summary.component.jsx
                    └── finance-tracker-item-summary.styles.scss
                └── πŸ“finance-tracker-items
                    └── finance-tracker-items.component.jsx
                    └── finance-tracker-items.styles.scss
                └── πŸ“form-view
                    └── form-view.component.jsx
                    └── form-view.styles.scss
                └── πŸ“insurance
                    └── πŸ“add-insurance-form
                        └── add-insurance-form.component.jsx
                        └── add-insurance-form.styles.jsx
                        └── add-insurance-form.styles.scss
                    └── πŸ“filter-insurance-form
                        └── filter-insurance-form.component.jsx
                        └── filter-insurance-form.styles.jsx
                        └── filter-insurance-form.styles.scss
                    └── πŸ“insurance-filter-info
                        └── insurance-filter-info.component.jsx
                        └── insurance-filter-info.styles.jsx
                    └── πŸ“insurance-pie-chart
                        └── insurance-pie-chart.component.jsx
                        └── insurance-pie-chart.styles.jsx
                        └── insurance-pie-chart.styles.scss
                    └── πŸ“insurance-summary
                        └── insurance-summary.component.jsx
                        └── insurance-summary.styles.jsx
                        └── insurance-summary.styles.scss
                    └── πŸ“insurance-table
                        └── insurance-table.component.jsx
                        └── insurance-table.styles.jsx
                        └── insurance-table.styles.scss
                    └── πŸ“schedule
                        └── πŸ“schedule-calendar
                            └── schedule-calendar.component.jsx
                            └── schedule-calendar.styles.jsx
                            └── schedule-calendar.styles.scss
                        └── πŸ“schedule-day-info
                            └── schedule-day-info.component.jsx
                            └── schedule-day-info.styles.jsx
                            └── schedule-day-info.styles.scss
                └── πŸ“investment-savings-tracker-item
                    └── investment-savings-tracker-item.component.jsx
                    └── investment-savings-tracker-item.styles.scss
                └── πŸ“investment-savings-tracker-items
                    └── investment-savings-tracker-items.component.jsx
                    └── investment-savings-tracker-items.styles.scss
                └── πŸ“investments
                    └── πŸ“all-investments-summary
                        └── all-investments-summary.component.jsx
                        └── all-investments-summary.styles.jsx
                        └── all-investments-summary.styles.scss
                    └── πŸ“create-investment-form
                        └── create-investment-form.component.jsx
                        └── create-investment-form.styles.jsx
                        └── create-investment-form.styles.scss
                    └── πŸ“investment-form
                        └── investment-form.component.jsx
                        └── investment-form.styles.scss
                    └── πŸ“investment-info
                        └── investment-info.component.jsx
                        └── investment-info.styles.jsx
                        └── investment-info.styles.scss
                    └── πŸ“investments
                        └── investments.component.jsx
                        └── investments.styles.jsx
                    └── πŸ“summary
                        └── summary.component.jsx
                        └── summary.styles.jsx
                        └── summary.styles.scss
                    └── πŸ“summary-graph
                        └── summary-graph.component.jsx
                        └── summary-graph.styles.jsx
                        └── summary-graph.styles.scss
                    └── πŸ“summary-table-investments
                        └── summary-table-investments.component.jsx
                        └── summary-table-investments.styles.jsx
                        └── summary-table-investments.styles.scss
                    └── πŸ“update-investment-form
                        └── update-investment-form.component.jsx
                        └── update-investment-form.styles.jsx
                        └── update-investment-form.styles.scss
                └── πŸ“savings
                    └── πŸ“account-info
                        └── account-info.component.jsx
                        └── account-info.styles.jsx
                        └── account-info.styles.scss
                    └── πŸ“all-savings-summary
                        └── all-savings-summary.component.jsx
                        └── all-savings-summary.styles.jsx
                        └── all-savings-summary.styles.scss
                    └── πŸ“create-account-form
                        └── create-account-form.component.jsx
                        └── create-account-form.styles.jsx
                        └── create-account-form.styles.scss
                    └── πŸ“savings
                        └── savings.component.jsx
                        └── savings.styles.jsx
                    └── πŸ“savings-account-form
                        └── savings-account-form.component.jsx
                        └── savings-account-form.styles.scss
                    └── πŸ“summary
                        └── summary.component.jsx
                        └── summary.styles.jsx
                        └── summary.styles.scss
                    └── πŸ“summary-graph
                        └── summary-graph.component.jsx
                        └── summary-graph.styles.jsx
                        └── summary-graph.styles.scss
                    └── πŸ“summary-table-savings-account
                        └── summary-table-savings-account.component.jsx
                        └── summary-table-savings-account.styles.jsx
                        └── summary-table-savings-account.styles.scss
                    └── πŸ“update-account-form
                        └── update-account-form.component.jsx
                        └── update-account-form.styles.jsx
                        └── update-account-form.styles.scss
                └── πŸ“summary
                    └── πŸ“banking
                        └── πŸ“summary-graph
                            └── finance-summary.component.jsx
                            └── finance-summary.styles.jsx
                            └── summary-graph.component.jsx
                            └── summary-graph.styles.jsx
                        └── πŸ“summary-info
                            └── summary-info.component.jsx
                            └── summary-info.styles.jsx
                        └── banking-summary.component.jsx
                        └── banking-summary.styles.jsx
                        └── banking-summary.styles.scss
                    └── πŸ“banking copy
                        └── banking-summary.component.jsx
                        └── banking-summary.styles.scss
                    └── πŸ“expenses
                        └── πŸ“expenses-summary-graph
                            └── expenses-summary-graph.component.jsx
                            └── expenses-summary-graph.styles.jsx
                            └── expenses-summary-graph.styles.scss
                        └── πŸ“expenses-summary-info
                            └── expenses-summary-info.component.jsx
                            └── expenses-summary-info.styles.scss
                        └── πŸ“schedule
                            └── πŸ“schedule-calendar
                                └── schedule-calendar.component.jsx
                                └── schedule-calendar.styles.jsx
                                └── schedule-calendar.styles.scss
                            └── πŸ“schedule-day-info
                                └── schedule-day-info.component.jsx
                                └── schedule-day-info.styles.jsx
                                └── schedule-day-info.styles.scss
                        └── expenses.component.jsx
                        └── expenses.styles.jsx
                        └── expenses.styles.scss
                    └── πŸ“insurance
                        └── πŸ“insurance-summary-graph
                            └── insurance-summary-graph.component.jsx
                            └── insurance-summary-graph.styles.jsx
                            └── insurance-summary-graph.styles.scss
                        └── πŸ“insurance-summary-info
                            └── insurance-summary-info.component.jsx
                            └── insurance-summary-info.styles.scss
                        └── πŸ“schedule
                            └── πŸ“schedule-calendar
                                └── schedule-calendar.component.jsx
                                └── schedule-calendar.styles.jsx
                                └── schedule-calendar.styles.scss
                            └── πŸ“schedule-day-info
                                └── schedule-day-info.component.jsx
                                └── schedule-day-info.styles.jsx
                                └── schedule-day-info.styles.scss
                        └── insurance-summary.component.jsx
                        └── insurance-summary.styles.jsx
                        └── insurance-summary.styles.scss
                    └── πŸ“investments
                        └── πŸ“summary-graph
                            └── finance-summary.component.jsx
                            └── finance-summary.styles.jsx
                            └── summary-graph.component.jsx
                            └── summary-graph.styles.jsx
                        └── πŸ“summary-info
                            └── summary-info.component.jsx
                            └── summary-info.styles.jsx
                        └── investments-summary.component.jsx
                        └── investments-summary.styles.jsx
                        └── investments-summary.styles.scss
                    └── πŸ“savings
                        └── πŸ“summary-graph
                            └── finance-summary.component.jsx
                            └── finance-summary.styles.jsx
                            └── summary-graph.component.jsx
                            └── summary-graph.styles.jsx
                        └── πŸ“summary-info
                            └── summary-info.component.jsx
                            └── summary-info.styles.jsx
                        └── savings-summary.component.jsx
                        └── savings-summary.styles.jsx
                        └── savings-summary.styles.scss
            └── πŸ“signed-out
                └── πŸ“banking
                    └── πŸ“action-list
                        └── action-list.component.jsx
                        └── action-list.styles.jsx
                        └── action-list.styles.scss
                    └── πŸ“all-banking-summary
                        └── all-banking-summary.component.jsx
                        └── all-banking-summary.styles.jsx
                        └── all-banking-summary.styles.scss
                    └── πŸ“bank-account-form
                        └── bank-account-form.component.jsx
                        └── bank-account-form.styles.jsx
                        └── bank-account-form.styles.scss
                    └── πŸ“bank-accounts
                        └── bank-accounts.component.jsx
                        └── bank-accounts.styles.jsx
                        └── bank-accounts.styles.scss
                    └── πŸ“close-account
                        └── close-account.component.jsx
                        └── close-account.styles.jsx
                        └── close-account.styless.scss
                    └── πŸ“create-account
                        └── create-account.component.jsx
                        └── create-account.styles.jsx
                        └── create-account.styles.scss
                    └── πŸ“deposit
                        └── deposit.component.jsx
                        └── deposit.styles.jsx
                        └── deposit.styles.scss
                    └── πŸ“summary
                        └── summary.component.jsx
                        └── summary.styles.jsx
                        └── summary.styles.scss
                    └── πŸ“summary-graph
                        └── summary-graph.component.jsx
                        └── summary-graph.styles.jsx
                        └── summary-graph.styles.scss
                    └── πŸ“transaction
                        └── transaction.component.jsx
                        └── transaction.styles.jsx
                        └── transaction.styles.scss
                    └── πŸ“transactions
                        └── transactions.component.jsx
                        └── transactions.styles.jsx
                        └── transactions.styles.scss
                    └── πŸ“transfer-money
                        └── transfer-money.component.jsx
                        └── transfer-money.styles.jsx
                        └── transfer-money.styles.scss
                    └── πŸ“withdraw
                        └── withdraw.component.jsx
                        └── withdraw.styles.jsx
                        └── withdraw.styles.scss
                └── πŸ“expenses
                    └── πŸ“add-expense
                        └── add-expense.component.jsx
                        └── add-expense.styles.scss
                    └── πŸ“delete-expense
                        └── delete-expense.component.jsx
                        └── delete-expense.styles.scss
                    └── πŸ“expenses-filter
                        └── expense-filter.component.jsx
                        └── expense-filter.styles.jsx
                        └── expense-filter.styles.scss
                    └── πŸ“expenses-filter-info
                        └── expenses-filter-info.component.jsx
                        └── expenses-filter-info.styles.jsx
                    └── πŸ“expenses-form
                        └── expenses-form.component.jsx
                        └── expenses-form.styles.jsx
                        └── expenses-form.styles.scss
                    └── πŸ“expenses-graph
                        └── expenses-graph.component.jsx
                        └── expenses-graph.styles.jsx
                        └── expenses-graph.styles.scss
                    └── πŸ“expenses-summary
                        └── expenses-summary.component.jsx
                        └── expenses-summary.styles.jsx
                        └── expenses-summary.styles.scss
                    └── πŸ“expenses-table
                        └── expenses-table.component.jsx
                        └── expenses-table.styles.jsx
                        └── expenses-table.styles.scss
                    └── πŸ“schedule
                        └── πŸ“schedule-calendar
                            └── schedule-calendar.component.jsx
                            └── schedule-calendar.styles.jsx
                            └── schedule-calendar.styles.scss
                        └── πŸ“schedule-day-info
                            └── schedule-day-info.component.jsx
                            └── schedule-day-info.styles.jsx
                            └── schedule-day-info.styles.scss
                └── πŸ“finance-tracker-item
                    └── finance-tracker-item.component.jsx
                    └── finance-tracker-item.styles.scss
                └── πŸ“finance-tracker-item-info
                    └── finance-tracker-item-info.component.jsx
                    └── finance-tracker-item-info.styles.scss
                └── πŸ“finance-tracker-item-summary
                    └── finance-tracker-item-summary.component.jsx
                    └── finance-tracker-item-summary.styles.scss
                └── πŸ“finance-tracker-items
                    └── finance-tracker-items.component.jsx
                    └── finance-tracker-items.styles.scss
                └── πŸ“form-view
                    └── form-view.component.jsx
                    └── form-view.styles.scss
                └── πŸ“insurance
                    └── πŸ“add-insurance-form
                        └── add-insurance-form.component.jsx
                        └── add-insurance-form.styles.jsx
                        └── add-insurance-form.styles.scss
                    └── πŸ“filter-insurance-form
                        └── filter-insurance-form.component.jsx
                        └── filter-insurance-form.styles.jsx
                        └── filter-insurance-form.styles.scss
                    └── πŸ“insurance-filter-info
                        └── insurance-filter-info.component.jsx
                        └── insurance-filter-info.styles.jsx
                    └── πŸ“insurance-pie-chart
                        └── insurance-pie-chart.component.jsx
                        └── insurance-pie-chart.styles.jsx
                        └── insurance-pie-chart.styles.scss
                    └── πŸ“insurance-summary
                        └── insurance-summary.component.jsx
                        └── insurance-summary.styles.jsx
                        └── insurance-summary.styles.scss
                    └── πŸ“insurance-table
                        └── insurance-table.component.jsx
                        └── insurance-table.styles.jsx
                        └── insurance-table.styles.scss
                    └── πŸ“schedule
                        └── πŸ“schedule-calendar
                            └── schedule-calendar.component.jsx
                            └── schedule-calendar.styles.jsx
                            └── schedule-calendar.styles.scss
                        └── πŸ“schedule-day-info
                            └── schedule-day-info.component.jsx
                            └── schedule-day-info.styles.jsx
                            └── schedule-day-info.styles.scss
                └── πŸ“investment-savings-tracker-item
                    └── investment-savings-tracker-item.component.jsx
                    └── investment-savings-tracker-item.styles.scss
                └── πŸ“investment-savings-tracker-items
                    └── investment-savings-tracker-items.component.jsx
                    └── investment-savings-tracker-items.styles.scss
                └── πŸ“investments
                    └── πŸ“all-investments-summary
                        └── all-investments-summary.component.jsx
                        └── all-investments-summary.styles.jsx
                        └── all-investments-summary.styles.scss
                    └── πŸ“create-investment-form
                        └── create-investment-form.component.jsx
                        └── create-investment-form.styles.jsx
                        └── create-investment-form.styles.scss
                    └── πŸ“investment-form
                        └── investment-form.component.jsx
                        └── investment-form.styles.scss
                    └── πŸ“investment-info
                        └── investment-info.component.jsx
                        └── investment-info.styles.jsx
                        └── investment-info.styles.scss
                    └── πŸ“investments
                        └── investments.component.jsx
                        └── investments.styles.jsx
                    └── πŸ“summary
                        └── summary.component.jsx
                        └── summary.styles.jsx
                        └── summary.styles.scss
                    └── πŸ“summary-graph
                        └── summary-graph.component.jsx
                        └── summary-graph.styles.jsx
                        └── summary-graph.styles.scss
                    └── πŸ“summary-table-investments
                        └── summary-table-investments.component.jsx
                        └── summary-table-investments.styles.jsx
                        └── summary-table-investments.styles.scss
                    └── πŸ“update-investment-form
                        └── update-investment-form.component.jsx
                        └── update-investment-form.styles.jsx
                        └── update-investment-form.styles.scss
                └── πŸ“savings
                    └── πŸ“account-info
                        └── account-info.component.jsx
                        └── account-info.styles.jsx
                        └── account-info.styles.scss
                    └── πŸ“all-savings-summary
                        └── all-savings-summary.component.jsx
                        └── all-savings-summary.styles.jsx
                        └── all-savings-summary.styles.scss
                    └── πŸ“create-account-form
                        └── create-account-form.component.jsx
                        └── create-account-form.styles.jsx
                        └── create-account-form.styles.scss
                    └── πŸ“savings
                        └── savings.component.jsx
                        └── savings.styles.jsx
                    └── πŸ“savings-account-form
                        └── savings-account-form.component.jsx
                        └── savings-account-form.styles.scss
                    └── πŸ“summary
                        └── summary.component.jsx
                        └── summary.styles.jsx
                        └── summary.styles.scss
                    └── πŸ“summary-graph
                        └── summary-graph.component.jsx
                        └── summary-graph.styles.jsx
                        └── summary-graph.styles.scss
                    └── πŸ“summary-table-savings-account
                        └── summary-table-savings-account.component.jsx
                        └── summary-table-savings-account.styles.jsx
                        └── summary-table-savings-account.styles.scss
                    └── πŸ“update-account-form
                        └── update-account-form.component.jsx
                        └── update-account-form.styles.jsx
                        └── update-account-form.styles.scss
                └── πŸ“sign-in-form
                    └── sign-in-form.component.jsx
                    └── sign-in-form.styles.jsx
                    └── sign-in-form.styles.scss
                └── πŸ“sign-up-form
                    └── sign-up-form.component.jsx
                    └── sign-up-form.styles.jsx
                    └── sign-up-form.styles.scss
                └── πŸ“summary
                    └── πŸ“banking
                        └── πŸ“summary-graph
                            └── finance-summary.component.jsx
                            └── finance-summary.styles.jsx
                            └── summary-graph.component.jsx
                            └── summary-graph.styles.jsx
                        └── πŸ“summary-info
                            └── summary-info.component.jsx
                            └── summary-info.styles.jsx
                        └── banking-summary.component.jsx
                        └── banking-summary.styles.jsx
                        └── banking-summary.styles.scss
                    └── πŸ“expenses
                        └── πŸ“expenses-summary-graph
                            └── expenses-summary-graph.component.jsx
                            └── expenses-summary-graph.styles.jsx
                            └── expenses-summary-graph.styles.scss
                        └── πŸ“expenses-summary-info
                            └── expenses-summary-info.component.jsx
                            └── expenses-summary-info.styles.scss
                        └── πŸ“schedule
                            └── πŸ“schedule-calendar
                                └── schedule-calendar.component.jsx
                                └── schedule-calendar.styles.jsx
                                └── schedule-calendar.styles.scss
                            └── πŸ“schedule-day-info
                                └── schedule-day-info.component.jsx
                                └── schedule-day-info.styles.jsx
                                └── schedule-day-info.styles.scss
                        └── expenses.component.jsx
                        └── expenses.styles.jsx
                        └── expenses.styles.scss
                    └── πŸ“insurance
                        └── πŸ“insurance-summary-graph
                            └── insurance-summary-graph.component.jsx
                            └── insurance-summary-graph.styles.jsx
                            └── insurance-summary-graph.styles.scss
                        └── πŸ“insurance-summary-info
                            └── insurance-summary-info.component.jsx
                            └── insurance-summary-info.styles.scss
                        └── πŸ“schedule
                            └── πŸ“schedule-calendar
                                └── schedule-calendar.component.jsx
                                └── schedule-calendar.styles.jsx
                                └── schedule-calendar.styles.scss
                            └── πŸ“schedule-day-info
                                └── schedule-day-info.component.jsx
                                └── schedule-day-info.styles.jsx
                                └── schedule-day-info.styles.scss
                        └── insurance-summary.component.jsx
                        └── insurance-summary.styles.jsx
                        └── insurance-summary.styles.scss
                    └── πŸ“investments
                        └── πŸ“summary-graph
                            └── finance-summary.component.jsx
                            └── finance-summary.styles.jsx
                            └── summary-graph.component.jsx
                            └── summary-graph.styles.jsx
                        └── πŸ“summary-info
                            └── summary-info.component.jsx
                            └── summary-info.styles.jsx
                        └── investments-summary.component.jsx
                        └── investments-summary.styles.jsx
                        └── investments-summary.styles.scss
                    └── πŸ“savings
                        └── πŸ“summary-graph
                            └── finance-summary.component.jsx
                            └── finance-summary.styles.jsx
                            └── summary-graph.component.jsx
                            └── summary-graph.styles.jsx
                        └── πŸ“summary-info
                            └── summary-info.component.jsx
                            └── summary-info.styles.jsx
                        └── savings-summary.component.jsx
                        └── savings-summary.styles.jsx
                        └── savings-summary.styles.scss
        └── πŸ“contexts
            └── πŸ“shared
                └── πŸ“chatbot
                    └── chatbot.context.tsx
                    └── chatbot.types.ts
                └── πŸ“market-data
                    └── market-data.context.tsx
                    └── market-data.types.ts
                └── πŸ“savings-goal-calculator
                    └── savings-goal-calculator.context.tsx
                    └── savings-goal-calculator.types.ts
                └── πŸ“useful-tools
                    └── useful-tools.context.tsx
                    └── useful-tools.types.ts
                └── πŸ“user
                    └── user.context.tsx
                    └── user.types.ts
            └── πŸ“signed-in
                └── πŸ“banking
                    └── banking.context.tsx
                    └── banking.types.ts
                └── πŸ“dashboard
                    └── dashboard.context.tsx
                    └── dashboard.types.ts
                └── πŸ“expenses
                    └── expenses.context.tsx
                    └── expenses.types.ts
                └── πŸ“exports
                    └── exports.context.tsx
                    └── exports.types.ts
                └── πŸ“insurance
                    └── insurance.context.tsx
                    └── insurance.types.ts
                └── πŸ“investments
                    └── investments.context.tsx
                    └── investments.types.ts
                └── πŸ“savings
                    └── savings.context.tsx
                    └── savings.types.ts
            └── πŸ“signed-out
                └── πŸ“banking
                    └── banking.context.tsx
                    └── banking.types.ts
                └── πŸ“dashboard
                    └── dashboard.context.tsx
                    └── dashboard.types.ts
                └── πŸ“expenses
                    └── expenses.context.tsx
                    └── expenses.types.ts
                └── πŸ“insurance
                    └── insurance.context.tsx
                    └── insurance.types.ts
                └── πŸ“investments
                    └── investments.context.tsx
                    └── investments.types.ts
                └── πŸ“savings
                    └── savings.context.tsx
                    └── savings.types.ts
        └── πŸ“pages
            └── πŸ“shared
                └── πŸ“chatbot
                    └── chatbot.component.tsx
                    └── chatbot.styles.scss
                    └── chatbot.styles.tsx
                └── πŸ“home
                    └── home.component.tsx
                    └── home.styles.scss
                    └── home.styles.tsx
                └── πŸ“market-view
                    └── market-view.component.tsx
                    └── market-view.styles.scss
                    └── market-view.styles.tsx
                └── πŸ“useful-tools
                    └── useful-tools.component.tsx
                    └── useful-tools.styles.scss
                    └── useful-tools.styles.tsx
            └── πŸ“signed-in
                └── πŸ“banking
                    └── banking.component.tsx
                    └── banking.styles.scss
                    └── banking.styles.tsx
                └── πŸ“dashboard
                    └── summary.component.tsx
                    └── summary.styles.scss
                    └── summary.styles.tsx
                └── πŸ“expenses
                    └── expenses.component.tsx
                    └── expenses.styles.scss
                    └── expenses.styles.tsx
                └── πŸ“exports
                └── πŸ“insurance
                    └── insurance.component.tsx
                    └── insurance.styles.scss
                    └── insurance.styles.tsx
                └── πŸ“investments
                    └── investments.component.tsx
                    └── investments.styles.scss
                    └── investments.styles.tsx
                └── πŸ“savings
                    └── savings.component.tsx
                    └── savings.styles.scss
                    └── savings.styles.tsx
            └── πŸ“signed-out
                └── πŸ“banking
                    └── banking.component.tsx
                    └── banking.styles.scss
                    └── banking.styles.tsx
                └── πŸ“dashboard
                    └── summary.component.tsx
                    └── summary.styles.scss
                    └── summary.styles.tsx
                └── πŸ“expenses
                    └── expenses.component.tsx
                    └── expenses.styles.scss
                    └── expenses.styles.tsx
                └── πŸ“insurance
                    └── insurance.component.tsx
                    └── insurance.styles.scss
                    └── insurance.styles.tsx
                └── πŸ“investments
                    └── investments.component.tsx
                    └── investments.styles.scss
                    └── investments.styles.tsx
                └── πŸ“savings
                    └── savings.component.tsx
                    └── savings.styles.scss
                    └── savings.styles.tsx
        └── πŸ“routes
            └── πŸ“shared
                └── πŸ“home
                    └── home.component.tsx
                    └── home.styles.scss
                └── πŸ“navigation
                    └── navigation.component.tsx
                    └── navigation.styles.scss
                    └── navigation.styles.tsx
                └── πŸ“useful-tools
                    └── useful-tools.component.tsx
                    └── useful-tools.styles.scss
            └── πŸ“signed-in
                └── πŸ“banking
                    └── banking.component.tsx
                    └── banking.styles.scss
                └── πŸ“dashboard
                    └── dashboard.component.tsx
                    └── dashboard.styles.scss
                └── πŸ“expenses
                    └── expenses.component.tsx
                    └── expenses.styles.scss
                └── πŸ“exports
                    └── exports.component.tsx
                    └── exports.styles.scss
                └── πŸ“insurance
                    └── insurance.component.tsx
                    └── insurance.styles.scss
                └── πŸ“investments
                    └── investments.components.tsx
                    └── investments.styles.scss
                └── πŸ“savings
                    └── savings.components.tsx
                    └── savings.styles.scss
            └── πŸ“signed-out
                └── πŸ“authentication
                    └── authentication.component.tsx
                    └── authentication.styles.scss
                └── πŸ“banking
                    └── banking.component.tsx
                    └── banking.styles.scss
                └── πŸ“dashboard
                    └── dashboard.component.tsx
                    └── dashboard.styles.scss
                └── πŸ“expenses
                    └── expenses.component.tsx
                    └── expenses.styles.scss
                └── πŸ“insurance
                    └── insurance.component.tsx
                    └── insurance.styles.scss
                └── πŸ“investments
                    └── investments.components.tsx
                    └── investments.styles.scss
                └── πŸ“savings
                    └── savings.components.tsx
                    └── savings.styles.scss
        └── πŸ“store
            └── πŸ“middleware
                └── logger.ts
            └── πŸ“shared
                └── πŸ“chatbot
                └── πŸ“market-data
                └── πŸ“savings-goal-calculator
                    └── savings-goal-calculator.action.ts
                    └── savings-goal-calculator.reducer.toolkit.ts
                    └── savings-goal-calculator.reducer.ts
                    └── savings-goal-calculator.selector.ts
                    └── savings-goal-calculator.types.ts
                └── πŸ“useful-tools
                └── πŸ“user
                    └── user.action.ts
                    └── user.reducer.toolkit.ts
                    └── user.reducer.ts
                    └── user.saga.ts
                    └── user.selector.ts
                    └── user.types.ts
            └── πŸ“signed-in
                └── πŸ“banking
                    └── banking.action.ts
                    └── banking.reducer.ts
                    └── banking.saga.ts
                    └── banking.selector.ts
                    └── banking.types.ts
                └── πŸ“dashboard
                └── πŸ“expenses
                └── πŸ“exports
                └── πŸ“insurance
                └── πŸ“investments
                β”œβ”€β”€ savings
            └── πŸ“signed-out
                └── πŸ“banking
                    └── banking.action.ts
                    └── banking.reducer.toolkit.ts
                    └── banking.reducer.ts
                    └── banking.selector.ts
                    └── banking.types.ts
                └── πŸ“dashboard
                    └── dashboard.action.ts
                    └── dashboard.reducer.toolkit.ts
                    └── dashboard.reducer.ts
                    └── dashboard.selector.ts
                    └── dashboard.types.ts
                └── πŸ“expenses
                    └── expenses.action.ts
                    └── expenses.reducer.toolkit.ts
                    └── expenses.reducer.ts
                    └── expenses.selector.ts
                    └── expenses.types.ts
                └── πŸ“insurance
                    └── insurance.action.ts
                    └── insurance.reducer.ts
                    └── insurance.selector.ts
                    └── insurance.types.ts
                └── πŸ“investments
                    └── investments.action.ts
                    └── investments.reducer.toolkit.ts
                    └── investments.reducer.ts
                    └── investments.selector.ts
                    └── investments.types.ts
                └── πŸ“savings
                    └── savings.action.ts
                    └── savings.reducer.toolkit.ts
                    └── savings.reducer.ts
                    └── savings.selector.ts
                    └── savings.types.ts
            └── root-reducer.toolkit.ts
            └── root-reducer.ts
            └── root-saga.ts
            └── store.toolkit.ts
            └── store.ts
        └── πŸ“utils
            └── πŸ“alerts
                └── insurance.alerts.ts
            └── πŸ“api-requests
                └── banking.requests.ts
                └── chatbot.requests.ts
                └── expenses.requests.ts
                └── exports.requests.ts
                └── insurance.requests.ts
                └── investments.requests.ts
                └── market-data.requests.ts
                └── savings.requests.ts
                └── summary.requests.ts
                └── useful-tools.requests.ts
            └── πŸ“calculations
                └── banking.calculations.ts
                └── expenses.calculations.ts
                └── investments-test.calculations.ts
                └── investments.calculations.ts
                └── savings.calculations.ts
                └── useful-tools.calculations.ts
            └── πŸ“constants
                └── banking.constants.ts
                └── chatbot.constants.ts
                └── expenses.constants.ts
                └── exports.constants.ts
                └── insurance.constants.ts
                └── investments.constants.ts
                └── market-data.constants.ts
                └── regex.constants.ts
                └── savings.constants.ts
                └── shared.constants.ts
                └── useful-tools.constants.ts
            └── πŸ“errors
                └── banking.errors.ts
                └── chatbot.errors.ts
                └── expenses.error.ts
                └── exports.errors.ts
                └── insurance.errors.ts
                └── investments.errors.ts
                └── market-data.errors.ts
                └── savings.errors.ts
                └── summary.errors.ts
                └── useful-tools.errors.ts
                └── user.errors.ts
            └── πŸ“firebase
                └── firebase.utils.ts
            └── πŸ“graphql
                └── banking.graphql.ts
                └── expenses.graphql.ts
                └── insurance.graphql.ts
                └── investments.graphql.ts
                └── savings.graphql.ts
            └── πŸ“helpers
                └── helpers.utils.ts
            └── πŸ“reducer
                └── reducer.utils.ts
            └── πŸ“validations
                └── banking.validation.ts
                └── chatbot.validation.ts
                └── expenses.validation.ts
                └── insurance.validation.ts
                └── investments.validation.ts
                └── market-data.validation.ts
                └── savings.validation.ts
                └── useful-tools.validation.ts
        └── App.test.js
        └── App.tsx
        └── custom.d.ts
        └── index.scss
        └── index.tsx
        └── logo.svg
        └── reportWebVitals.js
        └── setupTests.js
    └── .dockerignore
    └── .env
    └── .gitignore
    └── Dockerfile
    └── package-lock.json
    └── package.json
    └── README.md
    └── tsconfig.json
image

Figure 1: High level view

The application consists of the following main components:

  1. Client: React frontend web application which sends requests to the Finance Planner and Finance Predict APIs. The frontend is developed using JavaScript with a TypeScript shift currently in place. State is managed by Redux and the React context API. UI is developed using Material UI, styled components, Tailwind and Bootstrap. It is also deployed with Docker. The client supports requests for the following:
  • Chatbot responses
  • Expenses
  • Banking
  • Historic market data
  • Finance prediction
  • Investments
  • Savings
  • Insurance
  • Miscellaneous financial tools
  • Authentication
  1. Authentication: Authentication is handled using Firebase Authentication and Functions.
  2. Finance Planner API: API developed using Express and GraphQL, which services majority of requests from the client, excluding predictions. The API requests MongoDB clusters, Redis, Cloud Firestore, AWS RDS databases. Additionally, it requests the ml-job-scheduler to trigger a job to generate finance predictions. It also uses the OpenAI API, polygon.io and other external APIs.
  3. Finance Predict API: Finance prediction API developed using django and deployed to AWS EC2. API serves requests for finance prediction, market data queries and chatbot queries.
  4. Services: The following services are used:
  • OpenAI: Services chatbot requests
  • polygon.io: Provides market data for requests from the Finance Planner API
  • External APIs: Includes APIs for financial calculations, tools, country specific financial data, etc.
  1. Databases: The following databases are used:
  • MongoDB:
    • Expenses
    • Banking
    • Finance prediction
    • Investments
    • Savings
    • Insurance
  • Redis:
    • Cached data
  • Cloud Firestore:
    • Authentication
  • AWS RDS:
    • ML training data
  1. Machine learning: ML models for BTC and stock predictions developed using TensorFlow / PyTorch. ml-job-scheduler handles the automated job runs from preprocessing, training, predictions, postprocessing, etc. The logs of the job runs are stored in S3 and the data is stored in MongoDB.
  2. Data engineering: Performs manual data migration using an external ETL / ELT API developed in Go, etl-elt-api
  3. Security: AWS security services (AWS Inspector and GuardDuty) which monitors the security of APIs. Later, data and logs from the services are queried and viewed using an external security tool.
  4. Monitoring: Monitoring service which collects data and logs from APIs using CloudWatch, then stores them in S3 to be viewed as a dashboard via an external monitoring tool.
  5. Notifications: Receives various data and logs in S3 buckets and later sends emails (on issues or failures) using SQS and Lambda.

Setting up the development environment:

  1. Cloning the repository: You would first need to clone this repository on the host you want to set up your development environment:
    git clone https://github.com/tahmid-saj/fin-tracker.git
    
  2. Installing dependencies: Install the required NPM packages in package.json:
    npm install
    
  3. Environment variables: The required environment variables are used: ```env

    firebase

    REACT_APP_FIREBASE_API_KEY="" REACT_APP_FIREBASE_AUTH_DOMAIN="" REACT_APP_FIREBASE_PROJECT_ID="" REACT_APP_FIREBASE_STORAGE_BUCKET="" REACT_APP_FIREBASE_MESSAGING_SENTER_ID="" REACT_APP_FIREBASE_APP_ID=""

There are several other environment variables for the APIs and services used in the client

4. __APIs__: Client requests go to two APIs:
* __Finance Planner API__
* __Finance Predict API__
5. __Services__: API keys are used from the following services in the __Finance Planner API__:
* OpenAI: Services chatbot requests
* polygon.io: Provides market data for requests from the __Finance Planner API__
* External APIs: There are several other external APIs providing financial calculations, tools, country specific financial data, etc.
6. __Databases__: A MongoDB cluster and collections are created, and a connection is established with the __Finance Planner and Finance Predict APIs__. A Redis cluster is also created for storing cached data. Additionally Cloud Firestore and AWS RDS are both initialized for storing authentication and ML model training data respectively.
7. __Data engineering__: The set up for the development environment for the data engineering tool can be found [here](https://github.com/tahmid-saj/etl-elt-api).
8. __Machine learning__: The set up for the development environment for the ML job scheduler can be found [here](https://github.com/tahmid-saj/ml-job-scheduler).
9. __AWS__: Setting up the AWS services is an optional step as this is on a development environment. However, the same services could be used to create the tools mentioned in the high level view.
10. __Running the client__: The client can be run using:

npm start


Top categories

Loading Svelte Themes