lundi 5 novembre 2012

Qalingo: Opensource Java eCommerce draft

Opensource Java eCommerce (POC version, Qalingo)
Opensource Java eCommerce (POC version, Qalingo)
Après une longue expérience sur un eCommerce pour une marque française, j'ai souhaité démarrer un projet opensource Java par opposition aux nombreux projets PHP trop plébiscités à mon goût et malgré la présence d'initiatives très respectables comme Broadleaf Commerce, JadaSite, Shopizer ou KonaKart.

Je partage donc une première version écrite ces dernières semaines. Cette étape permettra de prendre du recul et d'en discuter.
Cette version est un Proof Of Concept, où je n'ai rien optimisé, la cible étant d'écrire un premier jet rapide.
Les puristes s'agaçeront sur bien des couches et je m'en excuse, c'est un draft ;)

Le repository est sur GitHub : GitHub Qalingo
La Licence opensource est à définir, actuellement en Apache License Version 2.0 (le monde des licences opensource est bien compliqué)

Ce projet se présente comme une boite à outils composée de modules Maven :

Qalingo : B2C Engine

- qalingo-apis : Les APIs Core qui composeront le moteur eCommerce
- qalingo-misc : Les modules tiers pour import/export, SQL, traductions

*Qalingo : B2C Engine on GitHub

Qalingo : B2C Web Batch Synchronization

qalingo-qalingo-webapp-applications : Les applications tiers type Spring-Batch dédiées à synchroniser le eCommerce vers le CRM/CMS/ERP etc...

*Qalingo : B2C Web Batch Synchronization on GitHub

Qalingo : B2C Web classic Frontoffice & Backoffice

- qalingo-theme-assets : Les ressources type "page" et js/css/img etc...
- qalingo-webapp-backoffices : Les backs, divisés en 3 : "business", "reporting", "technical"
- qalingo-webapp-frontoffices : Les fronts "prehome", "mcommerce"

*Qalingo : B2C Web classic Frontoffice & Backoffice on GitHub

Qalingo : B2C Web Remote

- qalingo-webapp-remotes : Les fronts "remote" Rest/Webservices (pour les Apps mobile)

*Qalingo : B2C Web Remote on GitHub

D'un point de vue métier, la cible de ce premier jet :
  • Gestion d'un catalogue customisable par marché. Il y a donc une definition sur 3 niveaux d'objets pour s'adapter à une marque qui aurait un catalogue monde, une surcharge par marché, avec une ensemble de traductions pour chacun de ces marchés (MarketPlace>Market>MarketArea>Localization).
  • Gestion des thèmes par marché et par device via le filtre de l'API Wurlf
  • URLs réécrites
  • Sécurité via Spring-security
  • Simple gestion des cutomers
  • Gestion d'attributs complémentaires pour les objets Customer/ProductCategory/ProductMarketing/ProductSku/PaymentGateway/Store
  • Simple Tunnel d'achat
  • Wishlist customer
  • Gestion de régles métier Via Drools
  • Gestion de la recherche via SOLR
  • Génération des traductions depuis une feuille Excel dédiée aux équipes métier
  • Pré Home dédiée à la redirection vers les n marchés
  • OpenStreetMap pour la liste des points de vente
Votre support, votre aide, vos critiques, remarques, conseils seront les bienvenus.

Prochaine étapes, mettre en place une alpha début décembre, une beta début 2013, une 1.0 printemps 2013 (suivant les retours) :
  • Nettoyer le code
  • Optimiser le code
  • Ecrire les test unitaires
  • Definir tous les types d'Exception et les logs associés
  • Conception des backoffices.
  • Conception du "remote" Rest pour les apps mobile
  • Brancher le eCommerce vers un CMS de type Alfresco via la norme CMIS (open CMIS) pour synchroniser en Rest les deux environnements
  • Ecriture des règles Drools
  • Réflexion sur les "bundles"
  • Réflexion sur les "changesets"
  • Exports/Imports ?
  • Réflexion pour permettre des "hooks/plugins" autrement qu'en surchargeant les beans Spring
  • portlet Liferay connecté sur la webapp "remote" Rest ?
  • Une longue liste de chose à faire, même pour un simple ecommerce...

La stack actuelle des frameworks :

Spring 3.1.2.RELEASE
Hibernate 4.1.7.Final
ehcache 2.6.0
Velocity 1.7
JQuery 1.7.2
Spring-Batch 2.1.9.RELEASE
Spring-WS 2.1.0.RELEASE
Spring-Security 3.1.2.RELEASE
Boostrap 2.2.1
Wurlf/ScientiaMobile 1.4.2
SOLR 4.0.0-BETA
DROOLS 5.4.0.Final
logback 1.0.6

Les outils :

