Take complete control of your finances with powerful tools for debt management, budgeting, savings tracking, and financial planning
Bradley's Finance Hub is a modern Progressive Web App (PWA) designed to help you manage every aspect of your financial life. Built with vanilla JavaScript and Firebase, the app provides comprehensive tools for debt management, budgeting, savings tracking, tax estimation, and financial optimization using velocity banking and zero-based budgeting principles.
π Privacy-First: Your financial data is stored securely in Firebase Firestore with authentication and encrypted connections.
π± Mobile-Optimized: Fully responsive design works seamlessly on desktop, tablet, and mobile devices.
β‘ Performance: Built for speed with optimized code, lazy loading, and efficient data caching.
- Track multiple debts with detailed information
- Monitor balances, interest rates, and minimum payments
- Calculate total debt and average interest rates
- Payment due date tracking
- Full CRUD operations (Create, Read, Update, Delete)
- Monthly budget creation and tracking by category
- Track budgeted vs. spent amounts
- Visual progress bars with percentage tracking
- Month-by-month budget history
- Budget alerts when approaching limits
- Set multiple savings goals with target amounts
- Track progress with visual progress bars
- Priority-based goal management (Low, Medium, High)
- Target date planning
- Current vs. target amount tracking
- Optimize debt payoff using velocity banking principles
- Compare traditional vs. velocity banking strategies
- Calculate interest savings and time savings
- Line of credit integration calculations
- Track total assets and liabilities
- Calculate and monitor net worth over time
- Visual breakdown of assets vs. liabilities
- Integration with debt data for accurate tracking
- Estimate credit score based on financial factors
- Factor analysis: Payment History (35%), Credit Utilization (30%), Credit Age (15%), Credit Mix (10%), New Credit (10%)
- Visual score display with color-coded ranges
- Detailed score breakdown by factor
- Calculate quarterly tax payments for self-employed individuals
- Self-employment tax calculations (15.3%)
- Federal income tax estimation
- Quarterly payment breakdown (Q1-Q4)
- Support for different filing statuses
- Financial alerts and notifications
- Budget warnings and overspend alerts
- Savings goal milestones
- High-interest debt warnings
- Mark as read / mark all as read functionality
- Complete financial activity history
- Chronological timeline of all financial events
- Aggregates data from debts, budgets, goals, and net worth
- Activity icons and descriptions
- Date/time formatting
- 6 pre-built savings challenges:
- 52-Week Challenge: Save $1,378 over a year
- 365-Day Penny Challenge: Save $667.95 over a year
- 100 Envelope Challenge: Save $5,050 over 2 years
- No-Spend Month Challenge: Break spending habits
- Biweekly $100 Challenge: Save $2,600 annually
- Spare Change Challenge: Save all change daily
- Challenge details and descriptions
- Direct integration with Savings Goal Tracker
- Frontend: Vanilla JavaScript (ES6+), HTML5, CSS3
- Backend: Firebase (Authentication, Firestore, Hosting)
- Progressive Web App: Service Worker, Web App Manifest
- Build Tools: None (direct deployment from source)
- Hosting: Firebase Hosting
- Database: Cloud Firestore
- Authentication: Firebase Authentication
- Browser: Modern web browser (Chrome 90+, Firefox 88+, Safari 14+, Edge 90+)
- Firebase Account: For hosting and backend services
- Node.js (Optional): For Firebase CLI tools
- Firebase CLI: For deployment (install via
npm install -g firebase-tools)
-
Install Firebase CLI (if not already installed):
npm install -g firebase-tools
-
Login to Firebase:
firebase login
-
Clone the repository:
git clone https://github.com/ronb12/Bradleys-Financial-Hub.git cd Bradleys-Financial-Hub -
Initialize Firebase (if starting fresh):
firebase init
- Select: Hosting, Firestore
- Use existing project:
mobile-debt-tracker
-
Firebase Configuration:
- The Firebase configuration is already set in
config/firebase-config.js - For a new project, update the config with your Firebase project credentials
- The Firebase configuration is already set in
-
App Configuration:
- Review
config/config.jsfor app settings - Configure session timeout, security settings, and feature flags
- Review
-
Firestore Security Rules:
- Security rules are defined in
firestore.rules - Rules ensure users can only access their own data
- Deploy rules:
firebase deploy --only firestore:rules
- Security rules are defined in
-
Firestore Indexes:
- Indexes are defined in
firestore.indexes.json - Required for queries using
where()+orderBy() - Deploy indexes:
firebase deploy --only firestore:indexes
- Indexes are defined in
Bradleys-Financial-Hub/
βββ config/ # Configuration files
β βββ config.js # App configuration and settings
β βββ firebase-config.js # Firebase initialization
βββ scripts/ # Core application scripts
β βββ auth.js # Authentication logic and session management
β βββ service-worker.js # Service worker for PWA and offline support
βββ dist/ # Build/deployment directory (deployed to Firebase)
β βββ index.html # Main dashboard page
β βββ src/pages/ # All application pages
β β βββ debt/ # Debt Tracker
β β βββ other/ # Budget, Net Worth, Notifications, Activity Feed
β β βββ savings/ # Savings Goals, Challenge Library
β β βββ calculators/ # Velocity Calculator, Credit Score, 1099 Tax
β βββ utils/ # Utility scripts
β β βββ dataService.js # Firestore data operations (CRUD)
β β βββ authHelper.js # Authentication helpers
β β βββ themeManager.js # Dark/light theme management
β β βββ ... # Other utility scripts
β βββ config.js # Config (copied to dist)
β βββ auth.js # Auth (copied to dist)
β βββ firebase-config.js # Firebase config (copied to dist)
βββ src/ # Source code (development)
β βββ components/ # Reusable components
β βββ pages/ # Page components
βββ docs/ # Documentation
β βββ markdown/ # Technical documentation
β βββ logs/ # Test logs and reports
βββ firebase.json # Firebase configuration (hosting, firestore)
βββ firestore.rules # Firestore security rules
βββ firestore.indexes.json # Firestore composite indexes
βββ .firebaserc # Firebase project configuration
βββ README.md # This file
- Authentication: Firebase Authentication handles user login/logout
- Data Storage: Cloud Firestore stores all user financial data
- Data Access:
dataService.jsprovides CRUD operations for all collections - UI Updates: Vanilla JavaScript manipulates DOM based on data changes
- Real-time Updates: Firestore listeners (optional) for real-time data sync
- users: User profile data
- debts: Debt records with userId, balance, interest rate, payments
- budgets: Budget records with userId, category, amounts, month
- savingsGoals: Savings goals with userId, target/current amounts, dates
- netWorth: Net worth snapshots with userId, assets, liabilities
- activities: Activity log entries with userId, type, description, amounts
- Firestore Rules: User-based access control (users can only access their own data)
- Authentication: Required for all data operations
- Data Isolation: All queries filtered by
userIdfield - Encryption: Firebase handles encryption in transit and at rest
firebase deployDeploy Hosting Only:
firebase deploy --only hostingDeploy Firestore Rules Only:
firebase deploy --only firestore:rulesDeploy Firestore Indexes Only:
firebase deploy --only firestore:indexes- Build (if needed): Ensure
dist/folder contains latest files - Deploy Hosting:
firebase deploy --only hosting - Deploy Rules:
firebase deploy --only firestore:rules - Deploy Indexes:
firebase deploy --only firestore:indexes
Note: The dist/ folder is not tracked in git (in .gitignore). Deploy directly from local dist/ folder.
-
Serve locally (for testing):
cd dist python3 -m http.server 8000Then visit:
http://localhost:8000 -
Use Firebase Emulator (advanced):
firebase emulators:start
- Separation of Concerns: Utilities, services, and pages are separated
- Modular Design: Each page is self-contained HTML file
- Shared Utilities: Common functionality in
/utilsdirectory - Data Layer: All Firestore operations centralized in
dataService.js
All data operations go through window.DataService:
// Debts
await window.DataService.getDebts()
await window.DataService.addDebt(debtData)
await window.DataService.updateDebt(debtId, debtData)
await window.DataService.deleteDebt(debtId)
// Budgets
await window.DataService.getBudgets()
await window.DataService.addBudget(budgetData)
await window.DataService.updateBudget(budgetId, budgetData)
await window.DataService.deleteBudget(budgetId)
// Savings Goals
await window.DataService.getSavingsGoals()
await window.DataService.addSavingsGoal(goalData)
await window.DataService.updateSavingsGoal(goalId, goalData)
await window.DataService.deleteSavingsGoal(goalId)
// Net Worth
await window.DataService.getNetWorth()
await window.DataService.saveNetWorth(netWorthData)
// Activities
await window.DataService.getActivities(limitCount)
await window.DataService.addActivity(activityData)
// Helpers
window.DataService.formatDate(timestamp)
window.DataService.formatCurrency(amount)// Check authentication
await window.waitForAuth()
// Global auth functions
window.logout()
window.extendSession()
window.login(email, password)
window.register(email, password, displayName)- Authentication Required: All data operations require authenticated user
- User Isolation: Firestore rules ensure users can only access their own data
- Encrypted Connections: All data transmitted over HTTPS
- Secure Storage: Firebase encrypts data at rest
For detailed privacy information, see: Privacy Policy
- Lazy Loading: Scripts and resources loaded on demand
- Service Worker: Offline support and asset caching
- Optimized Queries: Firestore indexes for fast queries
- Efficient Rendering: DOM manipulation optimized for performance
- Minimal Dependencies: Vanilla JavaScript (no heavy frameworks)
"Missing or insufficient permissions" Error:
- Ensure Firestore security rules are deployed:
firebase deploy --only firestore:rules - Verify user is authenticated: Check
window.auth.currentUser
"The query requires an index" Error:
- Deploy Firestore indexes:
firebase deploy --only firestore:indexes - Or click the link in the error to create the index automatically
Module Import Errors:
- Ensure
auth.jsandfirebase-config.jsare loaded as modules:<script type="module"> - Check import paths use absolute paths (starting with
/)
Service Worker Issues:
- Clear browser cache and service workers
- Unregister old service workers: Visit
/unregister_sw.html(if available)
- Production (Firebase): https://mobile-debt-tracker.web.app/
- GitHub Pages: https://ronb12.github.io/Bradleys-Financial-Hub/
Technical documentation available in docs/markdown/:
PROJECT_STRUCTURE.md- Detailed project structureCONSOLE_ERRORS_FIXED.md- Error resolution guideSERVICE_WORKER_CACHE_FIX.md- Service worker documentation
This is a personal project. Contributions and suggestions are welcome!
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name - Commit your changes:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature/your-feature-name - Open a Pull Request
Copyright Β© 2025 Bradley's Finance Hub. All rights reserved.
This software is proprietary and confidential. Unauthorized copying, modification, distribution, or use of this software, via any medium, is strictly prohibited.
- Live App: mobile-debt-tracker.web.app
- GitHub Repository: github.com/ronb12/Bradleys-Financial-Hub
- Privacy Policy: View Online
For support, questions, or feature requests:
- Open an issue on GitHub
- Contact: GitHub Profile
Made with β€οΈ using Firebase and Progressive Web App technologies
Bradley's Finance Hub - Comprehensive Financial Management Tools
Β© 2025 Bradley's Finance Hub. All rights reserved.