diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..b44df56234ecbb7871237cdad4f35e5fb3d22ebf
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,11 @@
+# Based on https://gitlab.fi.muni.cz/unix/examples/ci-examples/-/blob/java-maven/.gitlab-ci.yml
+image: maven:3-openjdk-17
+
+build:
+  tags:
+    - shared-fi
+  script:
+    - mvn -ntp clean package
+
+
+
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/CoreApplication.java b/core/src/main/java/cz/muni/fi/pa165/core/CoreApplication.java
index f76cdbebeff0bbff160603daf449394bbaa0a5be..1e1b34ad31e1affcd5bf9fbc97db09598e5ec7f7 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/CoreApplication.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/CoreApplication.java
@@ -6,8 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 @SpringBootApplication
 public class CoreApplication {
 
-	public static void main(String[] args) {
-		SpringApplication.run(CoreApplication.class, args);
-	}
-
+  public static void main(String[] args) {
+    SpringApplication.run(CoreApplication.class, args);
+  }
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/DataInitializer.java b/core/src/main/java/cz/muni/fi/pa165/core/DataInitializer.java
index 8a13146a76d4e0c8feb1334556f7b0311d67c032..2f208731fc8bcf11dd0ae077717946ead1f069c1 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/DataInitializer.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/DataInitializer.java
@@ -11,19 +11,19 @@ import org.springframework.stereotype.Component;
 @RequiredArgsConstructor
 @Component
 public class DataInitializer implements ApplicationRunner {
-	private final UserService userService;
+  private final UserService userService;
 
-	@Override
-	public void run(ApplicationArguments args) throws Exception {
-		User user = User.builder()
-				.email("test@email.com")
-				.firstName("John")
-				.lastName("Doe")
-				.username("johnD")
-				.password("password")
-				.userType(UserType.ADMIN)
-				.build();
-		userService.create(user);
-
-	}
+  @Override
+  public void run(ApplicationArguments args) throws Exception {
+    User user =
+        User.builder()
+            .email("test@email.com")
+            .firstName("John")
+            .lastName("Doe")
+            .username("johnD")
+            .password("password")
+            .userType(UserType.ADMIN)
+            .build();
+    userService.create(user);
+  }
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/common/DomainMapper.java b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainMapper.java
index 099ae1a88796b382d0e571899f3faea7375eeb37..a770ec923a74135116c61082d16bf26e406f9ab4 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/common/DomainMapper.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainMapper.java
@@ -6,19 +6,19 @@ import java.util.List;
 
 public interface DomainMapper<T extends DomainObject, S extends DomainObjectDto> {
 
-	T fromDto(S dto);
+  T fromDto(S dto);
 
-	S toDto(T entity);
+  S toDto(T entity);
 
-	List<S> toDtoList(List<T> entities);
+  List<S> toDtoList(List<T> entities);
 
-   /*
-	@Mappings({
-			@Mapping(target = "total", expression = "java(source.getTotalElements())"),
-			@Mapping(target = "page", expression = "java(source.getNumber())"),
-			@Mapping(target = "pageSize", expression = "java(source.getSize())"),
-			@Mapping(target = "items", expression = "java(toDtoList(source.getContent()))")
-	})
-	Result<S> toResult(Page<T> source);
-    */
+  /*
+  @Mappings({
+  		@Mapping(target = "total", expression = "java(source.getTotalElements())"),
+  		@Mapping(target = "page", expression = "java(source.getNumber())"),
+  		@Mapping(target = "pageSize", expression = "java(source.getSize())"),
+  		@Mapping(target = "items", expression = "java(toDtoList(source.getContent()))")
+  })
+  Result<S> toResult(Page<T> source);
+     */
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/common/DomainObject.java b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainObject.java
index f49c03554e7f5d895dadb8f3683c73c5d72d2d88..c2d52004602873f3a5889bbc726decd24aa468ec 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/common/DomainObject.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainObject.java
@@ -12,6 +12,5 @@ import java.util.UUID;
 @MappedSuperclass
 public abstract class DomainObject {
 
-	@Id
-	private String id = UUID.randomUUID().toString();
+  @Id private String id = UUID.randomUUID().toString();
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/common/DomainService.java b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainService.java
index 2d094024cdfc6f863685f1d332e5e3613a4a4908..5e2b621bdf7319587073610c97185779b9070017 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/common/DomainService.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainService.java
@@ -8,23 +8,22 @@ import org.springframework.transaction.annotation.Transactional;
 
 public abstract class DomainService<T extends DomainObject> {
 
-	public static final int DEFAULT_PAGE_SIZE = 10;
+  public static final int DEFAULT_PAGE_SIZE = 10;
 
-	public abstract JpaRepository<T, String> getRepository();
+  public abstract JpaRepository<T, String> getRepository();
 
-	@Transactional
-	public T create(T entity) {
-		return getRepository().save(entity);
-	}
+  @Transactional
+  public T create(T entity) {
+    return getRepository().save(entity);
+  }
 
-	@Transactional(readOnly = true)
-	public Page<T> findAll(Pageable pageable) {
-		return getRepository().findAll(pageable);
-	}
+  @Transactional(readOnly = true)
+  public Page<T> findAll(Pageable pageable) {
+    return getRepository().findAll(pageable);
+  }
 
-	@Transactional(readOnly = true)
-	public Page<T> findAll(int page) {
-		return getRepository().findAll(PageRequest.of(page, DEFAULT_PAGE_SIZE));
-	}
+  @Transactional(readOnly = true)
+  public Page<T> findAll(int page) {
+    return getRepository().findAll(PageRequest.of(page, DEFAULT_PAGE_SIZE));
+  }
 }
-
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/User.java b/core/src/main/java/cz/muni/fi/pa165/core/user/User.java
index 6ae1b425ca00d266094b38a271ae9ac585c621c5..74ff26132397c0fcdc75d520ae4bb2398ba8be10 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/user/User.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/user/User.java
@@ -20,17 +20,16 @@ import lombok.Setter;
 @Table(name = "domain_user")
 public class User extends DomainObject {
 
-	private String username;
+  private String username;
 
-	@Enumerated(EnumType.STRING)
-	private UserType userType;
+  @Enumerated(EnumType.STRING)
+  private UserType userType;
 
-	private String password;
+  private String password;
 
-	private String email;
+  private String email;
 
-	private String firstName;
-
-	private String lastName;
+  private String firstName;
 
+  private String lastName;
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/UserController.java b/core/src/main/java/cz/muni/fi/pa165/core/user/UserController.java
index b143a7cb2f2b903cdce728d6240822ed52fa32ca..ca8bbd0592d3778c8ab4f77b229bf24a0088ab73 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/user/UserController.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/user/UserController.java
@@ -16,33 +16,33 @@ import java.util.List;
 @RequestMapping("/users")
 public class UserController {
 
-	private final UserService service;
-
-	private final UserMapper mapper;
-
-	@Autowired
-	public UserController(UserService service, UserMapper mapper) {
-		this.service = service;
-		this.mapper = mapper;
-	}
-
-	@GetMapping
-	public List<UserDto> findAll() {
-		return service.findAll().stream().map(mapper::toDto).toList();
-	}
-
-	@GetMapping("/{id}")
-	public UserDto find(@PathVariable String id) {
-		return mapper.toDto(service.find(id));
-	}
-
-	@PostMapping
-	public UserDto create(@RequestBody UserCreateDto dto) {
-		return mapper.toDto(service.create(mapper.fromCreateDto(dto)));
-	}
-
-	// @GetMapping
-	// public Result<UserDto> findAll(@RequestParam int page) {
-	//  	return mapper.toResult(service.findAll(page));
-	// }
+  private final UserService service;
+
+  private final UserMapper mapper;
+
+  @Autowired
+  public UserController(UserService service, UserMapper mapper) {
+    this.service = service;
+    this.mapper = mapper;
+  }
+
+  @GetMapping
+  public List<UserDto> findAll() {
+    return service.findAll().stream().map(mapper::toDto).toList();
+  }
+
+  @GetMapping("/{id}")
+  public UserDto find(@PathVariable String id) {
+    return mapper.toDto(service.find(id));
+  }
+
+  @PostMapping
+  public UserDto create(@RequestBody UserCreateDto dto) {
+    return mapper.toDto(service.create(mapper.fromCreateDto(dto)));
+  }
+
+  // @GetMapping
+  // public Result<UserDto> findAll(@RequestParam int page) {
+  //  	return mapper.toResult(service.findAll(page));
+  // }
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/UserMapper.java b/core/src/main/java/cz/muni/fi/pa165/core/user/UserMapper.java
index ce1a629f2507eea30681e6914f0348ff646a1fb3..32642e778cd87aba705828f27b774fed6be972ce 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/user/UserMapper.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/user/UserMapper.java
@@ -8,6 +8,5 @@ import org.mapstruct.Mapper;
 @Mapper
 public interface UserMapper extends DomainMapper<User, UserDto> {
 
-	User fromCreateDto(UserCreateDto dto);
+  User fromCreateDto(UserCreateDto dto);
 }
-
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/UserRepository.java b/core/src/main/java/cz/muni/fi/pa165/core/user/UserRepository.java
index 58f12b1aa2bad06755c670eaa267cb69df59e72f..a3c8c1e238ee14201ebb361ce55c2822024d327d 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/user/UserRepository.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/user/UserRepository.java
@@ -4,6 +4,4 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface UserRepository extends JpaRepository<User, String> {
-}
-
+public interface UserRepository extends JpaRepository<User, String> {}
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/UserService.java b/core/src/main/java/cz/muni/fi/pa165/core/user/UserService.java
index 1411527886277ed59b23d6ba335e80d74f0cee7e..c1ff6359b20ddba9a6b35a8e7f4af38fa34c5639 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/user/UserService.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/user/UserService.java
@@ -12,24 +12,22 @@ import java.util.List;
 @Service
 public class UserService extends DomainService<User> {
 
-	@Getter
-	private final UserRepository repository;
-
-	@Autowired
-	public UserService(UserRepository repository) {
-		this.repository = repository;
-	}
-
-	@Transactional(readOnly = true)
-	public User find(String id) {
-		return repository.findById(id)
-				.orElseThrow(() -> new EntityNotFoundException("User '" + id + "' not found."));
-	}
-
-	@Transactional(readOnly = true)
-	public List<User> findAll() {
-		return repository.findAll();
-	}
-
+  @Getter private final UserRepository repository;
+
+  @Autowired
+  public UserService(UserRepository repository) {
+    this.repository = repository;
+  }
+
+  @Transactional(readOnly = true)
+  public User find(String id) {
+    return repository
+        .findById(id)
+        .orElseThrow(() -> new EntityNotFoundException("User '" + id + "' not found."));
+  }
+
+  @Transactional(readOnly = true)
+  public List<User> findAll() {
+    return repository.findAll();
+  }
 }
-
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/UserType.java b/core/src/main/java/cz/muni/fi/pa165/core/user/UserType.java
index 3208d51f80846f081add1faba4bcd9a8bf9ac61a..8f4a527576f52885aeed928ce79cd80b5d6701dc 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/user/UserType.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/user/UserType.java
@@ -1,7 +1,7 @@
 package cz.muni.fi.pa165.core.user;
 
 public enum UserType {
-	NORMAL,
-	EMPLOYEE,
-	ADMIN
+  NORMAL,
+  EMPLOYEE,
+  ADMIN
 }
diff --git a/core/src/test/java/cz/muni/fi/pa165/core/CoreApplicationTest.java b/core/src/test/java/cz/muni/fi/pa165/core/CoreApplicationTest.java
index 9b7b7c0d57e7a12f34081e7656bcb9b21b33f3bd..94a9c352440724442b25cb32ce994f648454f6fa 100644
--- a/core/src/test/java/cz/muni/fi/pa165/core/CoreApplicationTest.java
+++ b/core/src/test/java/cz/muni/fi/pa165/core/CoreApplicationTest.java
@@ -6,8 +6,6 @@ import org.springframework.boot.test.context.SpringBootTest;
 @SpringBootTest
 class CoreApplicationTest {
 
-	@Test
-	void contextLoads() {
-	}
-
+  @Test
+  void contextLoads() {}
 }
diff --git a/microservice3/src/main/java/cz/muni/fi/pa165/microservice3/App.java b/microservice3/src/main/java/cz/muni/fi/pa165/microservice3/App.java
index 8b3f7ae17947df72d5abbbebc2c35c6f78cf26e2..94bbd84d9203368d8c23c875195b3063fe14a18c 100644
--- a/microservice3/src/main/java/cz/muni/fi/pa165/microservice3/App.java
+++ b/microservice3/src/main/java/cz/muni/fi/pa165/microservice3/App.java
@@ -6,8 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 @SpringBootApplication
 public class App {
 
-	public static void main(String[] args) {
-		SpringApplication.run(App.class, args);
-	}
-
+  public static void main(String[] args) {
+    SpringApplication.run(App.class, args);
+  }
 }
diff --git a/microservice3/src/test/java/cz/muni/fi/pa165/microservice3/AppTest.java b/microservice3/src/test/java/cz/muni/fi/pa165/microservice3/AppTest.java
index 927c9db533809664f7bb116442b93015fb07b864..53dd3bcc1a0d1c65978a26756013effdba9199ea 100644
--- a/microservice3/src/test/java/cz/muni/fi/pa165/microservice3/AppTest.java
+++ b/microservice3/src/test/java/cz/muni/fi/pa165/microservice3/AppTest.java
@@ -5,7 +5,6 @@ import org.springframework.boot.test.context.SpringBootTest;
 
 @SpringBootTest
 public class AppTest {
-	@Test
-	void contextLoads() {
-	}
+  @Test
+  void contextLoads() {}
 }
diff --git a/microservice4/src/main/java/cz/muni/fi/pa165/microservice4/App.java b/microservice4/src/main/java/cz/muni/fi/pa165/microservice4/App.java
index 9044aa6836c9db6ca18db423a2496d3cc829deb2..fbce892417a8ebbcb38d678e5f40dc3329970703 100644
--- a/microservice4/src/main/java/cz/muni/fi/pa165/microservice4/App.java
+++ b/microservice4/src/main/java/cz/muni/fi/pa165/microservice4/App.java
@@ -6,8 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 @SpringBootApplication
 public class App {
 
-	public static void main(String[] args) {
-		SpringApplication.run(App.class, args);
-	}
-
+  public static void main(String[] args) {
+    SpringApplication.run(App.class, args);
+  }
 }
diff --git a/microservice4/src/test/java/cz/muni/fi/pa165/microservice4/AppTest.java b/microservice4/src/test/java/cz/muni/fi/pa165/microservice4/AppTest.java
index 3a9a025da2d45eb03d3615bb2714abc2f5a75cd3..0f0e15a2afa4b7aad2e1beb6fbb5bb0d238d7e29 100644
--- a/microservice4/src/test/java/cz/muni/fi/pa165/microservice4/AppTest.java
+++ b/microservice4/src/test/java/cz/muni/fi/pa165/microservice4/AppTest.java
@@ -5,7 +5,6 @@ import org.springframework.boot.test.context.SpringBootTest;
 
 @SpringBootTest
 public class AppTest {
-	@Test
-	void contextLoads() {
-	}
-}
\ No newline at end of file
+  @Test
+  void contextLoads() {}
+}
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/common/DomainObjectDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/common/DomainObjectDto.java
index f99c4d29aad4bd029500006c83e933325cef4838..f1f03d1e5358fda28b28e2f9f72636432227a928 100644
--- a/model/src/main/java/cz/muni/fi/pa165/model/dto/common/DomainObjectDto.java
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/common/DomainObjectDto.java
@@ -7,5 +7,5 @@ import lombok.Setter;
 @Setter
 public abstract class DomainObjectDto {
 
-	private String id;
-}
\ No newline at end of file
+  private String id;
+}
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserCreateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserCreateDto.java
index 8221a4866056513ea5ccd926bbd226c6fe08d14c..94b70d5efde15f9ef5001f0cebef03b9858781a1 100644
--- a/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserCreateDto.java
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserCreateDto.java
@@ -8,15 +8,13 @@ import lombok.Setter;
 @Setter
 public class UserCreateDto extends DomainObjectDto {
 
-	private String username;
+  private String username;
 
-	private String password;
+  private String password;
 
-	private String email;
+  private String email;
 
-	private String firstName;
-
-	private String lastName;
+  private String firstName;
 
+  private String lastName;
 }
-
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserDto.java
index ede86aca9100f2ee3b287685ae93beb1a65f1e36..f6e5ac7bc94c81d05a7d7424e305f0e09e2a7b46 100644
--- a/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserDto.java
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserDto.java
@@ -8,13 +8,11 @@ import lombok.Setter;
 @Setter
 public class UserDto extends DomainObjectDto {
 
-	private String username;
+  private String username;
 
-	private String email;
-
-	private String firstName;
-
-	private String lastName;
+  private String email;
 
+  private String firstName;
 
+  private String lastName;
 }
diff --git a/pom.xml b/pom.xml
index 46c7101bb2338f173a272109a15b24b823a0da38..c373bf046a005afb8dc65a046afacbf3070f5cb9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,6 +79,28 @@
 					</compilerArgs>
 				</configuration>
 			</plugin>
+			<plugin>
+				<groupId>com.theoryinpractise</groupId>
+				<artifactId>googleformatter-maven-plugin</artifactId>
+				<version>1.7.3</version>
+				<executions>
+					<execution>
+						<id>reformat-sources</id>
+						<configuration>
+							<includeStale>false</includeStale>
+							<style>GOOGLE</style>
+							<filterModified>false</filterModified>
+							<skip>false</skip>
+							<fixImports>false</fixImports>
+							<maxLineLength>100</maxLineLength>
+						</configuration>
+						<goals>
+							<goal>format</goal>
+						</goals>
+						<phase>process-sources</phase>
+					</execution>
+				</executions>
+			</plugin>
 		</plugins>
 		<pluginManagement>
 			<plugins>
@@ -97,5 +119,4 @@
 			</plugins>
 		</pluginManagement>
 	</build>
-
 </project>
diff --git a/statistics/src/main/java/cz/muni/fi/pa165/statistics/StatisticsApplication.java b/statistics/src/main/java/cz/muni/fi/pa165/statistics/StatisticsApplication.java
index f73b192563f145e934a607c405d973ba013a4a9b..4e7ca053e8aa1876e78da3e8e5db8c7626953296 100644
--- a/statistics/src/main/java/cz/muni/fi/pa165/statistics/StatisticsApplication.java
+++ b/statistics/src/main/java/cz/muni/fi/pa165/statistics/StatisticsApplication.java
@@ -6,8 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 @SpringBootApplication
 public class StatisticsApplication {
 
-	public static void main(String[] args) {
-		SpringApplication.run(StatisticsApplication.class, args);
-	}
-
+  public static void main(String[] args) {
+    SpringApplication.run(StatisticsApplication.class, args);
+  }
 }
diff --git a/statistics/src/test/java/cz/muni/fi/pa165/statistics/StatisticsApplicationTest.java b/statistics/src/test/java/cz/muni/fi/pa165/statistics/StatisticsApplicationTest.java
index 07c0c264f9e2f672839e1775d10648f89b475364..6c25c400706634f306732e9cfe0ba831242578d3 100644
--- a/statistics/src/test/java/cz/muni/fi/pa165/statistics/StatisticsApplicationTest.java
+++ b/statistics/src/test/java/cz/muni/fi/pa165/statistics/StatisticsApplicationTest.java
@@ -6,8 +6,6 @@ import org.springframework.boot.test.context.SpringBootTest;
 @SpringBootTest
 class StatisticsApplicationTest {
 
-	@Test
-	void contextLoads() {
-	}
-
-}
\ No newline at end of file
+  @Test
+  void contextLoads() {}
+}