Maven 3.0
MySql (server) 5.1.51
MySql (driver) 5.1.9
Apache-tomcat 7.0.22
Apache 2.2
Java 1.6.0_22

Malgré le fait que j'apprécie beaucoup ce framework, j'ai abandonné Vaadin, pour ne pas avoir trop de frameworks différents. De ce fait les backoffices sont en velocity avec un theme Bootstrap/Font Awesome comme les frontoffices.

Je vais continuer de commiter, et publier en parallèle sur le blog des zooms sur chaques parties.

To Be Continued...
Opensource Java eCommerce (POC version, Qalingo)
After a long experience on an eCommerce for a French brand, I wanted to start an opensource project Java despite the presence of very respectable initiatives as Broadleaf Commerce, JadaSite, or Shopizer KonaKart and versus PHP projectsversus PHP projects (too acclaimed for my taste).

I share a first version written in recent weeks. This step will be the good time to get feedback and discuss.
This version is a proof of concept, where nothing is realy optimized. The target was to write a first draft quickly.
The purists will be warm concerning many layers and i'm sorry, this is a draft;)

The repository is on GitHub: GitHub Qalingo
The License opensource is to define, current version is on Apache License Version 2.0 (the world of open source licenses is realy complicated)

This project looks like a toolbox consisting of modules Maven:

Qalingo : B2C Engine

- qalingo-apis : The Core APIs that make up the engine eCommerce
- qalingo-misc : The third party modules for import / export, SQL translations

*Qalingo : B2C Engine on GitHub

Qalingo : B2C Web Batch Synchronization

qalingo-qalingo-webapp-applications : Applications such third-Spring Batch dedicated to eCommerce to synchronize CRM / CMS / ERP etc...

*Qalingo : B2C Web Batch Synchronization on GitHub

Qalingo : B2C Web classic Frontoffice & Backoffice

- qalingo-theme-assets : resources type "page" and js / css / img etc...
- qalingo-webapp-backoffices : The backs were divided into three projects "business", "reporting", "technical"
- qalingo-webapp-frontoffices : Fronts "prehome", "mCommerce"

*Qalingo : B2C Web classic Frontoffice & Backoffice on GitHub

Qalingo : B2C Web Remote

- qalingo-webapp-remotes : Fronts "remote" Rest / Webservices (for mobile apps)

*Qalingo : B2C Web Remote on GitHub

Business perspective, the target of the first draft:
  • Catalog management customizable by market. So there is a definition of three levels of Market objects and the last one for the localization. Marketplace> Market> MarketArea> Localization.
  • Theme by market and using the filter device API Wurlf
  • Rewritten URLs
  • Security via Spring-security
  • Simple management cutomers
  • Attributes object Management for Customer / ProductCategory / ProductMarketing / ProductSku / PaymentGateway / Store
  • Simple Tunnel
  • Customer Wishlist
  • Management of business rules via Drools
  • Research via SOLR
  • Generation of translations from an Excel sheet dedicated to business teams
  • PreHome dedicated to redirect to the n markets
  • OpenStreetMap for a list of outlets
Your support, your help, comments and advice are welcome.

Next steps, alpha version on December, a beta in early 2013, a 1.0 spring 2013 (after returns):
  • Clean code
  • Optimize the code
  • Write the unit test
  • Define all types of Exception and associated logs
  • Backoffices design
  • Design "remote" Rest for mobile apps
  • Connect the ecommerce project to a CMS like Alfresco by CMIS standard (open CMIS/Rest) to synchronize the two environments
  • Writing Drools rules
  • Brainstorming on "bundles"
  • Brainstorming on "changesets"
  • Exports/Imports ?
  • Brainstorming to allow "hooks/plugins" other than overloading the Spring beans
  • Liferay portlet webapp connected to the "remote" Rest?
  • A long list of things to do, even for a simple ecommerce ...

Frameworks stack:

Spring 3.1.2.RELEASE
Hibernate 4.1.7.Final
ehcache 2.6.0
Velocity 1.7
JQuery 1.7.2
Spring-Batch 2.1.9.RELEASE
Spring-WS 2.1.0.RELEASE
Spring-Security 3.1.2.RELEASE
Boostrap 2.2.1
Wurlf/ScientiaMobile 1.4.2
SOLR 4.0.0-BETA
DROOLS 5.4.0.Final
logback 1.0.6

Tools:

Maven 3.0
MySql (server) 5.1.51
MySql (driver) 5.1.9
Apache-tomcat 7.0.22
Apache 2.2
Java 1.6.0_22

Although I appreciate this framework and not wishing too much different frameworks, i abandoned Vaadin. Backoffices are build with Bootstrap theme / Font Awesome as frontoffices.

I will continue to commit on github, and publish more documentations on the blog.

To Be Continued...

Aucun commentaire:

Publier un commentaire