Skip to content

lvoxx/simple-selling-application

Repository files navigation

Project logo

Simple Selling Application

Status GitHub Issues GitHub Pull Requests License


Few lines describing your project.

πŸ“ Table of Contents

🧐 Overview

Simple Selling Application is a ready-to-use solution designed for small and medium businesses (SMBs) looking to streamline their sales operations. This application provides an intuitive and efficient platform for managing sales while keeping operational costs minimal.

Features

  • Business-Friendly: Specifically designed for SMBs to simplify the selling process.
  • Ready-to-Use: No extensive setup required; start managing sales immediately.
  • User Behavior Data Aggregation: Collects and processes raw data for AI-driven insights and analytics.
  • Cost-Effective: Runs on a minimal budget while maintaining efficiency and scalability.
  • Standardized Operations: Ensures smooth and uniform business processes for improved workflow management.

Benefits

  • Gain AI-driven insights from user behavior data.
  • Reduce operational costs while maintaining efficiency.
  • Simplify sales management with an easy-to-use interface.
  • Improve decision-making with structured and standardized processes.

🏁 Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Prerequisites

Java version 21, Spring Boot version 3.4.1

Insight

Run and generate test reports to HTML page with Sunfire

make report

Docker compose up / down all services

make up / down

Docker compose email up / down (dev only)

make up/down-email

And coding style tests

Layer architecture, monolithic architecture

πŸš€ Deployment

Add additional notes about how to deploy this on a live system.

πŸ—οΈ Development Structure

β”œβ”€β”€ .env.dev
β”œβ”€β”€ .gitattributes
β”œβ”€β”€ .gitignore
β”œβ”€β”€ .mvn
    └── wrapper
    β”‚   └── maven-wrapper.properties
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ LICENSE
β”œβ”€β”€ Makefile
β”œβ”€β”€ README.md
β”œβ”€β”€ docker-compose.app.yaml
β”œβ”€β”€ docker-compose.db.yaml
β”œβ”€β”€ docker-compose.email.yaml
β”œβ”€β”€ docker-compose.merged.yaml
β”œβ”€β”€ docker-compose.yaml
β”œβ”€β”€ gitleaks.toml
β”œβ”€β”€ helm
    β”œβ”€β”€ Chart.yaml
    β”œβ”€β”€ README.md
    └── templates
    β”‚   β”œβ”€β”€ pgadmin-deployment.yaml
    β”‚   β”œβ”€β”€ pgadmin-persistentvolumeclaim.yaml
    β”‚   β”œβ”€β”€ pgadmin-service.yaml
    β”‚   β”œβ”€β”€ postgres-deployment.yaml
    β”‚   β”œβ”€β”€ postgres-persistentvolumeclaim.yaml
    β”‚   β”œβ”€β”€ postgres-service.yaml
    β”‚   β”œβ”€β”€ simple-selling-application-deployment.yaml
    β”‚   └── simple-selling-application-service.yaml
