/Spring-Thymeleaf--Scrollad

Second hand marketplace website

Primary LanguageJavaMIT LicenseMIT

FD Spring MVC scrollad app

Craigslist-style website with:

-Ad upload, search and rating

-Follow users and real time chat

-Premium subscription for sponsored ads

-Exposed ad search API

This is a Spring MVC project using Thymeleaf templates for the views, created with the use of the Spring MVC with Thymeleaf Maven Archetype.

Before beginning with the new project there are a few things which should be edited:

  • This readme's description has to be adapted to the new project.
  • Project info on the POM should be checked.
  • The various links on the readme, POM and Maven site (for repositories, issues, etc) should be verified.
  • The documentation on the project's Maven Site has to be written.
  • The license, if not using the MIT one, should be changed. Remember that this is referenced on the POM, readme and LICENSE files.

Note that the Maven site is using the Docs Maven Skin, which will have a few configuration requirements of its own.

Maven Central

Release docs Development docs

Release javadocs Development javadocs

Features

The project by default comes with a useful series of features:

  • Preconfigured POM to begin developing a new Spring MVC project.
  • Initial sample project including working persistence and exception handling
  • Integration with Thymeleaf for the view templates.
  • Using Bootstrap for the UI.
  • Using Liquibase for database versioning.
  • Integration with Jasper Reports for generating PDFs.
  • Unit and integration tests suites ready to be run with JUnit just by using the Maven test and verify commands.
  • A Maven site, using the Docs Maven Skin, to contain the documentation, the Javadocs and several reports.
  • A bunch of useful files, such as readme, gitignore and gitattributes.

Documentation

Documentation is always generated for the latest release, kept in the 'master' branch:

Documentation is also generated from the latest snapshot, taken from the 'develop' branch:

The documentation site is actually a Maven site, and its sources are included in the project. If required it can be generated by using the following Maven command:

mvn verify site -P h2,db-properties,jetty

The verify phase is required, otherwise some of the reports won't be generated.

Usage

The application is coded in Java, using Maven to manage the project.

Prerequisites

The project has been tested on the following Java versions:

  • JDK 11

All other dependencies are handled through Maven, and noted in the included POM file.

Profiles

Maven profiles are included for setting up the database and an embedded server.

Profile Database
h2 H2 in-memory database
mysql MySQL database
postgres PostgreSQL database
Profile Server
jetty Jetty embedded server
cargo Cargo embedded server
Profile Server
db-properties DB authentication info taken from properties file

Installing

The project can be installed by creating the war file and deploying it into a server.

Running

To run the project locally in an embedded server just use the following Maven command for deploying to Jetty with an H2 in-memory database:

mvn jetty:run-war -P h2,db-properties,jetty

With this the project will be accessible at [http://localhost:8080/].

Running the tests

The project requires a database and a server for being able to run the integration tests.

Just like running the project, an embedded server with an in-memory database can be used:

mvn verify -P h2,db-properties,jetty

Packaging the WAR

When creating the WAR file the database connection credentials should be read from the environment:

mvn package -P production,mysql -D database.auth.source=env

Check the documentation for more information.

Collaborate

Any kind of help with the project will be well received, and there are two main ways to give such help:

  • Reporting errors and asking for extensions through the issues management
  • or forking the repository and extending the project

Issues management

Issues are managed with Redmine project issues tracker

Getting the code

If you wish to fork or modify the code, visit the Gitlab project page, where the latest versions are always kept. Check the 'master' branch for the latest release, and the 'develop' for the current, and stable, development version.

License

The project has been released under the MIT License.