Java Spring Boot application simulating an Internet Banking System
This project allows you to:
- Open bank accounts
- Make deposits
- Transfer funds between accounts (with automatic currency conversion)
- Manage users (admin functionality)
- Integrate authentication via Google OAuth2
- Send email notifications
The project uses an external API to retrieve exchange rates (EUR/UAH) and displays data via a web interface (HTML + Thymeleaf).
- Java 17
- Spring Boot 3.2
- Spring Security + OAuth2 Client
- Spring Mail
- Thymeleaf + Bootstrap 5
- Maven
- Gmail SMTP
- Fixer API (for exchange rates)
- 
Clone the repository: git clone https://github.com/IvashDima/JavaPro_FinalProject_InternetBanking.git cd JavaPro_FinalProject_InternetBanking
- 
Create a .env.propertiesfile in the project root with the following contents:spring.mail.username=your_email@gmail.com spring.mail.password=your_password spring.security.oauth2.client.registration.google.client-id=your_client-id spring.security.oauth2.client.registration.google.client-secret=your-client-secret 
- 
Set up your Google Cloud Console OAuth2 credentials with Authorized redirect URIs like: http://localhost:8886/login/oauth2/code/google
- 
Run the application: mvn spring-boot:run 
- 
Open in your browser: http://localhost:8886/
src/main/
├── java/org/example/springbank/
│   ├── config/                 # Application and security configuration
│   ├── controllers/            # Request controllers
│   ├── dto/                    # Data Transfer Objects
│   ├── enums/                  # Enumerations
│   ├── exceptions/             # Exception handling
│   ├── json/                   # JSON-related functionality
│   ├── mail/                   # Email service
│   ├── models/                 # Data models
│   ├── repositories/           # Database repositories
│   ├── retrievers/             # External data retrievers (e.g., currency rates)
│   ├── services/               # Business logic
│   └── Application.java        # Main application entry point
└── resources/
    ├── templates/              # Thymeleaf templates
    └── application.properties  # Application configuration
- This is a student project created as part of a Java Pro course.
- Designed for demonstration purposes for potential employers, recruiters, and teachers.
- Focused on implementing clean architecture, security practices, and basic external API integrations.
- Sensitive credentials should always be protected using environment variables or secret managers.
- Google OAuth2 may require consent screen verification when sensitive data access is involved.
- The application is fully runnable locally without the need for a paid external API.
GitHub: IvashDima
LinkedIn: Dmytro Ivashchenko
Email: dnytsyk@gmail.com
Feel free to reach out if you have any questions or suggestions!
This project is provided for educational purposes only and does not have a specific license.
Feel free to contribute, suggest improvements, or fork the project! 🚀
Q: OAuth2 login isn't working. What should I check?
A: Make sure the redirect URI in your Google Cloud Console matches the one in the app exactly.
Q: Emails are not sent.
A: Ensure your Gmail account allows less secure apps or use App Passwords.
Also, there is a delay of a few minutes before the email is sent.
Q: Emails are not received. A: Ensure that your transaction is successful (the email is sent only after the transaction is successfully completed). Also, check your spam folder.
