Giter Club home page Giter Club logo

hermes's Introduction

โšš Hermes - Your Payments App


This app is designed to simplify transactions between users, merchants, and administrators. Built on Spring Boot with JPA repositories and PostgreSQL, it provides a robust backend infrastructure for secure and efficient payment processing.


๐Ÿ”ฎ Features

  1. User Login: Users can securely log in to their accounts to access various functionalities.

  2. Sending Money: Users can easily send money to other users within the app.

  3. Reward Scheme for Users: Users will earn rewards and cashbacks for more transactions they make.

  4. Stock Creation using Factory: Stock creation is simplified through a factory pattern, where predefined stocks like tech, finance, or pharma can be easily generated.

  5. Builder Pattern for Custom Stock Creation: Users can create custom stocks by specifying the name, type, and price, providing step-by-step instructions for stock creation.

  6. Admin Portal: Administrators have access to a portal where they can view all accounts, transactions, and manage stock creation.

  7. Notification System: An observer pattern is implemented for notifications. Admins are subscribers, and they receive notifications whenever transactions occur.


๐Ÿ“œ Design Patterns Utilized

  • Singleton: Leveraging Spring Boot's @Service or @Component annotation ensures that each instance of any class exists at most once, maintaining singleton behavior.

  • Adapter: Spring Boot's JPA repository acts as an adapter between the backend and the chosen database. This abstraction simplifies database interactions, allowing the flexibility to use various databases without altering backend logic.

  • Factory Pattern: Used for stock creation, abstracting the process by defining stock types and their respective attributes.

  • Builder Pattern: Custom stock creation is facilitated through a builder pattern, providing step-by-step guidance for stock configuration.

  • Observer Pattern: Implemented for the notification system, where admins act as observers and receive notifications upon transaction events.


๐Ÿ“„ Software Engineering Principles

  • Single Responsibility Principle (SRP): Each class or module has a single responsibility, enhancing maintainability and reducing code complexity.

  • Open/Closed Principle (OCP): The system is designed to be open for extension but closed for modification, allowing for easy integration of new features without altering existing code.

  • Model-View-Controller-Service (MVCS): The architecture follows MVCS principles, separating concerns between data, presentation, and logic layers for better organization and maintainability.

  • Low Coupling (GRASP): Components are loosely coupled, minimizing dependencies between modules, thus enhancing flexibility and scalability.

  • Creator (GRASP): Emphasizes the importance of specialized factories for creating objects, promoting a more cohesive design.


โš™๏ธ How to Use

  1. Clone the repository.
  2. Configure your PostgreSQL database details in the application.properties file.
  3. Build and run the application.
  4. Access the application through the provided endpoints for user login, transaction processing, and admin functionalities.

hermes's People

Contributors

larry8668 avatar karthik2603-thebrogrammer avatar

Stargazers

AD4R5HG5 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.