Skip to main content

Runway Calculator Build History

Project Initialization (Q1 2024)

The project began as a Yew WebAssembly starter project with the following foundational components:

  • Rust/WebAssembly structure using the Yew framework
  • TailwindCSS for styling
  • Initial project scaffolding via create-project.sh

Key Development Milestones

Initial Setup (Q1 2024)

  • Created basic project structure with Model-View-Controller pattern
  • Set up TailwindCSS integration with Rust/Yew
  • Implemented initial build pipeline with Trunk and npm scripts

Core Financial Models (Q2 2024)

  • Developed FinancialScenario and FinancialEvent models for runway calculations
  • Implemented seasonality modeling for more accurate projections
  • Added support for various growth patterns (linear, exponential, s-curve)
  • Created milestone event system with multiplier effects
  • Added category tags for expense classification
  • Implemented maximum amount caps on expenses

UI Components (Q2-Q3 2024)

  • Built dashboard with cash projection visualization
  • Created event management interface (list, forms, timeline)
  • Implemented charts using various visualization libraries
  • Added interactive timeline component for financial planning
  • Implemented inline validation for event forms
  • Created intuitive date/recurrence selectors

Storage and Persistence (Q3-Q4 2024)

  • Implemented LocalStorage for saving financial scenarios
  • Added multi-layered backup system:
    • LocalStorage regular saves
    • File-based backup/restore functionality (JSON import/export)
    • Simulated "folder" system in LocalStorage for organization
  • Implemented ArangoDB integration:
    • Completed database schema design for users, scenarios, and permissions
    • Added API endpoints for CRUD operations
    • Set up synchronization between local and remote data
    • Created error handling for offline/online transitions

Authentication System (Q4 2024)

  • Implemented basic authentication flow (login)
  • Completed registration form (UI implementation)
  • Pending: Email verification and password reset workflows

Templates and Sample Data (Q4 2024-Q1 2025)

  • Implemented 10 template scenarios for different business models:
    • SaaS models with varying growth rates
    • Hardware startups with manufacturing cycles
    • Seasonal retail businesses
    • Enterprise sales with long cycles
    • Marketplace/two-sided businesses
  • Created template selection UI for customization
  • Implemented sample scenario generator for first-time users

Testing Infrastructure (Throughout Development)

  • Configured wasm-bindgen-test for WebAssembly testing
  • Implemented comprehensive HTTP mocking infrastructure:
    • Request/response mocking framework
    • URL pattern matching
    • Mock response configuration
    • Support for various test types:
      • API integration tests
      • Authentication flow tests
      • WebSocket tests
      • Sequenced response tests
  • Created specialized test runners:
    • test_wasm.sh for main WebAssembly tests
    • run_http_mock_test.sh for HTTP mock testing
    • Environment-specific test configurations (Chrome, Firefox)

Build System Evolution

  1. Initial build system implemented with basic Trunk configuration (Q1 2024)
  2. Added TailwindCSS build pipeline integration (Q1 2024)
  3. Enhanced development workflow with concurrent processes (Q2 2024)
  4. Created specialized test runners for different testing scenarios (Q3 2024)
  5. Improved error handling and dependency verification in build scripts (Q4 2024)
  6. Added file-based import/export system (Q1 2025)

Key Technical Challenges Addressed

  1. Proper handling of Rust ownership and borrowing in WebAssembly context
  2. Implementing browser file operations (download, upload) in Rust
  3. Managing state across components with Yew's hooks
  4. Creating realistic financial projections with seasonality effects
  5. Implementing multi-layered backup strategy to prevent data loss
  6. Setting up proper WebAssembly testing infrastructure
  7. Designing and implementing a custom HTTP mock framework for testing