Project Structure

1. Overview

Node.js is required for generation and recommended for development. The package.json file provides an improved development experience with Prettier, commit hooks, scripts, and other tooling.

2. Root Directory

The project root contains configuration files for common development tools:

File/Directory Purpose

.yo-rc.json

Yeoman configuration file. JHipster configuration is stored under the generator-jhipster key. Blueprint-specific configurations appear under generator-jhipster-* keys.

.yo-resolve

(Optional) Yeoman conflict resolver. Specifies actions for file conflicts using patterns. Format: [pattern] [action] where pattern is a Minimatch pattern and action is skip (default) or force. Lines starting with # are comments.

.jhipster/*.json

JHipster entity configuration files

npmw

Wrapper for locally installed npm. JHipster installs Node and npm locally using the build tool. Use ./npmw instead of npm to ensure consistent behavior across environments and enable Node-less development/testing.

/src/main/docker

Docker configurations for the application and its dependent services

3. Source Structure

The /src/* directory follows the standard Java project structure:

src/
├── main/
│   ├── java/           # Java source code
│   ├── resources/      # Application configuration
│   ├── webapp/         # Angular frontend application
│   │   ├── app/        # Angular components and services
│   │   └── content/    # Static content (CSS, images)
│   └── docker/         # Docker compose files
└── test/
    ├── java/           # Java unit and integration tests
    └── javascript/     # Frontend tests (Jest, Cypress)

4. Configuration Files

4.1. Build Configuration

File Purpose

pom.xml

Maven build configuration

package.json

npm dependencies and scripts

.npmrc

npm registry configuration (including private packages)

angular.json

Angular CLI configuration

tsconfig.json

TypeScript compiler configuration

4.2. Code Quality

File Purpose

.eslintrc.json

ESLint configuration for JavaScript/TypeScript

.prettierrc

Prettier code formatting rules

.prettierignore

Files excluded from Prettier formatting

sonar-project.properties

SonarQube analysis configuration

4.3. Git Configuration

File Purpose

.gitignore

Files excluded from version control

.gitattributes

Git file attributes (line endings, etc.)

.husky/

Git hooks for pre-commit checks