All Projects → gtiwari333 → spring-boot-web-application-sample

gtiwari333 / spring-boot-web-application-sample

Licence: other
Real World Spring Boot Web Application Example with tons of ready to use features

Programming Languages

java
68154 projects - #9 most used programming language
HTML
75241 projects
scala
5932 projects
groovy
2714 projects
CSS
56736 projects
javascript
184084 projects - #8 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to spring-boot-web-application-sample

Mybatis Spring Boot Jpetstore
A sample web application built on MyBatis 3, Spring Boot and Thymeleaf 3.
Stars: ✭ 75 (-47.55%)
Mutual labels:  thymeleaf, spring-security, spring-mvc
Spring Boot Shopping Cart
Simple shopping cart web app made using Spring Boot + Thymeleaf
Stars: ✭ 85 (-40.56%)
Mutual labels:  thymeleaf, spring-security, spring-mvc
Eshop Soa
EShop基于Dubbo实现SOA服务化拆分,并基于RocketMQ解决了分布式事务(新版SpringBootSOASkeleton)
Stars: ✭ 65 (-54.55%)
Mutual labels:  thymeleaf, spring-security, spring-mvc
project-tracking-system-backend-app
Enterprise project tracker, tracks commits done by employees after getting assigned to a couple of projects by their managers
Stars: ✭ 62 (-56.64%)
Mutual labels:  thymeleaf, spring-security, spring-mvc
Spring Boot Blog
Simple blog web app made using Spring Boot + Thymeleaf
Stars: ✭ 121 (-15.38%)
Mutual labels:  thymeleaf, spring-security, spring-mvc
Spring-Boot-2
Spring Boot 2.x examples
Stars: ✭ 33 (-76.92%)
Mutual labels:  thymeleaf, spring-security, spring-mvc
Spring Boot Enterprise Application Development
Spring Boot Enterprise Application Development.《Spring Boot 企业级应用开发实战》
Stars: ✭ 261 (+82.52%)
Mutual labels:  thymeleaf, spring-security, spring-mvc
spring-boot-shop-sample
My first web application using Spring Boot framework.
Stars: ✭ 66 (-53.85%)
Mutual labels:  thymeleaf, spring-security, spring-mvc
BusinessInfrastructurePlatformGroupVersion
A java web project based on Spring Boot using MySQL, Spring MVC, Hibernate, Spring Data JPA, Query DSL, Lombok, Logback, etc.
Stars: ✭ 90 (-37.06%)
Mutual labels:  thymeleaf, spring-security, spring-mvc
Springbootunity
rabbitmq、redis、scheduled、socket、mongodb、Swagger2、spring data jpa、Thymeleaf、freemarker etc. (muti module spring boot project) (with spring boot framework,different bussiness scence with different technology。)
Stars: ✭ 845 (+490.91%)
Mutual labels:  thymeleaf, spring-mvc
Spring Mvc Thymeleaf Crud
Spring MVC CRUD Application with Thymeleaf, HTML5, CSS3 and Bootstrap
Stars: ✭ 14 (-90.21%)
Mutual labels:  thymeleaf, spring-mvc
rate-my-cat
Sample application for the book "Mastering Software Testing with JUnit 5"
Stars: ✭ 23 (-83.92%)
Mutual labels:  thymeleaf, spring-mvc
Javaquarkbbs
基于Spring Boot实现的一个简易的Java社区
Stars: ✭ 755 (+427.97%)
Mutual labels:  thymeleaf, spring-mvc
Favorites Web
云收藏 Spring Boot 2.X 开源项目
Stars: ✭ 4,485 (+3036.36%)
Mutual labels:  thymeleaf, webjars
Admin
基于Spring Boot/Spring Security/thymeleaf的通用后台管理系统
Stars: ✭ 411 (+187.41%)
Mutual labels:  thymeleaf, spring-security
jcart
JCart is a simple e-commerce application built with Spring.
Stars: ✭ 59 (-58.74%)
Mutual labels:  thymeleaf, spring-mvc
Blog
一款简洁响应式博客系统
Stars: ✭ 72 (-49.65%)
Mutual labels:  thymeleaf, spring-security
Curso Sistemas Web Com Spring Javascript Bootstrap
Stars: ✭ 74 (-48.25%)
Mutual labels:  thymeleaf, spring-mvc
Spring Cloud Microservices Development
Spring Cloud Microservices Development.《Spring Cloud 微服务架构开发实战》
Stars: ✭ 106 (-25.87%)
Mutual labels:  thymeleaf, spring-mvc
spring-boot-keycloak-angular
Securing a Angular frontend and a Spring Boot backend with Keycloak and Spring Security
Stars: ✭ 40 (-72.03%)
Mutual labels:  keycloak, spring-security

