- # Does Zeroth replace Angular?
- # Why TypeScript?
- # What about Angular Universal?
- # Can I use Zeroth with React/Aurelia/Angular1.x/frontend-framework-of-the-month?
- # Why is this so much more complex than a simple Express app?
- # What about Meteor?
- # Do I have to use Docker?
- # Why doesn’t <some amazing feature> exist?
- # Is Zeroth right for me?
- # Why the name Zeroth ?
No. Angular and Zeroth work together in concert. Angular provides the frontend framework for running code in-browser,
and Zeroth provides the backend framework for running code on-server. Zeroth also provides tools for developing both
environments simultaneously, and a design pattern of
ModelStores that allows same-interface retrieval of data structures
whether from the frontend or the backend.
Zeroth does replace the Angular CLI however, as all of the serving is managed with the Zeroth toolchain. Currently, the code generation features have not been replicated, however this is planned for the beta release.
Additionally, a Zeroth application is about 50% plain Angular 2, so it makes a lot of sense to use the same language everywhere.
Zeroth does not conflict with Angular Universal at all, in fact it is planned to integrate Angular Universal into Zeroth. Universal is server side, but it only deals with prerendering the frontend code and maintaining state while it does so. Zeroth on the other hand has full backend capabilities of being a REST API and interacting with other services securely.
Yes! However it may take a little hacking to get it to work smoothly as it does with Angular. Zeroth is designed to be used with an Angular 2
frontend - it shares dependency injection patterns and provides
ModelStores and other components that are designed to
be provided by the injector. Zeroth is primarily a backend framework, and can actually be used as a completely isolated
API server, however you would be missing out on a lot of what makes it great.
If your needs are super simple, keep it simple; Zeroth won’t be right for you. If you think your application is going to grow and/or you want to be able to share utilities and data structures between the front and backend, Zeroth is an excellent choice.
Zeroth is great for teams and enterprise-scale applications. With that comes a little more development pipeline overhead, but with the huge benefits of robust APIs and future proof design patterns.
Meteor is definitely a competitor to Zeroth - they are both isomorphic full-stack frameworks that seek to provide the kitchen-sink solution to developing an app.
Zeroth differs from Meteor in a number of ways:
- Zeroth is Angular first - it is built upon the design principles outlined by Angular, and uses the Angualar dependency injector pattern natively. Meteor is it’s own thing, and implementing Angular into a Meteor application is doable, but it is not a native and integrated experience like it is with Zeroth
- Meteor uses Remote Procedure Call (called methods in their nomenclature) While this may be a suitable choice for the specific implementation of Meteor, it encourages coupling between the frontend and backend. With a Zeroth application, the API is completely decoupled from the frontend via the REST interface, which means a Zeroth application can easily support other clients like native mobile, desktop etc.
- Meteor is NoSQL first, with other database patterns supported later. Zeroth is relational database first. While subtle, this difference informs a lot of the design decisions as a framework’s design tends to conforms to it’s underlying data structure.
No. Docker is recommended especially for local development, as the ease with which you can create and destroy services like postgres databases, caches, elasticsearch stores etc makes it an unbeatable workflow. If you aren’t a fan of Docker, you can always manage your own local services.
For deployment, Docker is still not required. Once compiled there is just one directory for the server distribution, and another for the browser dist. You can deploy that however you want, be it pushing to Heroku or putting it on a Raspberry Pi - Zeroth won’t constrain your deployment options.
You haven’t built it yet! But seriously, it may be planned. Take a look at the roadmap and see if the feature is listed there, and if not feel free to open an issue to discuss. Be sure to take a look at the contribution guide.
If you are working either individually or within a team and are frustrated with the constant duplication of model structure definition, validation, relationships, API route definitions, Zeroth would be a great choice, as that is one of the primary goals - to stop writing code twice (or more!).
Zeroth is the ordinal number before “first”. The name was chosen as the Zeroth stack should come before your first lines of business logic - it is all the work put in before your effort is spent.
See also Isaac Asimov’s Zeroth Law of Robotics:
A robot may not injure humanity, or, by inaction, allow humanity to come to harm.
A law that should apply to software of all forms, not just robotics
Have another question? Feel free to post an issue on Github.