Inspiration We wanted to build something practical that helps people spot risky or unusual spending early, instead of discovering problems at the end of the month. As a team, we were curious how far we could push a small, end‑to‑end ML product that feels like a tool real users could rely on.

What We Learned We learned how to design and deploy a small microservice system, including a React frontend, a Node.js and Express API, and a FastAPI service for machine learning. Along the way we deepened our understanding of containerized deployments, environment variables, and how to safely connect services using internal networking instead of exposing everything publicly.

How We Built It We built a React interface where users upload transaction data and view a detailed risk report. Our Node.js and Express backend handles file uploads, job management, and rate limiting, while the FastAPI service runs the anomaly detection and forecasting logic and returns structured insights back to the frontend. All services are deployed separately on Railway but share a single project so they can communicate over a private network.

Challenges As a team we spent a lot of time stabilizing the backend on Railway: services were stopping with SIGTERM, ports were misconfigured, and proxy headers caused errors until we configured Express correctly. Making the Node and FastAPI services talk reliably over internal URLs, while keeping everything secure and observable, was one of the most challenging and rewarding parts of the project.

Built With

  • node.js/express
  • python/fastapi
  • railway
  • react
Share this project:

Updates