A Spring Boot Web Application Sample with tons of ready-to-use features. This can be used as starter for bigger projects.

Variations

App Architecture:

Foo

Included Features/Samples

MicroService:

  • Exposing and implementing Open Feign clients
  • Spring Cloud Contract (WIP)

Spring MVC:

  • Public and internal pages
  • MVC with thymeleaf templating
  • Live update of thymeleaf templates for local development
  • HTML fragments, reusable pagination component using Thymeleaf parameterized fragments
  • webjar - bootstrap4 + jquery
  • Custom Error page
  • Request logger filter
  • Swagger API Docs with UI ( http://localhost:8081/swagger-ui.html)
  • @RestControllerAdvice, @ControllerAdvice demo
  • CRUD UI + File upload/download
  • favicon handler

Security:

  • Account management
  • Spring Security
  • User/User_Authority entity and repository/services
    • login, logout, home pages based on user role
  • Domain object Access security check on update/delete using custom PermissionEvaluator
  • private pages based on user roles
  • public home page -- view all notes by all
  • Limit max number of record in a paged request

Persistence/Search:

  • Data JPA with User/Authority/Note/ReceivedFile entities, example of EntityGraph
  • MySQL or any other SQL db can be configured for prod/docker etc profiles
  • (in old code) H2 db for local, Console enabled for local ( http://localhost:8081/h2-console/, db url: jdbc:h2:mem:testdb, username: sa)
  • jOOQ integration with code generation based on JPA entity
  • Liquibase database migration

Test:

  • Unit/integration with JUnit 5, Mockito and Spring Test
  • Tests with Spock Framework (Groovy 4, Spock 2)
  • e2e with Selenide, fixtures. default data generated using Spring
  • Load test with Gatling/Scala
  • Architecture tests using ArchUnit
  • file upload/download e2e test with Selenide
  • TestContainers to perform realistic integration test

Misc:

  • Code Generation: lombok, mapstruct
  • Message Queue using ActiveMQ Artemis
  • Approval/flagging api - message based
  • Nested comment
  • Cache implemented

Future: do more stuff

  • CQRS with event store/streaming
  • Spring Cloud Contract integration (WIP)
  • Docker-compose deploy/kubernetes
  • Visitors log - IP, browser, etc
  • Centralized error reporting
  • Visual Tracing
  • Geo-Spatial query for visitors
  • Grafana Dashboard, @Timed and more ...
  • logback LevelChangePropagator integration
  • logback error email
  • logback rolling policy
  • Integrate Markdown editor for writing notes
  • rate limit by IP on public API ( article api )
  • Fetch user's avatar
  • UI improvement
  • S3 file upload, test with localstack TestContainers
  • nested comment query/performance fix
  • Signup UI
  • vendor neutral security with OIDC
  • realtime approval UI
  • JfrUnit ( WIP )

Requirements

How to Run

It contains following applications:

  • main-app
  • email-service (optional)
  • report-service (optional)
  • trend-service (optional)
  • content-checker (optional)

Option 1 - run with manually started ActiveMQ servers

  • Run mvn clean install at root
  • Run docker-compose -f _config/docker-compose.yml up at root to start docker containers
  • Go to main-app folder and run mvn to start the application

Option 2 - automatically start ActiveMQ using TestContainer while application is starting

  • Run mvn clean install at root
  • Go to main-app folder and run mvn -Pdev,withTestContainer to start the application

Option 3 - run from IDE

  • import into your IDE and compile the full project and run the Application.java on main-app module
  • Update run configuration to run maven goal wro4j:run Before Launch. It should be after 'Build'

Run Tests using Maven Daemon

mvnd test -Dparallel=all -DperCoreThreadCount=false -DthreadCount=4 -o

Once the application starts, open http://localhost:8081 on your browser. The default username/passwords are listed on : gt.app.Application.initData, which are:

  • system/pass
  • user1/pass
  • user2/pass

Screenshots:

Public View

Read Article with nested comment/discussion

Logged in Feed View

Logged in User's Article List View

Admin User's Review Page to approve/disapprove flagged posts

Review Page

New Article

Dependency/plugin version checker

  • mvn versions:display-dependency-updates
  • mvn versions:display-plugin-updates
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].