Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenBank — Banking Management System

Read this in Português.

A full-stack banking management system built with Java 21 / Spring Boot and a vanilla HTML/CSS/JS frontend. OpenBank simulates the core operations of a retail bank: customer and account management, deposits/withdrawals/transfers, transaction history and administrative reporting, with role-based access for customers and staff.

Originally built as a final project for a Systems Development / Information Systems Programming course; cleaned up and documented here as a portfolio piece.

Features

  • Two authentication flows — separate login for customers and staff/administrators, secured with JWT.
  • Customer management (CRUD) — create, list, search, update and delete customers (deletion blocked while linked accounts exist).
  • Account management — configurable account types and account creation per customer.
  • Balance & transaction history — per-account statements with filtering.
  • Operations — deposits, withdrawals and transfers, with the responsible staff member recorded on administrative operations.
  • Reporting — administrative report listing and querying.
  • Validation & authorization — request validation, role-based route protection, and consistent JSON error responses.

Tech stack

Layer Technology
Backend Java 21, Spring Boot, Spring Web, Spring Data JPA, Spring Security, JWT
Database MySQL 8
Frontend HTML5, CSS3, vanilla JavaScript
Build Maven (wrapper included)

Architecture

flowchart LR
    Browser["Browser<br/>(static frontend)"] -->|fetch / JSON| API["Spring Boot API<br/>(REST + JWT)"]
    API -->|Spring Data JPA| DB[(MySQL)]
    API -->|role-based access| Auth["Security Layer<br/>(customer / staff)"]
Loading

Project structure

openbank/
├── README.md
├── base_de_dados/
│   └── openbank.sql          # Schema + demo data
├── documentacao/
│   └── Documentacao_Openbank.pdf
└── projeto/
    ├── api/                    # Spring Boot REST API
    │   ├── .env.example
    │   ├── pom.xml
    │   └── src/
    └── frontend/                # Static HTML/CSS/JS client
        ├── index.html
        ├── css/
        ├── js/
        └── pages/

Getting started

Requirements

  • Java 21
  • MySQL 8 (or compatible)
  • An up-to-date browser
  • Any static file server for the frontend (e.g. VS Code Live Server)

1. Database

Run base_de_dados/openbank.sql against your MySQL instance to create the schema and load demo data.

2. API configuration

cd projeto/api
cp .env.example .env

Edit .env and set at least DB_USERNAME, DB_PASSWORD and JWT_SECRET to your own local values. .env is git-ignored and must never be committed with real credentials.

3. Run the API

./mvnw spring-boot:run       # Linux/macOS
mvnw.cmd spring-boot:run     # Windows

The API is served at http://localhost:8080.

4. Run the frontend

Open projeto/frontend in VS Code and start it with Live Server (or any static server), then open index.html in the browser.

Demo accounts

These accounts exist only in the local demo dataset seeded by openbank.sql — they are not real credentials and only work against a database you seeded yourself.

Role Email Password
Customer luan@email.com 123456
Staff/Admin admin@openbank.local 123456

License

Released under the MIT License.

Author

Luan Cabralluancabralcon@gmail.com

About

Full-stack banking management system (customers, accounts, transfers, reports) built with Java 21, Spring Boot and MySQL.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages