Skip to content
Merged

merge #120

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/ISSUE_TEMPLATE/custom.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
name: Custom issue template
about: Describe this issue template's purpose here.
title: ''
labels: ''
assignees: ''

---


93 changes: 26 additions & 67 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,81 +1,40 @@
simpleworklist
==============
# simpleworklist

Your Todo List for Getting Things Done

Software-Stack: Spring-Boot, JPA, Spring MVC, Thymeleaf, Twitter Bootstrap, jQuery, HTML5

Status
------
![Java CI with Maven](https://github.com/Spring-Framework-Java-Apps/simpleworklist/workflows/Java%20CI%20with%20Maven/badge.svg?branch=master)

Getting Things Done
-------------------
Your Todo List for Getting Things Done

## Getting Things Done
GTD® and Getting Things Done® are registered trademarks of the David Allen Company.
SimpleWorklist is not affiliated with or endorsed by the David Allen Company.

Developer Reminder
------------------
* Create serialVersionUID for Classes with "implements Serializable": use the JDK tool “serialver“


Drag and Drop
-------------
* https://jqueryhouse.com/jquery-drag-and-drop-plugins/
* https://mdbootstrap.com/plugins/jquery/draggable/#introduction
* https://github.com/Shopify/draggable/tree/master/examples/src/content/Droppable/UniqueDropzone
* https://github.com/Shopify/draggable#documentation
* https://jqueryhouse.com/jquery-drag-and-drop-plugins/
* https://shopify.github.io/draggable/examples/simple-list.html
* https://www.elated.com/drag-and-drop-with-jquery-your-essential-guide/
* https://medium.com/@okandavut/using-jquery-ui-drag-drop-64a24e75e805

Shortcuts
---------
* https://fontawesome.com/icons?d=gallery&m=free
* https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html
* https://ckeditor.com/docs/ckeditor4/latest/guide/dev_installation.html
* http://impossibl.github.io/pgjdbc-ng/docs/current/user-guide/#drivers
* https://devcenter.heroku.com/articles/getting-started-with-java
* https://devcenter.heroku.com/articles/java-support#specifying-a-java-version

# java-getting-started

A barebones Java app, which can easily be deployed to Heroku.

This application supports the [Getting Started with Java on Heroku](https://devcenter.heroku.com/articles/getting-started-with-java) article - check it out.
## Up and Running
A Java Web App, which can easily be deployed to Heroku.

[![Deploy to Heroku](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy)

## Running Locally

Make sure you have Java and Maven installed. Also, install the [Heroku CLI](https://cli.heroku.com/).

```sh
$ git clone https://github.com/heroku/java-getting-started.git
$ cd java-getting-started
$ mvn install
$ heroku local:start
```

Your app should now be running on [localhost:5000](http://localhost:5000/).

If you're going to use a database, ensure you have a local `.env` file that reads something like this:

```
JDBC_DATABASE_URL=jdbc:postgresql://localhost:5432/java_database_name
```
## URLs
### Development
* Heroku Deployment: [simpleworklist.herokuapp.com/](https://simpleworklist.herokuapp.com/)
* For Developers: [localhost:5000](http://localhost:5000/)
### Info
* [spring-framework-java-apps.github.io/simpleworklist](http://spring-framework-java-apps.github.io/simpleworklist/)

## Deploying to Heroku
### Github Shortcuts
* [Projects](https://github.com/Spring-Framework-Java-Apps/simpleworklist/projects)
* [Milestones](https://github.com/Spring-Framework-Java-Apps/simpleworklist/milestones)
* [Issues](https://github.com/Spring-Framework-Java-Apps/simpleworklist/issues)
* [Releases](https://github.com/Spring-Framework-Java-Apps/simpleworklist/releases)
* [Branches](https://github.com/Spring-Framework-Java-Apps/simpleworklist/branches)
* [CI](https://github.com/Spring-Framework-Java-Apps/simpleworklist/actions)

```sh
$ heroku create
$ git push heroku master
$ heroku open
```
## Requirements

## Documentation
### Functional Requirements
[Functional Requirements](etc/requirements/Requirements.md)

For more information about using Java on Heroku, see these Dev Center articles:
### Nonfunctional Requirements
[Nonfunctional Requirements](etc/requirements/Nonfunctional_Requirements.md)

- [Java on Heroku](https://devcenter.heroku.com/categories/java)
## Development
* [Changelog](etc/Changelog.md)
2 changes: 2 additions & 0 deletions etc/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Changelog

61 changes: 61 additions & 0 deletions etc/development/Development.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Development

## Developer Reminder
* Create serialVersionUID for Classes with "implements Serializable": use the JDK tool “serialver“

## Frontend

### Drag and Drop
* [jquery-drag-and-drop-plugins](https://jqueryhouse.com/jquery-drag-and-drop-plugins/)
* [jquery draggable](https://mdbootstrap.com/plugins/jquery/draggable/#introduction)
* [shopify draggable: UniqueDropzone](https://github.com/Shopify/draggable/tree/master/examples/src/content/Droppable/UniqueDropzone)
* [shopify draggable: documentation](https://github.com/Shopify/draggable#documentation)
* [shopify draggable: example](https://shopify.github.io/draggable/examples/simple-list.html)
* [drag-and-drop-with-jquery-your-essential-guide](https://www.elated.com/drag-and-drop-with-jquery-your-essential-guide/)
* [using-jquery-ui-drag-drop](https://medium.com/@okandavut/using-jquery-ui-drag-drop-64a24e75e805)

### Shortcuts
* [fontawesome](https://fontawesome.com/icons?d=gallery&m=free)
* [ckeditor](https://ckeditor.com/docs/ckeditor4/latest/guide/dev_installation.html)

### Templates
* [thymeleaf](https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html)

## Backend
* [Alternative PostgreSQL JDBC 4.2* Driver](http://impossibl.github.io/pgjdbc-ng/docs/current/user-guide/#drivers)

## Heroku
### java
* [heroku: getting-started-with-java](https://devcenter.heroku.com/articles/getting-started-with-java)
* [heroku: java-support java-version](https://devcenter.heroku.com/articles/java-support#specifying-a-java-version)

### Running Locally
TBD:
Make sure you have Java and Maven installed. Also, install the [Heroku CLI](https://cli.heroku.com/).

```sh
$ git clone https://github.com/heroku/java-getting-started.git
$ cd java-getting-started
$ mvn install
$ heroku local:start
```

Your app should now be running on [localhost:5000](http://localhost:5000/).

If you're going to use a database, ensure you have a local `.env` file that reads something like this:

```
JDBC_DATABASE_URL=jdbc:postgresql://localhost:5432/java_database_name
```

#### Deploying to Heroku

```sh
$ heroku create
$ git push heroku master
$ heroku open
```

#### Documentation
For more information about using Java on Heroku, see these Dev Center articles:
* [Java on Heroku](https://devcenter.heroku.com/categories/java)
67 changes: 67 additions & 0 deletions etc/development/HOWTO.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
Howto Reminder

## github
* [Issues](https://github.com/BloodMoneyApp/bloodmoney/issues)
* [Projects](https://github.com/BloodMoneyApp/bloodmoney/projects)
* [Milestones](https://github.com/BloodMoneyApp/bloodmoney/milestones)
* [Releases](https://github.com/BloodMoneyApp/bloodmoney/releases)

## Development
* [Changelog](etc/RELEASES.md)
* [Todo](etc/TODO.md)
* [Howto](etc/HOWTO.md)


## 3rd Party Software
### Howto
* [Spring dependency-management-plugin](https://docs.spring.io/dependency-management-plugin/docs/current/reference/html/)
* [Example on github: heroku and Gradle](https://github.com/heroku/gradle-getting-started/blob/master/build.gradle)
* [Howto: Using lombok](https://projectlombok.org/setup/overview)
* [Howto: Gradle Docker Compose](https://bmuschko.com/blog/gradle-docker-compose/)

### Documentation
* [spring-boot](https://spring.io/projects/spring-boot)
* [spring-data-jpa](https://spring.io/projects/spring-data-jpa)
* [spring-framework](https://spring.io/projects/spring-framework)
* [spring-framework Data Access](https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/data-access.html)
* [spring-framework WebMVC](https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html)
* [spring-boot reference](https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/html/)
* [spring-boot appendix-application-properties](https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/html/appendix-application-properties.html#common-application-properties)
* [spring-boot api](https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/api/)
* [spring-data-jpa](https://docs.spring.io/spring-data/jpa/docs/2.2.5.RELEASE/reference/html/#reference)

### Gradle Plugins
* [org.springframework.boot](https://plugins.gradle.org/plugin/org.springframework.boot)
* [org.springframework.cloud.contract](https://plugins.gradle.org/plugin/org.springframework.cloud.contract)
* [io.spring.dependency-management](https://plugins.gradle.org/plugin/io.spring.dependency-management)
* [org.asciidoctor.jvm.convert](https://plugins.gradle.org/plugin/org.asciidoctor.jvm.convert)
* [com.avast.gradle.docker-compose](https://plugins.gradle.org/plugin/com.avast.gradle.docker-compose)
* [org.liquibase.gradle](https://plugins.gradle.org/plugin/org.liquibase.gradle)

### Github Repos
* [spring-cloud-contract](https://github.com/spring-cloud/spring-cloud-contract)
* [dependency-management-plugin](https://github.com/spring-gradle-plugins/dependency-management-plugin)
* [asciidoctor-gradle-plugin](https://github.com/asciidoctor/asciidoctor-gradle-plugin)
* [gradle-docker-compose-plugin](https://github.com/avast/gradle-docker-compose-plugin)
* [liquibase-gradle-plugin](https://github.com/liquibase/liquibase-gradle-plugin)

## Database and JPA
### DB Datatypes
* [H2 Datatypes](http://www.h2database.com/html/datatypes.html)
* [PostgreSQL Datatypes](https://www.postgresql.org/docs/11/datatype.html)
* LocalDateTime and TimeZone: TODO

### UUID and Optimistic Locking
* UUID: TODO

### Database Schema Evolution with Spring Boot JPA
* TODO
* org.flywaydb:flyway
* org.liquibase:liquibase https://www.liquibase.org/documentation/maven/index.html


## Frontend with webjars

### updating webjar Versions:
* change Version in build.gradle "ext" (Line 40)
* change Version in src/main/resources/templates/layout/page.html Section head.tw-head and div.tw-footer (Lines 16, 98)
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
spring.session.store-type=jdbc
spring.datasource.url=jdbc:postgresql://localhost:5432/simpleworklist
spring.datasource.username=simpleworklist
spring.datasource.password=simpleworklistpwd
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=create-drop
#spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.hibernate.dialect=org.hibernate.dialect.PostgreSQL95Dialect
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
spring.thymeleaf.cache=false
org.woehlke.simpleworklist.user.strengthBCryptPasswordEncoder=10
org.woehlke.simpleworklist.mail.host=********
org.woehlke.simpleworklist.mail.port=465
org.woehlke.simpleworklist.mail.username=********
org.woehlke.simpleworklist.mail.password=********
org.woehlke.simpleworklist.mail.smtp.auth=true
org.woehlke.simpleworklist.mail.smtp.sslEnable=true
org.woehlke.simpleworklist.mail.smtp.socketFactoryPort=465
org.woehlke.simpleworklist.mail.smtp.socketFactoryClass=javax.net.ssl.SSLSocketFactory
org.woehlke.simpleworklist.mvc.controllerPageSize=10
org.woehlke.simpleworklist.registration.maxRetries=5
org.woehlke.simpleworklist.registration.ttlEmailVerificationRequest=86400000
org.woehlke.simpleworklist.registration.urlHost=localhost:8080
org.woehlke.simpleworklist.registration.mailFrom=********
spring.session.store-type=jdbc
spring.datasource.url=jdbc:postgresql://localhost:5432/simpleworklist
spring.datasource.username=simpleworklist
spring.datasource.password=simpleworklistpwd
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=create-drop
#spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.hibernate.dialect=org.hibernate.dialect.PostgreSQL95Dialect
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
spring.thymeleaf.cache=false

org.woehlke.simpleworklist.user.strengthBCryptPasswordEncoder=10

org.woehlke.simpleworklist.mail.host=********
org.woehlke.simpleworklist.mail.port=465
org.woehlke.simpleworklist.mail.username=********
org.woehlke.simpleworklist.mail.password=********
org.woehlke.simpleworklist.mail.smtp.auth=true
org.woehlke.simpleworklist.mail.smtp.sslEnable=true
org.woehlke.simpleworklist.mail.smtp.socketFactoryPort=465
org.woehlke.simpleworklist.mail.smtp.socketFactoryClass=javax.net.ssl.SSLSocketFactory

org.woehlke.simpleworklist.mvc.controllerPageSize=10

org.woehlke.simpleworklist.registration.maxRetries=5
org.woehlke.simpleworklist.registration.ttlEmailVerificationRequest=86400000
org.woehlke.simpleworklist.registration.urlHost=localhost:8080
org.woehlke.simpleworklist.registration.mailFrom=********
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
spring.session.store-type=jdbc
spring.datasource.url=jdbc:postgresql://localhost:5432/simpleworklisttest
spring.datasource.username=simpleworklist
spring.datasource.password=simpleworklistpwd
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=create-drop
#spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.hibernate.dialect=org.hibernate.dialect.PostgreSQL95Dialect
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
spring.thymeleaf.cache=false
org.woehlke.simpleworklist.user.strengthBCryptPasswordEncoder=10
org.woehlke.simpleworklist.mail.host=********
org.woehlke.simpleworklist.mail.port=465
org.woehlke.simpleworklist.mail.username=********
org.woehlke.simpleworklist.mail.password=********
org.woehlke.simpleworklist.mail.smtp.auth=true
org.woehlke.simpleworklist.mail.smtp.sslEnable=true
org.woehlke.simpleworklist.mail.smtp.socketFactoryPort=465
org.woehlke.simpleworklist.mail.smtp.socketFactoryClass=javax.net.ssl.SSLSocketFactory
org.woehlke.simpleworklist.mvc.controllerPageSize=10
org.woehlke.simpleworklist.registration.maxRetries=5
org.woehlke.simpleworklist.registration.ttlEmailVerificationRequest=86400000
org.woehlke.simpleworklist.registration.urlHost=localhost:8080
org.woehlke.simpleworklist.registration.mailFrom=********
spring.session.store-type=jdbc
spring.datasource.url=jdbc:postgresql://localhost:5432/simpleworklisttest
spring.datasource.username=simpleworklist
spring.datasource.password=simpleworklistpwd
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=create-drop
#spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.hibernate.dialect=org.hibernate.dialect.PostgreSQL95Dialect
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
spring.thymeleaf.cache=false

org.woehlke.simpleworklist.user.strengthBCryptPasswordEncoder=10

org.woehlke.simpleworklist.mail.host=********
org.woehlke.simpleworklist.mail.port=465
org.woehlke.simpleworklist.mail.username=********
org.woehlke.simpleworklist.mail.password=********
org.woehlke.simpleworklist.mail.smtp.auth=true
org.woehlke.simpleworklist.mail.smtp.sslEnable=true
org.woehlke.simpleworklist.mail.smtp.socketFactoryPort=465
org.woehlke.simpleworklist.mail.smtp.socketFactoryClass=javax.net.ssl.SSLSocketFactory

org.woehlke.simpleworklist.mvc.controllerPageSize=10

org.woehlke.simpleworklist.registration.maxRetries=5
org.woehlke.simpleworklist.registration.ttlEmailVerificationRequest=86400000
org.woehlke.simpleworklist.registration.urlHost=localhost:8080
org.woehlke.simpleworklist.registration.mailFrom=********
Loading