diff --git a/README.md b/README.md index dfe0661..f230c26 100644 --- a/README.md +++ b/README.md @@ -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 @@ -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 @@ -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: @@ -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 @@ -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 diff --git a/docker/local.docker-compose.yml b/docker/local.docker-compose.yml index a4b6ba2..d23ce86 100644 --- a/docker/local.docker-compose.yml +++ b/docker/local.docker-compose.yml @@ -1,4 +1,4 @@ -name: 'iro-calc-back' +name: 'iro-calc-back-local' services: database: @@ -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: "admin@local.com" - 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 diff --git a/docker/sonar.docker-compose.yml b/docker/sonar.docker-compose.yml new file mode 100644 index 0000000..ac89483 --- /dev/null +++ b/docker/sonar.docker-compose.yml @@ -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: "admin@local.com" + PGADMIN_DEFAULT_PASSWORD: "admin" + ports: + - "8081:80" + +volumes: + sonarqube_conf: + sonarqube_data: + sonarqube_extensions: + sonarqube_logs: + sonarqube_temp: + sonar_db: + sonar_db_data: \ No newline at end of file