This is a Money Transfer Application that allows users to transfer money between accounts, view account balances, and manage favorite recipients. The application uses Java Spring Boot for the backend, with PostgreSQL as the database, and Redis for caching. It is containerized using Docker and deployed on Railway.
- User Registration and Login: Users can sign up and log in securely using email and password.
- Balance Inquiry: Users can check their account balance at any time.
- Money Transfer: Users can transfer funds between accounts.
- Favorite Recipients: Add and manage favorite recipients for quick and easy transfers.
- Transactions: View transaction history.
- Authentication: Secure login, token-based authentication, and logout functionality.
- Rate Limiting: Uses the Token Bucket algorithm to limit the number of requests a user can make in a given period.
- Caching: Improves performance by using Redis for caching frequently accessed data.
- Security: Special attention to secure transactions and data handling, with token-based authentication and rate-limiting mechanisms in place.
- Java 17: The programming language used for the backend.
- Spring Boot 3:
- Spring Security 6 for authentication and authorization
- Spring Web for building RESTful APIs
- Maven: Build tool for compiling and packaging the application.
- PostgreSQL: Relational database used to persist account and transaction data.
- Redis: Caching layer used for improving performance.
- JWT Token: For secure token-based authentication.
- Token Bucket Algorithm: For rate-limiting requests to prevent abuse.
- Postman: API documentation and testing.
- Docker: For containerizing the application for easy deployment.
- Railway: Platform used for deploying the application.
- Java 17 or higher
- Maven 3.9.9 or higher
- PostgreSQL database
- Redis server
-
Clone the repository:
git clone https://github.com/BM-Internship-Project/Backend-Team.git
-
Navigate to the project directory:
cd money-transfer-application -
Install dependencies:
-
Configure application properties:
- Edit
src/main/resources/application.propertiesto set up your database and other configuration settings.
- Edit
-
Run the application:
mvn spring-boot:run
The application is deployed on Railway.