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