CoreStore: A standard library for e-commerce based on an optimized Magento 2 database structure. ⚠️ Under full development. DON'T use/test it! ⚠️
Switch branches/tags
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
_backend Adjust code to new config package API May 7, 2018
_codegen Update package name from `cspkg` to `pkg`. Nov 12, 2017
authorization Update package name from `cspkg` to `pkg`. Nov 12, 2017
backend Update package name from `cspkg` to `pkg`. Nov 12, 2017
bundle Update package name from `cspkg` to `pkg`. Nov 12, 2017
catalog catalog: Add SQL CTE for hierarchical tree queries in categories Sep 19, 2018
cataloginventory Update package name from `cspkg` to `pkg`. Nov 12, 2017
codegen codegen: Add ideas Aug 28, 2017
config config: Add expiration to Path but depends on the backend Nov 13, 2018
customer Update package name from `cspkg` to `pkg`. Nov 12, 2017
directory config/modification: Add package for string manipulation / encryption Aug 7, 2018
eav eav: add todo for data import Sep 18, 2018
email email: Add todo Jul 9, 2018
i18n i18n: Add more TODOs and ideas Apr 1, 2018
locale Update package name from `cspkg` to `pkg`. Nov 12, 2017
net net/.../: Remove package containable, WIP Dec 5, 2018
payment payment: Add todo for Aug 19, 2017
sql sql/ddl: Add Column.IsBlobDataType Dec 12, 2018
storage storage/null: Add int8,16,32 to prevent data loss Dec 8, 2018
store store/scope: Refactor to use new assert package Nov 22, 2018
sync sync/bgwork: Remove duplicate content Apr 10, 2018
tax Update package name from `cspkg` to `pkg`. Nov 12, 2017
testdata Update database schemas Dec 13, 2015
user Update package name from `cspkg` to `pkg`. Nov 12, 2017
util util/assert: ExactlyLength recursive behaviour Dec 5, 2018
.gitignore Update package name from `cspkg` to `pkg`. Nov 12, 2017
.travis.yml travis: Update to Go "1.10" Apr 1, 2018 Add contributing Jun 9, 2015
CONTRIBUTORS Update Copyright Notice regarding blog post of Ben Balter Jun 9, 2015
LICENSE Merged repositories Mar 11, 2015
Makefile Update lint/makefile Nov 8, 2018 storage/objcache: Use youtube/vitess LRU cache, dump ccache Nov 8, 2018
appveyor.yml Update package name from `cspkg` to `pkg`. Nov 12, 2017 Update package name from `cspkg` to `pkg`. Nov 12, 2017
doc.go Update package name from `cspkg` to `pkg`. Nov 12, 2017
lint Update lint/makefile Nov 8, 2018
wercker.yml Wercker: box: google/golang Nov 28, 2015

CoreStore: A standard library for e-commerce | WIP (Work in Progress)

based on an optimized Magento 2 database structure.

Build Status wercker status Appveyor Build status GoDoc Join the chat at goreportcard

Magento is a trademark of MAGENTO, INC..

Min. Go Version: 1.11


To properly use the CoreStore packages, some environment variables must be set before running go generate. (TODO)

Required settings

CS_DSN the environment variable for the MySQL connection.

$ export CS_DSN='magento2:magento2@tcp(localhost:3306)/magento2'
$ go get
$ export CS_DSN='see previous'
$ cd $GOPATH/src/
$ xgo run xcodegen/tableToStruct/*.go


Setup database for Magento 2 and fill them with the provided testdata.

Create a DSN env var CS_DSN and point it to Magento 2 database. Run the tests.


If you find an entry in the source like TODO(CS) that means you can ask CS to get more information about how to implement and what to fix if the context of the todo description isn't understandable.

  • Create Magento 2 modules to setup test database and test Magento system.


  • single repo. CoreStore is a single repo. That means things can be changed and rearranged globally atomically with ease and confidence.

  • no backwards compatibility. CoreStore makes no backwards compatibility promises. If you want to use CoreStore, vendor it. And next time you update your vendor tree, update to the latest API if things in CoreStore changed. The plan is to eventually provide tools to make this easier.

  • forward progress because we have no backwards compatibility, it's always okay to change things to make things better. That also means the bar for contributions is lower. We don't have to get the API 100% correct in the first commit.

  • no Go version policy CoreStore packages are usually built and tested with the latest Go stable version. However, CoreStore has no overarching version policy; each package can declare its own set of supported Go versions.

  • code review contributions must be code-reviewed.

  • CLA compliant contributors must agree to the CLA.

  • docs, tests, portability all code should be documented in the normal Go style, have tests, and be portable to different operating systems and architectures. We'll try to get builders in place to help run the tests on different OS/arches. For now we have Travis at least.


Please have a look at the contribution guidelines That document is an idea.


Some packages have been fully refactored but the initial idea has been extracted from the geniuses listed below:

Name Package License
Steve Francia util/conv MIT Copyright (c) 2014
Martin Angers and Contributors. ctxthrottled The MIT License (MIT) 2014
Dave Cheney util/errors The MIT License (MIT) 2015
Jad Dittmar finance aka. money Copyright (c) 2011
Google Inc youtube/vitess\sqlparser Copyright 2012 BSD Style
Olivier Poitrey ctxmw.WithAccessLog & CORS Copyright (c) 2014-2015 MIT License
Dave Grijalva csjwt Copyright (c) 2012 MIT License
Uber Technologies, Inc. log Copyright (c) 2016 MIT License
2013 The Go Authors singleflight Copyright (c) 2013 BSD Style, Oleg Sklyar, contributors. util/shortid MIT License Copyright (c) 2016,
Carl Jackson ( (Goji) net/responseproxy Copyright (c) 2014, 2015, 2016
Greg Roseberry, 2014; Patrick O'Brien, 2016 util/null BSD Copyright (c) 2014, 2015, 2016
The Go-MySQL-Driver Authors storage/null/time_mysql.go Mozilla Public License, v. 2.0, Copyright 2012
siddontang storage/binlogsync MIT Copyright (c) 2014
siddontang storage/myreplicator MIT Copyright (c) 2014
Tace De Wolf util/byteconv MIT Copyright (c) 2015
Copyright 2013 The Camlistore Authors util/byteconv Apache 2.0
Copyright 2013 Google Inc. storage/lru Apache 2.0
Alex Saskevich util/validation MIT Copyright (c) 2014
Mat Ryer and Tyler Bunnell util/assert or Copyright (c) 2012 - 2013
Google Youtube storage/lru Apache License, Version 2.0


CoreStore is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.


Cyrill Schumacher - PGP Key