software

FiscalFlowCast

Personal finance SaaS — React client, GraphQL API, Plaid bank linking, and GCP deployment on Cloud Run and Cloud SQL.

Client
Null World Productions (division product)
Stack
React · GraphQL · Node.js · PostgreSQL
Outcome
Full-stack finance platform in production readiness

Problem Statement

Null World Productions needed a real product surface to exercise full-stack delivery — not only marketing sites and integrations. FiscalFlowCast targets personal finance tracking, budgeting, and forecasting with bank connectivity and subscription billing.

Solution Approach

We built FiscalFlowCast as a multi-repo product under the NWP GitLab group:

  • Client: React SPA with Apollo Client, budgets, forecasts, and onboarding flows
  • API: GraphQL backend (Node.js, Sequelize) with accounts, transactions, goals, and reporting
  • Integrations: Plaid for account linking and transaction sync; Stripe for subscriptions and webhooks
  • Infrastructure: Terraform-managed GCP (Cloud Run, Cloud SQL, VPC), GitLab CI/CD, and product runbooks

Technologies Used

  • Frontend: React, Apollo Client, Tailwind CSS
  • Backend: Node.js, GraphQL, Express, Sequelize, PostgreSQL
  • Integrations: Plaid, Stripe, OAuth providers
  • Infrastructure: Docker, Google Cloud Run, Cloud SQL, Terraform Cloud

Key Achievements

  • GraphQL API covering accounts, budgets, forecasting, and financial health scoring
  • Plaid and Stripe integration paths with webhook runbooks
  • Separate infra stacks for API and client website on Cloud Run
  • Product handbook, security policies, and rollback runbooks in the monorepo

Impact

  • Primary active NWP product alongside division and corporate web delivery
  • Demonstrates end-to-end ownership: application code, data model, payments, and cloud ops
  • Production readiness work continues on billing tiers, hardening, and launch checklist items

Lessons Learned

  • Financial products need explicit security and webhook runbooks early, not at launch
  • GraphQL schema discipline matters when the client and API evolve in parallel
  • Splitting API and website infra repos keeps deploy blast radius smaller