Skip to content

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