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...