# Entity Compiler
The Entity Compiler provides a language to model entities in your enterprise application along with a compiler and
template engine to synthesize code responsible for the storage, transfer and management of data relating to those
entities.
Entities are specified in an implementation agnostic way, you then apply templates that synthesize the
entities to code. You can write your own templates or use templates shared by others via a Github repository.
## Documentation
Documentation on the compiler and template language can be found on its [github site](https://github.com/entityc/entity-compiler),
specifically in its [docs](https://github.com/entityc/entity-compiler/tree/main/docs) directory. It reads more like
a reference manual than a document for learning. A better place to start for learning are the tutorials.
## Tutorials
The best way to understand how the Entity Compiler works is to check out the
[tutorials](https://github.com/entityc/ec-tutorials). There are currently two tutorials:
|Tutorial|Description|
| ------ | --------- |
| [Entity Compiler](https://github.com/entityc/ec-tutorials/tree/main/EntityCompiler) | Gives you the basics of the Entity Compiler, both its entity language and template engine. |
| [Tutorial Microservice](https://github.com/entityc/ec-tutorials/tree/main/TutorialMicroservice) | Demonstrates the potential of the Entity Compiler by building an entire microservice along with an Web Admin Console and student website.|
## Libraries
The following libraries are available that support the Entity Compiler. Each has their own Github repository:
|
Library
| Description |
|:----------------- | ----------- |
| [ec-std-lib](https://github.com/entityc/ec-std-lib) | The intention of this library is to serve as a base set of domains, languages, units, etc. that can be used with most applications of the Entity Compiler. They attempt to be language agnostic and can help to provide some standardization at a basic level.|
| [ec-springboot-lib](https://github.com/entityc/ec-springboot-lib) | This library contains templates and domains specific for building Spring Boot microservices. |
## About
The Entity Compiler was created by Bob Garner. Throughout his career, both as a software developer and a chip designer,
he has tried to improve productivity by creating tools that elevate the developer above all the tedious stuff so they
can concentrate on what is really important. He found a huge gap between the different parts of a large enterprise
application when it comes to entities. So often, each independent team (server, web and mobile) develop in silos and
only share information about the core entities in their applications via messaging, email and maybe formal documentation.
This is not only inefficient but very error prone.
This has lead him to create the Entity Compiler which puts entities at the center of enterprise app, along with a
powerful template engine so that each team can pull from the *same* entity definitions and render code unique to
their domain.