Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 14 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,21 @@ This is the backend of the IroCO2 application. Developed using Java 21 and Sprin

### Run in development

#### With Docker Compose (recommended)
1. Create a `infrastructure/src/main/resources/application-local.properties` (ask an IroCO2 referent on how to document it)

1. Start the database and tools:
2. Start the database and localstack :
- With Docker Compose (recommended)
```bash
docker compose -f docker/local.docker-compose.yml up -d
```
2. Run the backend (in another terminal):
```bash
mvn spring-boot:run
```

#### Without Docker

- Make sure a PostgreSQL instance is running and accessible (see `docker/local.docker-compose.yml` for env vars).
- Update the `application.properties` or use environment variables as needed.
- Run:
```bash
mvn spring-boot:run
```

- Without Docker

Make sure a PostgreSQL and a Localstack instance are accessible (see `docker/local.docker-compose.yml` for env vars).

3. On IntelliJ, create a configuration to launch the app with local profile :
- in `infrastructure/src/main/java/MainApp.main`, right-click on the run button associated to`main`function
- edit a configuration where you simply add `spring.profiles.active=local` as an environment variable
4. Run `MainApp.main` with the configuration you just created
---

## 📦 Project Structure
Expand All @@ -68,7 +63,7 @@ This is the backend of the IroCO2 application. Developed using Java 21 and Sprin
mvn test
```
- Cucumber BDD tests included
- Testcontainers used for integration tests (PostgreSQL, Localstack)
- Testcontainers used for integration tests (PostgreSQL, Localstack) so a Docker Daemon is needed

## 🛡️ Security & Auth

Expand All @@ -85,6 +80,7 @@ We use [Prettier Java](https://github.com/jhipster/prettier-java) to ensure cons

1. Install Node modules:
```bash
npm install
npm ci
```
2. (Recommended) Install the File Watchers plugin in your IDE and configure it as follows:
Expand All @@ -102,15 +98,6 @@ We use [Prettier Java](https://github.com/jhipster/prettier-java) to ensure cons
npx prettier --write "**/*.java"
```

### Git LF/CRLF configuration
By default, Git on Windows may convert line endings (LF → CRLF). Our Prettier config enforces LF. To avoid unwanted conversions, run one of the following:

```bash
git config --system core.autocrlf false # per-system
git config --global core.autocrlf false # per-user
git config --local core.autocrlf false # per-project
```

---

## 🧭 Local SonarQube Usage
Expand All @@ -120,7 +107,7 @@ We use SonarQube for static code analysis and code quality.
### Start SonarQube locally

```bash
docker compose -f docker/local.docker-compose.yml up
docker compose -f docker/sonar.docker-compose.yml up
```

### Configuration
Expand Down
53 changes: 12 additions & 41 deletions docker/local.docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: 'iro-calc-back'
name: 'iro-calc-back-local'

services:
database:
Expand All @@ -11,46 +11,17 @@ services:
ports:
- "5432:5432"

sonarqube:
image: sonarqube:lts-community
depends_on:
- sonar_db
aws:
image: 'localstack/localstack'
container_name: 'localstack'
environment:
SONAR_JDBC_URL: jdbc:postgresql://sonar_db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
- SERVICES=sqs,s3,lambda,ssm,logs,iam,events
- DEFAULT_REGION=eu-west-3
- AWS_DEFAULT_REGION=eu-west-3
- DEBUG=1
- DATA_DIR=/var/localstack/data
- LAMBDA_EXECUTOR=docker
ports:
- "9001:9000"
- '4566:4566'
volumes:
- sonarqube_conf:/opt/sonarqube/conf
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_logs:/opt/sonarqube/logs
- sonarqube_temp:/opt/sonarqube/temp

sonar_db:
image: postgres:13
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
POSTGRES_DB: sonar
volumes:
- sonar_db:/var/lib/postgresql
- sonar_db_data:/var/lib/postgresql/data

pg_admin:
image: dpage/pgadmin4:8.4
environment:
PGADMIN_DEFAULT_EMAIL: "[email protected]"
PGADMIN_DEFAULT_PASSWORD: "admin"
ports:
- "8081:80"

volumes:
sonarqube_conf:
sonarqube_data:
sonarqube_extensions:
sonarqube_logs:
sonarqube_temp:
sonar_db:
sonar_db_data:
- /var/run/docker.sock:/var/run/docker.sock
46 changes: 46 additions & 0 deletions docker/sonar.docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: 'iro-calc-back-sonar'

services:
sonarqube:
image: sonarqube:lts-community
depends_on:
- sonar_db
environment:
SONAR_JDBC_URL: jdbc:postgresql://sonar_db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
ports:
- "9001:9000"
volumes:
- sonarqube_conf:/opt/sonarqube/conf
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_logs:/opt/sonarqube/logs
- sonarqube_temp:/opt/sonarqube/temp

sonar_db:
image: postgres:13
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
POSTGRES_DB: sonar
volumes:
- sonar_db:/var/lib/postgresql
- sonar_db_data:/var/lib/postgresql/data

pg_admin:
image: dpage/pgadmin4:8.4
environment:
PGADMIN_DEFAULT_EMAIL: "[email protected]"
PGADMIN_DEFAULT_PASSWORD: "admin"
ports:
- "8081:80"

volumes:
sonarqube_conf:
sonarqube_data:
sonarqube_extensions:
sonarqube_logs:
sonarqube_temp:
sonar_db:
sonar_db_data: