{"id":34954864,"url":"https://github.com/lvoxx/simple-selling-application","last_synced_at":"2026-04-16T03:31:42.053Z","repository":{"id":279788272,"uuid":"933564154","full_name":"lvoxx/simple-selling-application","owner":"lvoxx","description":"Simple Selling Application for quick and small business, minimal budget but standarization operations.","archived":false,"fork":false,"pushed_at":"2025-05-08T03:04:20.000Z","size":7698,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-08T04:19:14.114Z","etag":null,"topics":["docker","monolith","restful-api","simple-project","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lvoxx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-16T09:17:58.000Z","updated_at":"2025-05-08T03:04:24.000Z","dependencies_parsed_at":"2025-02-27T17:14:40.957Z","dependency_job_id":"d7b3a3bd-fa73-474c-ad65-921fc1a53404","html_url":"https://github.com/lvoxx/simple-selling-application","commit_stats":null,"previous_names":["lvoxx/simple-selling-application"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lvoxx/simple-selling-application","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lvoxx%2Fsimple-selling-application","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lvoxx%2Fsimple-selling-application/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lvoxx%2Fsimple-selling-application/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lvoxx%2Fsimple-selling-application/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lvoxx","download_url":"https://codeload.github.com/lvoxx/simple-selling-application/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lvoxx%2Fsimple-selling-application/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31870506,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"online","status_checked_at":"2026-04-16T02:00:06.042Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","monolith","restful-api","simple-project","spring-boot"],"created_at":"2025-12-26T21:59:10.711Z","updated_at":"2026-04-16T03:31:42.045Z","avatar_url":"https://github.com/lvoxx.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"\" rel=\"noopener\"\u003e\n \u003cimg width=200px height=200px src=\"https://i.imgur.com/6wj0hh6.jpg\" alt=\"Project logo\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003eSimple Selling Application\u003c/h3\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![Status](https://img.shields.io/badge/status-active-success.svg)]()\n[![GitHub Issues](https://img.shields.io/github/issues/kylelobo/The-Documentation-Compendium.svg)](https://github.com/kylelobo/The-Documentation-Compendium/issues)\n[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/kylelobo/The-Documentation-Compendium.svg)](https://github.com/kylelobo/The-Documentation-Compendium/pulls)\n[![License](https://img.shields.io/badge/license-GPLv3-blue)](/LICENSE)\n\n\u003c/div\u003e\n\n---\n\n\u003cp align=\"center\"\u003e Few lines describing your project.\n    \u003cbr\u003e \n\u003c/p\u003e\n\n## 📝 Table of Contents\n\n- [Overview](#overview)\n- [Getting Started](#getting_started)\n- [Deployment](#deployment)\n- [Develop Structurer](#structure)\n- [License](#license)\n\n## 🧐 Overview \u003ca name = \"about\"\u003e\u003c/a\u003e\n\nSimple 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.\n\n### Features\n\n- **Business-Friendly**: Specifically designed for SMBs to simplify the selling process.\n- **Ready-to-Use**: No extensive setup required; start managing sales immediately.\n- **User Behavior** Data Aggregation: Collects and processes raw data for AI-driven insights and analytics.\n- **Cost-Effective**: Runs on **a minimal budget** while maintaining efficiency and scalability.\n- **Standardized Operations**: Ensures smooth and uniform business processes for improved workflow management.\n\n### Benefits\n\n- Gain AI-driven insights from user behavior data.\n- ___Reduce operational costs___ while maintaining efficiency.\n- Simplify sales management with an ___easy-to-use___ interface.\n- Improve ___decision-making___ with structured and standardized processes.\n\n## 🏁 Getting Started \u003ca name = \"getting_started\"\u003e\u003c/a\u003e\n\nThese instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See [deployment](#deployment) for notes on how to deploy the project on a live system.\n\n### Prerequisites\n\n```\nJava version 21, Spring Boot version 3.4.1\n```\n\n### Insight\n\nRun and generate test reports to HTML page with Sunfire\n\n```\nmake report\n```\n\nDocker compose up / down all services\n\n```\nmake up / down\n```\n\nDocker compose email up / down (dev only)\n\n```\nmake up/down-email\n```\n\n### And coding style tests\n\nLayer architecture, monolithic architecture\n\n## 🚀 Deployment \u003ca name = \"deployment\"\u003e\u003c/a\u003e\n\nAdd additional notes about how to deploy this on a live system.\n\n## 🏗️ Development Structure \u003ca name=\"structure\"\u003e\u003c/a\u003e\n\n```\n├── .env.dev\n├── .gitattributes\n├── .gitignore\n├── .mvn\n    └── wrapper\n    │   └── maven-wrapper.properties\n├── Dockerfile\n├── LICENSE\n├── Makefile\n├── README.md\n├── docker-compose.app.yaml\n├── docker-compose.db.yaml\n├── docker-compose.email.yaml\n├── docker-compose.merged.yaml\n├── docker-compose.yaml\n├── gitleaks.toml\n├── helm\n    ├── Chart.yaml\n    ├── README.md\n    └── templates\n    │   ├── pgadmin-deployment.yaml\n    │   ├── pgadmin-persistentvolumeclaim.yaml\n    │   ├── pgadmin-service.yaml\n    │   ├── postgres-deployment.yaml\n    │   ├── postgres-persistentvolumeclaim.yaml\n    │   ├── postgres-service.yaml\n    │   ├── simple-selling-application-deployment.yaml\n    │   └── simple-selling-application-service.yaml\n├── mvnw\n├── mvnw.cmd\n├── pom.xml\n├── src\n    ├── main\n    │   ├── java\n    │   │   └── com\n    │   │   │   └── shitcode\n    │   │   │       └── demo1\n    │   │   │           ├── Demo1Application.java\n    │   │   │           ├── annotation\n    │   │   │               ├── logging\n    │   │   │               │   ├── LogCollector.java\n    │   │   │               │   └── impl\n    │   │   │               │   │   └── LoggingCollectorAspect.java\n    │   │   │               ├── spring\n    │   │   │               │   ├── LazyAutowired.java\n    │   │   │               │   ├── LazyComponent.java\n    │   │   │               │   └── LazyConfiguration.java\n    │   │   │               └── validation\n    │   │   │               │   ├── DoEquals.java\n    │   │   │               │   ├── DoNotEquals.java\n    │   │   │               │   ├── Email.java\n    │   │   │               │   ├── GreaterOrEquals.java\n    │   │   │               │   ├── GreaterThan.java\n    │   │   │               │   ├── LessThan.java\n    │   │   │               │   ├── Password.java\n    │   │   │               │   ├── Phone.java\n    │   │   │               │   └── impl\n    │   │   │               │       ├── DoEqualsValidator.java\n    │   │   │               │       ├── DoNotEqualsValidator.java\n    │   │   │               │       ├── EmailValidator.java\n    │   │   │               │       ├── GreaterOrEqualsValidator.java\n    │   │   │               │       ├── GreaterThanValidator.java\n    │   │   │               │       ├── LessThanValidator.java\n    │   │   │               │       ├── PasswordValidator.java\n    │   │   │               │       └── PhoneValidator.java\n    │   │   │           ├── component\n    │   │   │               ├── DatabaseLock.java\n    │   │   │               └── IpAddressResolver.java\n    │   │   │           ├── config\n    │   │   │               ├── CacheConfig.java\n    │   │   │               ├── Ip2LocationConfig.java\n    │   │   │               ├── JwtConfig.java\n    │   │   │               ├── MessagesConfig.java\n    │   │   │               ├── OpenAPIConfiguration.java\n    │   │   │               └── SecurityConfig.java\n    │   │   │           ├── controller\n    │   │   │               ├── AuthController.java\n    │   │   │               ├── CategoryController.java\n    │   │   │               └── ProductController.java\n    │   │   │           ├── dto\n    │   │   │               ├── AbstractAuditableEntity.java\n    │   │   │               ├── AuthDTO.java\n    │   │   │               ├── CategoryDTO.java\n    │   │   │               ├── DiscountDTO.java\n    │   │   │               ├── GenericDTO.java\n    │   │   │               ├── ProductDTO.java\n    │   │   │               ├── ProductInteractionDTO.java\n    │   │   │               ├── ResponseDTO.java\n    │   │   │               └── SpringUserDTO.java\n    │   │   │           ├── entity\n    │   │   │               ├── AbstractAuditableEntity.java\n    │   │   │               ├── Category.java\n    │   │   │               ├── Discount.java\n    │   │   │               ├── Product.java\n    │   │   │               ├── ProductInteraction.java\n    │   │   │               ├── RegistrationToken.java\n    │   │   │               └── SpringUser.java\n    │   │   │           ├── exception\n    │   │   │               ├── handler\n    │   │   │               │   ├── ApplicationExceptionHandler.java\n    │   │   │               │   ├── GlobalExceptionHandler.java\n    │   │   │               │   └── LogExceptionAspect.java\n    │   │   │               └── model\n    │   │   │               │   ├── AspectException.java\n    │   │   │               │   ├── CacheEvictionException.java\n    │   │   │               │   ├── CacheMissException.java\n    │   │   │               │   ├── ConflictTokenException.java\n    │   │   │               │   ├── DiscountOverTimeException.java\n    │   │   │               │   ├── EntityExistsException.java\n    │   │   │               │   ├── EntityNotChangedException.java\n    │   │   │               │   ├── EntityNotFoundException.java\n    │   │   │               │   ├── ErrorModel.java\n    │   │   │               │   ├── InvalidRequestException.java\n    │   │   │               │   ├── KeyLockMissedException.java\n    │   │   │               │   ├── ResourceNotFoundException.java\n    │   │   │               │   ├── RevokeTokenException.java\n    │   │   │               │   ├── SendingMailException.java\n    │   │   │               │   ├── TokenExpiredException.java\n    │   │   │               │   ├── UserDisabledException.java\n    │   │   │               │   ├── UserUnAuthException.java\n    │   │   │               │   └── WorkerBusyException.java\n    │   │   │           ├── helper\n    │   │   │               ├── DateFormatConverter.java\n    │   │   │               ├── DatetimeFormat.java\n    │   │   │               ├── DiscountDateTimeConverter.java\n    │   │   │               ├── PaginationProvider.java\n    │   │   │               └── RoleConverter.java\n    │   │   │           ├── init\n    │   │   │               ├── ApplicationInitializer.java\n    │   │   │               └── SQLRunner.java\n    │   │   │           ├── jwt\n    │   │   │               └── JwtService.java\n    │   │   │           ├── mapper\n    │   │   │               ├── CategoryMapper.java\n    │   │   │               ├── DiscountMapper.java\n    │   │   │               ├── ProductMapper.java\n    │   │   │               └── SpringUserMapper.java\n    │   │   │           ├── properties\n    │   │   │               ├── AccountsConfigData.java\n    │   │   │               ├── AuthTokenConfigData.java\n    │   │   │               ├── ClientConfigData.java\n    │   │   │               ├── FontendServerConfigData.java\n    │   │   │               ├── JwtConfigData.java\n    │   │   │               ├── LvoxxServerConfigData.java\n    │   │   │               ├── MailingConfigData.java\n    │   │   │               ├── RateLimiterConfigData.java\n    │   │   │               ├── RsaKeyConfigData.java\n    │   │   │               └── SecurityPathsConfigData.java\n    │   │   │           ├── repository\n    │   │   │               ├── CategoryRepository.java\n    │   │   │               ├── DiscountRepository.java\n    │   │   │               ├── ProductInteractionRepository.java\n    │   │   │               ├── ProductRepository.java\n    │   │   │               ├── RegistrationTokenRepository.java\n    │   │   │               └── SpringUserRepository.java\n    │   │   │           ├── scheduler\n    │   │   │               └── CheckingExpiredDiscountScheduler.java\n    │   │   │           ├── security\n    │   │   │               ├── JWTAuthenticationEntryPoint.java\n    │   │   │               ├── SpringUserDetails.java\n    │   │   │               └── SpringUserDetailsService.java\n    │   │   │           ├── service\n    │   │   │               ├── AuthService.java\n    │   │   │               ├── CategoryService.java\n    │   │   │               ├── DiscountService.java\n    │   │   │               ├── InterationEventService.java\n    │   │   │               ├── Ip2LocationService.java\n    │   │   │               ├── MailService.java\n    │   │   │               ├── ProductService.java\n    │   │   │               ├── RateLimiterService.java\n    │   │   │               ├── RegistrationTokenService.java\n    │   │   │               ├── ResponseService.java\n    │   │   │               ├── SpringUserService.java\n    │   │   │               └── impl\n    │   │   │               │   ├── AuthServiceImpl.java\n    │   │   │               │   ├── CategoryServiceImpl.java\n    │   │   │               │   ├── DiscountServiceImpl.java\n    │   │   │               │   ├── InterationEventServiceImpl.java\n    │   │   │               │   ├── Ip2LocationServiceImpl.java\n    │   │   │               │   ├── MailServiceImpl.java\n    │   │   │               │   ├── ProductServiceImpl.java\n    │   │   │               │   ├── RateLimiterServiceImpl.java\n    │   │   │               │   ├── RegistrationTokenServiceImpl.java\n    │   │   │               │   ├── ResponseServiceImpl.java\n    │   │   │               │   └── SpringUserServiceImpl.java\n    │   │   │           └── utils\n    │   │   │               ├── ApplicationCache.java\n    │   │   │               ├── DiscountType.java\n    │   │   │               ├── InteractionEvent.java\n    │   │   │               ├── KeyLock.java\n    │   │   │               ├── LogPrinter.java\n    │   │   │               ├── LoggingModel.java\n    │   │   │               ├── RateLimiterPlan.java\n    │   │   │               └── cache\n    │   │   │                   ├── CategoryCacheType.java\n    │   │   │                   ├── DiscountCacheType.java\n    │   │   │                   ├── Ip2LocationCacheType.java\n    │   │   │                   ├── ProductCacheType.java\n    │   │   │                   └── UserCacheType.java\n    │   └── resources\n    │   │   ├── application.yml\n    │   │   ├── banner.txt\n    │   │   ├── certs\n    │   │       ├── private-key.pem\n    │   │       └── public-key.pem\n    │   │   ├── config\n    │   │       ├── accounts.yml\n    │   │       ├── auth.yml\n    │   │       ├── database.yml\n    │   │       ├── email.yml\n    │   │       ├── logging.yml\n    │   │       ├── rate-limiter.yml\n    │   │       ├── security.yml\n    │   │       └── server.yml\n    │   │   ├── database\n    │   │       ├── categories.sql\n    │   │       ├── discounts.sql\n    │   │       └── products.sql\n    │   │   ├── html\n    │   │       └── activation.htm\n    │   │   ├── ip2location\n    │   │       ├── IP2LOCATION-LITE-DB1.BIN\n    │   │       ├── LICENSE-CC-BY-SA-4.0.TXT\n    │   │       └── README_LITE.TXT\n    │   │   ├── logback.xml\n    │   │   └── message\n    │   │       └── messages.yaml\n    └── test\n    │   └── java\n    │       └── com\n    │           └── shitcode\n    │               └── demo1\n    │                   ├── controller\n    │                       ├── AuthControllerTest.java\n    │                       └── CategoryControllerTest.java\n    │                   ├── jwt\n    │                       └── JwtServiceTest.java\n    │                   ├── repository\n    │                       ├── CategoryRepositoryTest.java\n    │                       ├── DiscountRepositoryTest.java\n    │                       ├── ProductInteractionRepositoryTest.java\n    │                       ├── ProductRepositoryTest.java\n    │                       ├── RegistrationTokenRepositoryTest.java\n    │                       └── SpringUserRepositoryTest.java\n    │                   ├── service\n    │                       ├── AuthServiceTest.java\n    │                       ├── CategoryServiceTest.java\n    │                       ├── Ip2LocationServiceTest.java\n    │                       ├── MailServiceTest.java\n    │                       ├── RegistrationTokenServiceTest.java\n    │                       └── SpringUserServiceTest.java\n    │                   └── testcontainer\n    │                       ├── AbstractRepositoryTest.java\n    │                       └── PostgresTestContainerConfig.java\n└── wait-for-it.sh\n\n```\n\n## 🧾 License \u003ca name = \"license\"\u003e\u003c/a\u003e\nThis project is licensed under the Gnu General Public License. See the LICENSE file for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flvoxx%2Fsimple-selling-application","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flvoxx%2Fsimple-selling-application","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flvoxx%2Fsimple-selling-application/lists"}