beetRoot is a slim and rapid Java web-development as well as a full & secure client-server framework ready to run! If you know CakePHP for web development, you'll like beetRoot. It is based on the same principles and comes with a full CRUD generator generating all views, the model specification and controllers (handlers in beetRoot's terminology) based on the database model! The client-server framework supports encrypted communication (SSL) as well as HTTP/HTTPS-tunneling, provides a file download and upload interface and it can be extended with own (distributed) modules.
Note that the client-server framework is not documented in this document; it focuses only on the web development part.
The Web framework is shipped with the following features ready to use:
- Add, edit, view, list and delete functionality for entities
- Bean support with transient and unique fields
- Language management
- Exchangeable logging
- File up- and download
- Full MIME types control
- 2-Factor-Authentication
- Password reset mechanism
- Extendable user settings
- Dark theme and theme support
- Interface for SMS notifications
- Mailing inclusive mail templates
- URL routing with language support
- File caching (resources and templates)
- Easy to understand HTML template engine
- Argon2/PBKPD2 password encryption
- HTTPS protocol and TLS for mail if configured
- User roles & access control on controller level
- User session are stored when servers are stopped
- Entities can be served through the JSON REST API
- Logging implementations other than log4j2 supported
- Full CRUD-Generator PLANT for views, models and handlers
- One-to-many database relationships are fully applied in MVC layers
- Tested on Apache Tomcat 9, Eclipse Jetty 10 and Oracle Weblogic 14
- Standard CSRF mechanism as well as obfuscated CRUD IDs within HTTP requests
- Database connection pooling (HikariCP, with internal and external JNDI data sources)
- Runs stand-alone as well as in common servlet containers such as Apache Tomcat and Jetty on URL root path as well behind a servlet-path without modifications of HTML templates, etc.
- Secure client-server communication, if beetRoot is installed in a servlet container apart from beetRoot server and if there's need for such communication to steer backend processes
- Hierarchical resource loader; e.g. German language requested, if not found, use configured default language, then use no language at all; "lookup till you find something usable" is the algorithm for everything. As well, load resources from file system (first), then as a resource within packages (jar, war) if not found beforehand.
- And some more stuff...
beetRoot is released under the Apache License 2.0 License.
Links
- More beetRoot: https://products.autumo.ch/beetroot/overview
- GitHub Repository: https://github.com/autumoswitzerland/autumo-beetroot