DISCLAIMER: Expressed views on this blog are my own.
Celice is the Entity Component System (ECS). It is bundled up with a game engine driven by game states and systems. To align Celice with Entity Component Systems in javascript, Entities are just objects, Components attach data to Entities and Systems modify entities' component data. Game states store data related to the state and provide that information to the Systems in that state. At least this is my understanding of how the ECS interacts with a game, so far.
The secondary intention with Celice is to bring a modular game engine where you can pick and choose what systems you want in your states and easily include them without any modification to the internals and also make your own systems and integrate them into your states easily. Heck, if you want to share your game systems with others, that would be possible too. 3D games? Build your system and necessary components and put it into the state.
I intend to be strict about providing inline documentation in code and providing tests for Q/A. This means any contributions will have to be strict about these. If you fix something, then you must provide inline comments specifying the problem and how it solves it. Terse and Verbose comments are not acceptable, there needs to be enough to be able to come back to the issue later and understand what is going on.
I've always wanted to create my own 2D game, so that is where I am headed with Celice.