Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/reljicd/spring-boot-blog
Simple blog web app made using Spring Boot + Thymeleaf
https://github.com/reljicd/spring-boot-blog
bash bash-script blog docker h2 h2-database java java8 optional shell shell-script spring spring-boot spring-data-jpa spring-data-rest spring-mvc spring-security springboot thymeleaf
Last synced: about 1 month ago
JSON representation
Simple blog web app made using Spring Boot + Thymeleaf
- Host: GitHub
- URL: https://github.com/reljicd/spring-boot-blog
- Owner: reljicd
- License: apache-2.0
- Created: 2017-05-30T11:21:14.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-08-01T21:25:53.000Z (3 months ago)
- Last Synced: 2024-09-29T08:21:58.217Z (about 1 month ago)
- Topics: bash, bash-script, blog, docker, h2, h2-database, java, java8, optional, shell, shell-script, spring, spring-boot, spring-data-jpa, spring-data-rest, spring-mvc, spring-security, springboot, thymeleaf
- Language: Java
- Homepage:
- Size: 117 KB
- Stars: 185
- Watchers: 12
- Forks: 95
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Spring Boot Blog Demo
## About
This is a demo project for practicing **Spring Boot + Thymeleaf**.
The idea was to build some basic blogging platform.It was made using **Spring Boot**, **Spring Security**, **Thymeleaf**, **Spring Data JPA**, **Spring Data REST** and **Docker**.
Database is in memory **H2**.There is a login and registration functionality included.
User has his own blog page, where he can add new blog posts.
Every authenticated user can comment on posts made by other users.
Home page is paginated list of all posts.
Non-authenticated users can see all blog posts, but cannot add new posts or comment.![Screenshot 1](https://user-images.githubusercontent.com/7095876/37773737-ae6a8b56-2dde-11e8-8a7f-5f259695bdc9.png)
![Screenshot 1](https://user-images.githubusercontent.com/7095876/37773767-bbcb292c-2dde-11e8-91f8-2a05fe84e05e.png)
## Configuration
### Configuration Files
Folder **src/resources/** contains config files for **blog-demo** Spring Boot application.
* **src/resources/application.properties** - main configuration file. Here it is possible to change admin username/password,
as well as change the port number.## How to run
There are several ways to run the application. You can run it from the command line with included Maven Wrapper, Maven or Docker.
Once the app starts, go to the web browser and visit `http://localhost:8090/home`
Admin username: **admin**
Admin password: **admin**
User username: **user**
User password: **password**
### Maven Wrapper
#### Using the Maven Plugin
Go to the root folder of the application and type:
```bash
$ chmod +x scripts/mvnw
$ scripts/mvnw spring-boot:run
```#### Using Executable Jar
Or you can build the JAR file with
```bash
$ scripts/mvnw clean package
```Then you can run the JAR file:
```bash
$ java -jar target/blog-demo-0.0.1-SNAPSHOT.jar
```### Maven
Open a terminal and run the following commands to ensure that you have valid versions of Java and Maven installed:
```bash
$ java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
``````bash
$ mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00)
Maven home: /usr/local/Cellar/maven/3.3.9/libexec
Java version: 1.8.0_102, vendor: Oracle Corporation
```#### Using the Maven Plugin
The Spring Boot Maven plugin includes a run goal that can be used to quickly compile and run your application.
Applications run in an exploded form, as they do in your IDE.
The following example shows a typical Maven command to run a Spring Boot application:
```bash
$ mvn spring-boot:run
```#### Using Executable Jar
To create an executable jar run:
```bash
$ mvn clean package
```To run that application, use the java -jar command, as follows:
```bash
$ java -jar target/blog-demo-0.0.1-SNAPSHOT.jar
```To exit the application, press **ctrl-c**.
### Docker
It is possible to run **blog-demo** using Docker:
Build Docker image:
```bash
$ mvn clean package
$ docker build -t blog-demo:dev -f docker/Dockerfile .
```Run Docker container:
```bash
$ docker run --rm -i -p 8090:8090 \
--name blog-demo \
blog-demo:dev
```##### Helper script
It is possible to run all of the above with helper script:
```bash
$ chmod +x scripts/run_docker.sh
$ scripts/run_docker.sh
```## Docker
Folder **docker** contains:
* **docker/blog-demo/Dockerfile** - Docker build file for executing blog-demo Docker image.
Instructions to build artifacts, copy build artifacts to docker image and then run app on proper port with proper configuration file.## Util Scripts
* **scripts/run_docker.sh.sh** - util script for running blog-demo Docker container using **docker/Dockerfile**
## Tests
Tests can be run by executing following command from the root of the project:
```bash
$ mvn test
```## Helper Tools
### HAL REST Browser
Go to the web browser and visit `http://localhost:8090/`
You will need to be authenticated to be able to see this page.
### H2 Database web interface
Go to the web browser and visit `http://localhost:8090/h2-console`
In field **JDBC URL** put
```
jdbc:h2:mem:blog_simple_db
```In `/src/main/resources/application.properties` file it is possible to change both
web interface url path, as well as the datasource url.