Back to Projects & Tools

APIverse

Multi-backend user authentication and banking system with implementations in Flask, FastAPI, Java Spring Boot, NestJS, and Go

Multi-Backend Architecture

APIverse demonstrates the same authentication and banking functionality implemented across five different backend technologies: Flask, FastAPI, Java Spring Boot, NestJS, and Go. All backends are compatible with a single universal GUI client.

This project showcases how the same business logic can be implemented across different technology stacks while maintaining API compatibility.

🌐

APIverse

A comprehensive banking system with user authentication, account management, and financial operations. Choose your preferred backend technology stack.

View on GitHub

Backend Implementations

🐍

Flask (Python)

  • • Full banking functionality
  • • JWT authentication
  • • Password hashing
  • • JSON data storage

FastAPI (Python)

  • • High-performance async
  • • Automatic API docs
  • • Type safety
  • • Full feature set

Spring Boot (Java)

  • • Enterprise-grade security
  • • BCrypt password hashing
  • • RESTful architecture
  • • Maven build system
🚀

NestJS (TypeScript)

  • • Modular architecture
  • • TypeScript type safety
  • • BCrypt security
  • • Dependency injection
🐹

Go

  • • High performance and concurrency
  • • BCrypt password hashing
  • • Minimal dependencies
  • • Fast compilation

Features

🔐

Authentication

  • • User registration and login
  • • JWT token-based auth
  • • Password hashing (bcrypt)
  • • Token expiration handling
💳

Banking Operations

  • • Create account with balance
  • • Deposit and withdraw
  • • Close account (zero balance)
🛡️

Security

  • • Unique account numbers
  • • Balance validation
  • • Account ownership verification
  • • Secure password storage
🖥️

Universal Client

  • • Single GUI for all backends
  • • Auto-detection of backend
  • • Real-time balance updates
  • • Error handling

Quick Start

1. Choose a backend:

# FastAPI (Recommended)
cd fastapi_server
python server.py

2. Run the client:

python client.py

3. Start banking:

Register a user, create an account, and perform banking operations. The client automatically works with any running backend.

Project Notes
  • Universal Client: The GUI client automatically detects and works with any of the five backend servers running on port 5000.
  • Data Storage: All backends use JSON files for data persistence (users.json and accounts.json).
  • JWT Expiration: Tokens expire after 1 hour for security.
  • Account Rules: Each user can have only one active account. Accounts must have zero balance to be closed.