β”œβ”€β”€ mvnw
β”œβ”€β”€ mvnw.cmd
β”œβ”€β”€ pom.xml
β”œβ”€β”€ src
    β”œβ”€β”€ main
    β”‚   β”œβ”€β”€ java
    β”‚   β”‚   └── com
    β”‚   β”‚   β”‚   └── shitcode
    β”‚   β”‚   β”‚       └── demo1
    β”‚   β”‚   β”‚           β”œβ”€β”€ Demo1Application.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ annotation
    β”‚   β”‚   β”‚               β”œβ”€β”€ logging
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ LogCollector.java
    β”‚   β”‚   β”‚               β”‚   └── impl
    β”‚   β”‚   β”‚               β”‚   β”‚   └── LoggingCollectorAspect.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ spring
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ LazyAutowired.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ LazyComponent.java
    β”‚   β”‚   β”‚               β”‚   └── LazyConfiguration.java
    β”‚   β”‚   β”‚               └── validation
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ DoEquals.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ DoNotEquals.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ Email.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ GreaterOrEquals.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ GreaterThan.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ LessThan.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ Password.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ Phone.java
    β”‚   β”‚   β”‚               β”‚   └── impl
    β”‚   β”‚   β”‚               β”‚       β”œβ”€β”€ DoEqualsValidator.java
    β”‚   β”‚   β”‚               β”‚       β”œβ”€β”€ DoNotEqualsValidator.java
    β”‚   β”‚   β”‚               β”‚       β”œβ”€β”€ EmailValidator.java
    β”‚   β”‚   β”‚               β”‚       β”œβ”€β”€ GreaterOrEqualsValidator.java
    β”‚   β”‚   β”‚               β”‚       β”œβ”€β”€ GreaterThanValidator.java
    β”‚   β”‚   β”‚               β”‚       β”œβ”€β”€ LessThanValidator.java
    β”‚   β”‚   β”‚               β”‚       β”œβ”€β”€ PasswordValidator.java
    β”‚   β”‚   β”‚               β”‚       └── PhoneValidator.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ component
    β”‚   β”‚   β”‚               β”œβ”€β”€ DatabaseLock.java
    β”‚   β”‚   β”‚               └── IpAddressResolver.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ config
    β”‚   β”‚   β”‚               β”œβ”€β”€ CacheConfig.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ Ip2LocationConfig.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ JwtConfig.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ MessagesConfig.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ OpenAPIConfiguration.java
    β”‚   β”‚   β”‚               └── SecurityConfig.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ controller
    β”‚   β”‚   β”‚               β”œβ”€β”€ AuthController.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ CategoryController.java
    β”‚   β”‚   β”‚               └── ProductController.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ dto
    β”‚   β”‚   β”‚               β”œβ”€β”€ AbstractAuditableEntity.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ AuthDTO.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ CategoryDTO.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ DiscountDTO.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ GenericDTO.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ ProductDTO.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ ProductInteractionDTO.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ ResponseDTO.java
    β”‚   β”‚   β”‚               └── SpringUserDTO.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ entity
    β”‚   β”‚   β”‚               β”œβ”€β”€ AbstractAuditableEntity.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ Category.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ Discount.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ Product.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ ProductInteraction.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ RegistrationToken.java
    β”‚   β”‚   β”‚               └── SpringUser.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ exception
    β”‚   β”‚   β”‚               β”œβ”€β”€ handler
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ ApplicationExceptionHandler.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ GlobalExceptionHandler.java
    β”‚   β”‚   β”‚               β”‚   └── LogExceptionAspect.java
    β”‚   β”‚   β”‚               └── model
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ AspectException.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ CacheEvictionException.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ CacheMissException.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ ConflictTokenException.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ DiscountOverTimeException.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ EntityExistsException.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ EntityNotChangedException.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ EntityNotFoundException.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ ErrorModel.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ InvalidRequestException.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ KeyLockMissedException.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ ResourceNotFoundException.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ RevokeTokenException.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ SendingMailException.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ TokenExpiredException.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ UserDisabledException.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ UserUnAuthException.java
    β”‚   β”‚   β”‚               β”‚   └── WorkerBusyException.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ helper
    β”‚   β”‚   β”‚               β”œβ”€β”€ DateFormatConverter.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ DatetimeFormat.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ DiscountDateTimeConverter.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ PaginationProvider.java
    β”‚   β”‚   β”‚               └── RoleConverter.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ init
    β”‚   β”‚   β”‚               β”œβ”€β”€ ApplicationInitializer.java
    β”‚   β”‚   β”‚               └── SQLRunner.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ jwt
    β”‚   β”‚   β”‚               └── JwtService.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ mapper
    β”‚   β”‚   β”‚               β”œβ”€β”€ CategoryMapper.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ DiscountMapper.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ ProductMapper.java
    β”‚   β”‚   β”‚               └── SpringUserMapper.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ properties
    β”‚   β”‚   β”‚               β”œβ”€β”€ AccountsConfigData.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ AuthTokenConfigData.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ ClientConfigData.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ FontendServerConfigData.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ JwtConfigData.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ LvoxxServerConfigData.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ MailingConfigData.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ RateLimiterConfigData.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ RsaKeyConfigData.java
    β”‚   β”‚   β”‚               └── SecurityPathsConfigData.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ repository
    β”‚   β”‚   β”‚               β”œβ”€β”€ CategoryRepository.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ DiscountRepository.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ ProductInteractionRepository.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ ProductRepository.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ RegistrationTokenRepository.java
    β”‚   β”‚   β”‚               └── SpringUserRepository.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ scheduler
    β”‚   β”‚   β”‚               └── CheckingExpiredDiscountScheduler.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ security
    β”‚   β”‚   β”‚               β”œβ”€β”€ JWTAuthenticationEntryPoint.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ SpringUserDetails.java
    β”‚   β”‚   β”‚               └── SpringUserDetailsService.java
    β”‚   β”‚   β”‚           β”œβ”€β”€ service
    β”‚   β”‚   β”‚               β”œβ”€β”€ AuthService.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ CategoryService.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ DiscountService.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ InterationEventService.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ Ip2LocationService.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ MailService.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ ProductService.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ RateLimiterService.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ RegistrationTokenService.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ ResponseService.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ SpringUserService.java
    β”‚   β”‚   β”‚               └── impl
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ AuthServiceImpl.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ CategoryServiceImpl.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ DiscountServiceImpl.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ InterationEventServiceImpl.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ Ip2LocationServiceImpl.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ MailServiceImpl.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ ProductServiceImpl.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ RateLimiterServiceImpl.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ RegistrationTokenServiceImpl.java
    β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ ResponseServiceImpl.java
    β”‚   β”‚   β”‚               β”‚   └── SpringUserServiceImpl.java
    β”‚   β”‚   β”‚           └── utils
    β”‚   β”‚   β”‚               β”œβ”€β”€ ApplicationCache.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ DiscountType.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ InteractionEvent.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ KeyLock.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ LogPrinter.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ LoggingModel.java
    β”‚   β”‚   β”‚               β”œβ”€β”€ RateLimiterPlan.java
    β”‚   β”‚   β”‚               └── cache
    β”‚   β”‚   β”‚                   β”œβ”€β”€ CategoryCacheType.java
    β”‚   β”‚   β”‚                   β”œβ”€β”€ DiscountCacheType.java
    β”‚   β”‚   β”‚                   β”œβ”€β”€ Ip2LocationCacheType.java
    β”‚   β”‚   β”‚                   β”œβ”€β”€ ProductCacheType.java
    β”‚   β”‚   β”‚                   └── UserCacheType.java
    β”‚   └── resources
    β”‚   β”‚   β”œβ”€β”€ application.yml
    β”‚   β”‚   β”œβ”€β”€ banner.txt
    β”‚   β”‚   β”œβ”€β”€ certs
    β”‚   β”‚       β”œβ”€β”€ private-key.pem
    β”‚   β”‚       └── public-key.pem
    β”‚   β”‚   β”œβ”€β”€ config
    β”‚   β”‚       β”œβ”€β”€ accounts.yml
    β”‚   β”‚       β”œβ”€β”€ auth.yml
    β”‚   β”‚       β”œβ”€β”€ database.yml
    β”‚   β”‚       β”œβ”€β”€ email.yml
    β”‚   β”‚       β”œβ”€β”€ logging.yml
    β”‚   β”‚       β”œβ”€β”€ rate-limiter.yml
    β”‚   β”‚       β”œβ”€β”€ security.yml
    β”‚   β”‚       └── server.yml
    β”‚   β”‚   β”œβ”€β”€ database
    β”‚   β”‚       β”œβ”€β”€ categories.sql
    β”‚   β”‚       β”œβ”€β”€ discounts.sql
    β”‚   β”‚       └── products.sql
    β”‚   β”‚   β”œβ”€β”€ html
    β”‚   β”‚       └── activation.htm
    β”‚   β”‚   β”œβ”€β”€ ip2location
    β”‚   β”‚       β”œβ”€β”€ IP2LOCATION-LITE-DB1.BIN
    β”‚   β”‚       β”œβ”€β”€ LICENSE-CC-BY-SA-4.0.TXT
    β”‚   β”‚       └── README_LITE.TXT
    β”‚   β”‚   β”œβ”€β”€ logback.xml
    β”‚   β”‚   └── message
    β”‚   β”‚       └── messages.yaml
    └── test
    β”‚   └── java
    β”‚       └── com
    β”‚           └── shitcode
    β”‚               └── demo1
    β”‚                   β”œβ”€β”€ controller
    β”‚                       β”œβ”€β”€ AuthControllerTest.java
    β”‚                       └── CategoryControllerTest.java
    β”‚                   β”œβ”€β”€ jwt
    β”‚                       └── JwtServiceTest.java
    β”‚                   β”œβ”€β”€ repository
    β”‚                       β”œβ”€β”€ CategoryRepositoryTest.java
    β”‚                       β”œβ”€β”€ DiscountRepositoryTest.java
    β”‚                       β”œβ”€β”€ ProductInteractionRepositoryTest.java
    β”‚                       β”œβ”€β”€ ProductRepositoryTest.java
    β”‚                       β”œβ”€β”€ RegistrationTokenRepositoryTest.java
    β”‚                       └── SpringUserRepositoryTest.java
    β”‚                   β”œβ”€β”€ service
    β”‚                       β”œβ”€β”€ AuthServiceTest.java
    β”‚                       β”œβ”€β”€ CategoryServiceTest.java
    β”‚                       β”œβ”€β”€ Ip2LocationServiceTest.java
    β”‚                       β”œβ”€β”€ MailServiceTest.java
    β”‚                       β”œβ”€β”€ RegistrationTokenServiceTest.java
    β”‚                       └── SpringUserServiceTest.java
    β”‚                   └── testcontainer
    β”‚                       β”œβ”€β”€ AbstractRepositoryTest.java
    β”‚                       └── PostgresTestContainerConfig.java
└── wait-for-it.sh

🧾 License

This project is licensed under the Gnu General Public License. See the LICENSE file for details.

About

Simple Selling Application for quick and small business, minimal budget but standarization operations.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages