KadraPractice

A Java Spring Boot practice project inside a banking core

Corebank is a working Spring Boot service that holds accounts, balances and statements. The sprint goal is to get the ledger and statements right, and three bugs are getting in the way. You fix each one in the real codebase and open a GitHub pull request. An AI teammate reviews it, and a hidden JUnit suite run by Maven decides whether it passes.

Real GitHub PRs · Graded by JUnit · Free during beta

What you'll actually do

Three money bugs in Corebank

Banking code is where small mistakes cost real money, which makes it good practice. Each ticket is a bug report with acceptance criteria, in a Java codebase you didn't write.

CORE-701

Pending holds aren't subtracted from the available balance

availableBalance returns the ledger balance and ignores authorization holds, so a customer can spend money that's already earmarked. To pass, available balance has to equal the ledger balance minus active holds, update when a hold is placed or released, and not count a settled hold twice.

CORE-708

Statements drop or duplicate transactions at the period boundary

The statement query uses a date range that's inclusive on both ends, so a transaction on the closing date lands on two statements and others land on none. To pass, each statement covers [periodStart, nextPeriodStart), every boundary transaction appears exactly once, and transactions are ordered by post date.

CORE-715

Interest accrual assumes every month has 30 days

Daily interest is computed as annualRate / 12 / 30 * days, which is wrong for almost every month and especially February. To pass, accrual has to use the actual day count, handle leap years, and round to the cent consistently so the interest reconciles to the statement.

How grading works

JUnit decides whether the fix works

Each Corebank ticket has a hidden JUnit test class that's added to your branch at grading time and run with Maven. The result appears on your pull request as a check.

  • The hidden tests run with mvn test on Java 21 in a clean sandbox. They cover the acceptance criteria, including the boundary dates and leap years that a quick fix tends to miss.
  • An AI teammate reviews the diff in the PR thread and can request changes. That review is feedback; the tests decide pass or fail.
  • If a check fails, the Surefire output is on the PR. Push another commit and it runs again.
  • Shipped tickets and tracked hours go on a certificate with a public link for your résumé or LinkedIn.
See exactly how the grading pipeline works →
Who it's for

Who the Java track is for

Corebank assumes you know Java and have seen Spring Boot. It tests whether you can work safely in a codebase where the numbers have to add up.

Developers aiming at banks, fintech or enterprise Java teams who want work that looks like the job.

CS students who know Java from coursework but have never changed someone else's service.

Career switchers who want a reviewed pull request to talk about in interviews.

Juniors who want to learn why date ranges and rounding cause so many production bugs.

Not for: people new to Java. Corebank is about debugging an existing Spring Boot service, so learn the language basics first.

FAQ

Questions about the Java track

What do I need installed?

Java 21 and Maven if you work locally. Every Corebank repo also opens in GitHub Codespaces with the toolchain ready.

Who reviews my pull request?

An AI teammate reviews the diff in the PR thread and can ask for changes. Whether the fix is correct is decided by the hidden JUnit suite.

What happens if the tests fail?

The failing test output is on the pull request. Push a new commit and the check runs again.

Do I need banking knowledge?

No. Each ticket explains the rule it breaks, such as holds reducing the available balance. The work is reading the code and making it follow that rule.

Can I put it on my résumé?

Yes. Finishing the sprint gives you a certificate with the stack, the tickets you shipped and your tracked hours, behind a public link.

Does it cost anything?

It's free during the beta.

Take CORE-701 and make the available balance tell the truth.