Skip to content

A highly opinionated and complete template for Spring Boot projects ready for production

Notifications You must be signed in to change notification settings

ericus20/spring-boot-starter

Repository files navigation

Spring Boot Starter

A highly opinionated and complete starter for Spring Boot production ready projects.

Running Instance on Heroku

https://spring-boot-starter.ericopoku.com/

Java CI with Gradle pre-commit

Test Coverage

Coverage Branches

Built With

Features

Sample ongoing project using this template

Entity Relational Diagram (ERD)

img.png

Production Ready Folder Structure

.
├── config                            # Can hold project level configurations like pmd, checkstyle, etc.
├── documents                         # Holds project documentations. Markdown sections, etc.
│   └── images
├── libs                              # Holds special libraries used by the application.
│   └── newrelic
└── src
    ├── integrationTest               # Integration test suites separated from unit tests.
    │   ├── java
    │   │   └── com
    │   │       └── developersboard
    │   │           ├── backend
    │   │           ├── task
    │   │           └── web
    │   └── resources
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── developersboard
    │   │           ├── annotation     # All custom annotations used in the application
    │   │           ├── backend        # Business Logic and Data Access implementation
    │   │           ├── config         # Configuration classes and properties
    │   │           ├── constant       # Constants used in the application
    │   │           ├── enums          # Enums used in the application
    │   │           ├── exception      # Custom exceptions used in the application
    │   │           ├── shared         # Resources like dto, utils, etc. used in the application
    │   │           ├── task           # Scheduled tasks and cron jobs used in the application
    │   │           └── web            # Web layer implementation
    │   ├── resources
    │   │   ├── i18n                   # I18n property files, comes with 'en', 'fr', 'es' and 'zn_CN'
    │   │   ├── static
    │   │   │   ├── css
    │   │   │   ├── fonts
    │   │   │   ├── images
    │   │   │   └── js
    │   │   │       └── form-validation
    │   │   └── templates
    │   │       ├── common
    │   │       │   └── email
    │   │       ├── email
    │   │       ├── error
    │   │       └── user
    │   └── scripts                     # Scripts used in the application as part of docker build, etc.
    └── test
        ├── java
        │   └── com
        │       └── developersboard
        │           ├── backend
        │           ├── config
        │           ├── shared
        │           └── web
        └── resources

Configuration properties required to deploy to Heroku:

img.png

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Credit

TBD

Authors

  • Eric Opoku - Initial work
  • George Anguah - Initial work
  • Matthew Puentes - Initial work
  • Stephen Boakye - Contributor
  • Charles Dimbeng - Contributor
  • Simon Kodua - Contributor

Acknowledgments

  • To Support
  • To learn
  • etc

Notes

  • The following environment variables can be customized as necessary.:
  • The defaults are:

      ADMIN_USERNAME=admin
      ADMIN_PASSWORD=password
      ENCRYPTION_SECRET_SALT=salt
      ENCRYPTION_SECRET_PASSWORD=password
      JWT_SECRET=salt
      SPRING_PROFILES_ACTIVE=dev
      ACCESS_TOKEN_EXPIRATION_IN_MINUTES=5
    
  • The AWS Properties and defaults are:

      AWS_REGION=us-east-1
      AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
      AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
      AWS_S3_BUCKET_NAME=spring-boot-starter
    
  • The Email Properties and defaults are:

      EMAIL_PROTOCOL=smtp
      EMAIL_HOST=smtp.gmail.com
      EMAIL_PORT=587
      EMAIL_USERNAME
      EMAIL_PASSWORD # If using gmail, this must be a 2 step verification enabled app password
    
  • The profiles defined in the application are development, test, integration-test, integration-test-ci, and production to test out production functionalities.
    • Datasource must be provided for production profile for the application to run.

NB: Windows users must use gradlew instead of ./gradlew

Running on Docker (Assuming docker is installed)

  • in the directory where docker-compose.yml file resides, simply run the command - docker-compose up

Stop running application on Docker

  • in the directory where docker-compose.yml file resides, simply run the command - docker-compose down