Giter Club home page Giter Club logo

jeeshop's Introduction

Jeeshop CI/CD

Description

Jeeshop e-commerce solution provides you with a store management GUI, Jeeshop-Admin and an complete set of RESTFul and GraphQL APIs to be used by a store front-end application (typically a single page application):

  • Products catalog
  • Discounts
  • Shopping cart
  • Users management
  • E-mailing

Components

Jeeshop-Admin is a responsive single page application application designed to manage jeeshop stores. It uses Jeeshop RESTFul APIs to perform common store management operations.

Jeeshop RESTFul APIs are designed to enable e-commerce and user management on a jeeshop store front-end application. (They are also used heavily by Jeeshop-Admin)

Jeeshop REST APIs are organized per domain:

See Jeeshop GraphQL project

Jeestore is a front-end demonstration application application which consumes Jeeshop REST APIs. You can take a look at it or start with it to build your e-commerce store.

Development

Jeeshop use quarkus as backend framework.

`application.properties file located in ./admin/src/main/resources enables to configure the app server.

to start app, run

  ./mvnw clean package quarkus:dev

Installation

with Docker

Prerequisite

Create a specific jeeshop database and a jeeshop database applicative user (See section bellow for default database settings)

Build

  mvn package -Dquarkus.package.type=fast-jar
  docker build -t jeeshop/admin .

The first command build Jeeshop Admin with prod environment. The second one build the docker image.

Run

To run jeeshop/admin image on port 8080 :

  docker run -i --rm -p 8080:8080 -e PORT=8080 jeeshop/admin

If you want to run in debug mode, run the container using :

  docker run -i --rm -p 8080:8080 -p 5005:5005 -e JAVA_ENABLE_DEBUG="true" -e PORT=8080 jeeshop/admin

The first command runs Jeeshop database migration scripts, which create Jeeshop tables and data. The second one starts a Jeeshop instance with Jeeshop-Admin and Jeeshop RESTFul APIs exposed. It can be customised with the following environment variables:

Configuration

Environment variable Default Description
JEESHOP_DATABASENAME jeeshop
JEESHOP_DATABASE_HOSTNAME host.docker.internal:5432 host running this docker image
JEESHOP_DATABASE_USERNAME jeeshop -------------
JEESHOP_DATABASE_PASSWORD test -------------
JEESHOP_JDBC_DRIVER postgresql postgresql, mysql
JEESHOP_CATALOG_DATABASENAME jeeshop -------------
JEESHOP_CATALOG_DATABASE_HOSTNAME host.docker.internal:5432 -------------
JEESHOP_CATALOG_DATABASE_USERNAME jeeshop -------------
JEESHOP_CATALOG_DATABASE_PASSWORD test -------------
JEESHOP_CATALOG_JDBC_DRIVER postgresql postgresql, mysql
JEESHOP_SSL_KEYSTORE_PATH META-INF/resources/server.keystore default keystore used to provide ssl
JEESHOP_SSL_KEYSTORE_PASSWORD test123 default keystore password
JEESHOP_DATA_DIR . where jeeshop assets, such as catalog items images, should be uploaded. For docker build this value is set to /jeeshop

With docker-compose

  docker-compose up

Demo dataset

All files needed for demo data re located in install/src/main/resources/demo

jeeshop's People

Contributors

dependabot[bot] avatar gmlewis avatar muskacirca avatar remibantos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jeeshop's Issues

Store demo web application

I already have a store demo application using angular js and UI-router. Just have to modify its CSS a little bit before to push it.

Welcome page / Overview

Welcome page displays functionalities available in Admin application.
It is part of overview module.

Jeeshop-Admin - Exception logged by REST Orders resource when accessing to Home page without authentication

22:36:49,691 ERROR [org.jboss.as.ejb3.invocation](default task-21) JBAS014134: EJB Invocation failed on component Orders for method public java.lang.Long org.rembx.jeeshop.order.Orders.count(java.lang.String,org.rembx.jeeshop.order.model.OrderStatus,java.lang.Long): javax.ejb.EJBAccessException: JBAS014502: Invocation on method: public java.lang.Long org.rembx.jeeshop.order.Orders.count(java.lang.String,org.rembx.jeeshop.order.model.OrderStatus,java.lang.Long) of bean: Orders is not allowed

REST API - Business Exceptions vs logs

  • Handle logging of business exceptions properly (for sample in case of a WebApplicationException throwing 404 HTTP when a resource is not found) without of ejb rollback stack traces.

JeeshopAdmin - Sort list of items

Add Items sort functionnality in following screens:

  • Users
  • Orders
  • Catalog items (catalogs, categories, products, skus, discounts)
  • Mail templates

Limited time sales

Study on limited sales impacts on Catalog model and/or definition of Sales domain entities

Jeeshop-Admin - Newsletters management

Complete Emails, newsletters section in Jeeshop-Admin with newsletters management.
Integrate HTML editor to create a newsletter.
Add a due date field.
Add a Scheduler in backend to send newsletters with a configurable schedule time.

Authentication and Authorization (JaaS)

Use and setup of JAAS in application server.
Configure authentication for protected REST resources. (BASIC or other)
Two Roles are defined for setup: jeeshop-user and jeeshop-admin.
jeeshop-admin protects critical administration tasks performed on resources.

Deployment - Add 2 deployment modes: monolith vs microservices

2 deployment modes enabled by configuration:

  • Microservice
  • Monolith

Microservices could match following existing domains:

  • user
  • order
  • catalog

Monolith mode matches the current one:

  • Back office jeeshop-admin application which depends on jeeshop-order, catalog and user modules.
  • Front office application which depends on the same.

Catalog Management

Catalog elements (catalogs, categories, products, skus ...) management functionalities

Authentication - Record Login attempts

Record login attempts number per user.
Fail after n (configurable) attempts.

This might be done by using a stored procedure instead of a Query for user authentication with JAAS.

User REST services

Resources definition and services implementation

  • New user registration process
  • Login
  • Account management

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.