/jcrud

Spring Booted Django admin clone

Primary LanguageJava

jcrud - Spring Booted Django admin clone - https://github.com/alexpdp7/jcrud

This is a little experiment that probably will not go anywhere. I love
Django's admin, and it annoys me to no end that there doesn't exist
anything else like it, especially for Java.

I'm a big fan of relational databases, and defining your entities in
anything else than SQL annoys me too, so jcrud will rely on the metadata
already found in your database (using SchemaCrawler).


REQUIREMENTS

* Java 8
* Spring 4 (webmvc, jdbc)
* Thymeleaf 2.1.3 (although you should be able to override the default
  templates with any other template engine supported by Spring Boot)
* jQuery, jQuery UI 1.11 (bundled as webjars)

Sample apps use Spring Boot 1.1.1, and you should probably use it too-
we adopt many of its autoconfiguration properties and if you don't
want to use it, you will need to adapt many things.


GUIDE

Just mvn:install jcrud to build and install it. The rest of projects are
sample applications, once jcrud is installed, you should be able to run:

$ mvn spring-boot:run

from their directory to run them, check their READMEs for details. Most
samples use H2 and get an automatically configured transient database
Spring Boot-style so you shouldn't need to do anything else.

You should be able to just add some TableControllers to an
ApplicationContext, pointing at your tables and go. Take a look at petclinic
for the basic structure.


TODO

* Search and filtering

* Non-crud operations

* Relational patterns

We should support UI representation of:

 * Primary foreign keys: as "polymorphic" forms

And support:

 * Composite primary keys


* Security

It should be possible to define fine-grained (table, row and column-level)
permissions.  We should include a sample relational model (role, user,
group, permission) with nested role support, but also allow total
customization and stuff such as LDAP integration.

This should include stuff like workflows ("state" fields possible values
depend on the current state, permissions of the user and other parameters).


* Auditing

We should include database-level auditing of changes integrated in the
frontend


* Multiple frontends

At the moment we aim for a progressively-enhanced HTML UI, but we should be
able to add different frontends (mobile apps, desktop apps, etc.) with
minimal work, by exposing the backend functionality via RPC.