A full-stack banking application built with Spring Boot (backend) and Angular (frontend) that provides essential banking functionalities including account management, fund transfers, transaction history, and notifications.
- User authentication and authorization
- Account management
- Fund transfers between accounts
- Transaction history
- Notifications system
- API documentation with Swagger
- Java 17
- Spring Boot 3.1.2
- Spring Security
- Spring Data JPA
- PostgreSQL database
- Maven
- Angular 14
- TypeScript
- Angular Material
- NgRx for state management
The application is fully dockerized with separate containers for the frontend, backend, and database.
- Docker and Docker Compose installed
# Start all services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop all services
docker-compose down# Start all services in development mode
docker-compose -f docker-compose.dev.yml up -d
# View logs
docker-compose -f docker-compose.dev.yml logs -f
# Stop all services
docker-compose -f docker-compose.dev.yml down- Frontend: http://localhost:80 (Production) or http://localhost:4200 (Development)
- Backend API: http://localhost:8080
- Swagger UI: http://localhost:8080/swagger-ui.html
- Install JDK 17
- Install PostgreSQL and create a database named
bankApp - Update
src/main/resources/application.propertiesif needed - Run the application:
./mvnw spring-boot:run- Install Node.js and npm
- Navigate to the frontend directory:
cd bank-app-frontend
npm install
npm start- If you encounter database schema issues, try resetting the volumes:
docker-compose down -v
docker-compose up -d- The notification system requires proper configuration of message and content fields
- Check database compatibility if notifications fail
- Default admin user: admin/admin123
- New user accounts are created with regular user privileges
- JWT tokens expire after 24 hours
Please read the CONTRIBUTING.md file for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the MIT License - see the LICENSE.md file for details.
src/main/java/com/restApi/bankApp/
├── business/ # Business logic layer
│ ├── abstracts/ # Service interfaces
│ └── concretes/ # Service implementations
├── config/ # Application configuration
├── controllers/ # REST API endpoints
├── dataAccess/ # Data repositories
├── entities/ # Domain models/entities
├── enums/ # Enumeration types
└── BankAppApplication.java # Application entry point
bank-app-frontend/
├── src/
│ ├── app/
│ │ ├── core/ # Core services and guards
│ │ ├── features/ # Feature components
│ │ ├── shared/ # Shared components and models
│ │ └── app.module.ts # Main module
│ ├── assets/ # Static assets
│ └── environments/ # Environment configurations
├── angular.json # Angular configuration
└── package.json # Dependencies
- POST
/api/auth/register- Register new user - POST
/api/auth/login- User login - GET
/api/auth/user/{username}- Get user details
- GET
/api/accounts/{id}- Get account details - POST
/api/accounts/{id}/deposit- Make deposit - POST
/api/accounts/{id}/withdraw- Make withdrawal
- POST
/api/transactions/transfer- Transfer money - GET
/api/transactions/account/{accountId}- Get account transactions - GET
/api/transactions/{transactionId}- Get transaction details
- GET
/api/notifications- Get all notifications (admin) - GET
/api/notifications/recipient/{recipient}- Get user notifications - PUT
/api/notifications/{id}/read- Mark notification as read - PUT
/api/notifications/read-all- Mark all notifications as read - DELETE
/api/notifications/{id}- Delete notification
- Java 17 or higher
- Node.js and npm
- PostgreSQL
- Maven
- Clone the repository:
git clone https://github.com/ozgucdlg/bankApp.git
cd bankApp- Configure PostgreSQL:
- Create database named 'bankApp'
- Update
application.propertieswith your database credentials
- Build and run the backend:
mvn clean install
mvn spring-boot:run- Navigate to the frontend directory:
cd bank-app-frontend- Install dependencies:
npm install- Run the development server:
ng serve- Open your browser and navigate to:
http://localhost:4200/
- Authentication with Spring Security
- Password encryption using BCrypt
- Role-based authorization
- Secure HTTP-only cookies
- CORS configuration
- Fork the repository
- Create feature branch
- Commit changes
- Push to branch
- Create Pull Request