RCalculator is a dynamic financial tracking application designed to help users manage and monitor their progress towards long-term financial goals, particularly retirement. It moves beyond simple calculations by providing personalized insights, tracking actual performance against planned targets, and offering a clear view of your financial journey towards achieving your desired future.
- Personalized Financial Profile: Users complete a comprehensive questionnaire to build a financial profile, enabling tailored guidance and projections.
- Comprehensive Asset Management: Add, track, and manage various types of assets including savings, stocks, real estate, and other investments for a holistic view of net worth.
- Strategic Goal Planning: Define long-term financial objectives (e.g., retirement, home purchase, education) and create detailed plans with actionable steps.
- Clear Financial Projections: Visualize potential investment growth and assess the feasibility of financial plans through easy-to-understand projections and charts.
- User-Friendly Dashboard: An intuitive dashboard provides an at-a-glance overview of financial health, asset allocation, and progress towards goals.
- Secure User Authentication: Robust authentication system to protect sensitive financial data, including secure registration and login processes.
- Dynamic Currency Conversion: (If applicable) Utilizes geolocation to provide relevant currency information and conversion rates for international users or assets.
- Frontend: EJS (Embedded JavaScript templates), Tailwind CSS, Vanilla JavaScript
- Backend: Node.js, Express.js
- Database: MongoDB
- Authentication: express-session for session management, bcrypt for password hashing.
- Data Validation: Joi for schema validation.
- APIs: Google Gemini API for generating financial advice. Geolocation API for currency conversion.
-
You'll need to setup an instance of MongoDB. You can use the cloud platform, MongoDB Atlas, or create your own instance locally.
i. Create your MongoDB Altas instance.
ii. Create your local MongoDB server instance.After this, you'll need to get your MongoURI from your database instance, as well as your database name for later configuration in the
.envfile.
-
Clone the repository:
git clone https://github.com/JoaquinPar/2800-202510-BBY14.git cd 2800-202510-BBY14 -
Install dependencies:
npm install
This will install Express, express-session, EJS, dotenv, and any other required packages listed in
package.json. -
Create and configure the environment file:
- Create a file named
.envin the root directory of the project. - Add the necessary environment variables to this file.
- Create a file named
-
Run the application:
node app.js
The application should now be running, typically on
http://localhost:3000(or the port specified in your.envfile).
retirementCalculator/
├── src/
│ ├── auth/ # Authentication logic (e.g., passport setup, strategies)
│ ├── database/ # MongoDB connection, schemas, models
│ ├── public/ # Static assets
│ │ ├── images/ # Site images and icons
│ │ ├── scripts/ # Client-side JavaScript files
│ │ └── svgs/ # SVG icons
│ ├── router/ # Express route definitions
│ ├── util/ # Utility functions (e.g., calculations, helpers)
│ └── views/ # EJS templates
│ └── partials/ # Reusable EJS partials (headers, footers, nav)
│
├── .env.example # Example environment variables file
├── .gitignore # Specifies intentionally untracked files that Git should ignore
├── app.js # Main application entry point
├── CONTRIBUTING.md # Guidelines for contributing to the project
├── LICENSE # Project license information
├── package-lock.json # Records exact versions of dependencies
├── package.json # Project metadata and dependencies
└── README.md # This file
- Braeden Sowinski - BCIT CST Student with a passion for back-end development.
- Joaquin Paredes - BCIT CST Student with the aspiration of becoming a game developer in the future.
- Nicolas Agostini - BCIT CST Student with a passion for technology and AI.
- Mitchell Schaeffer - BCIT CST Student with a passion for technology.
- Generalized Advice: The application provides financial guidance based on user input and common models; it does not substitute professional financial advisory services.
- Market Volatility: Projections are based on assumed rates of return and do not account for all potential market fluctuations or unforeseen economic events.
- Manual Data Entry: Asset information and updates currently require manual input.
- Single User Focus: Primarily designed for individual financial planning.
- Third-Party API Integrations: Connect with financial institutions (e.g., Plaid) for automated asset tracking and transaction importing.
- Advanced Reporting: Implement more detailed financial reports, customizable charts, and data export options (e.g., PDF, CSV).
- Enhanced Security Features: Implement Two-Factor Authentication (2FA) and advanced security audits.
- Educational Resources: Integrate a section with articles, tips, and resources on financial literacy and planning.