diff --git a/buildAndRun.sh b/buildAndRun.sh
index 0a83112666df019a6fd727fd84dde55f1e410c69..1b9b70158c0f2277082d758175fc2b8469ba9ddd 100755
--- a/buildAndRun.sh
+++ b/buildAndRun.sh
@@ -1,3 +1,3 @@
 ./quickBuildToJar.sh
 docker build . -t gltron/mozen
-docker run --name mozen -d -p 8007:8181 gltron/mozen
\ No newline at end of file
+docker-compose up -d
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
index 301901a7827811e2c9586628fdec5867f80341b5..b668036a6ad00ff77d1e6e17d7e27674041e1bd6 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,7 +1,7 @@
 version: '3'
 services:
   # https://docs.linuxserver.io/images/docker-mariadb
-  mariadb:
+  mozen_mariadb:
     image: linuxserver/mariadb
     container_name: mozen_mariadb
     environment:
@@ -10,23 +10,17 @@ services:
       - MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD
       - TZ=Europe/Paris
       - MYSQL_DATABASE=MOZEN_DB
-      - MYSQL_USER=mozen
+      - MYSQL_USER=mozen_user
       - MYSQL_PASSWORD=1234
     volumes:
-      - path_to_data:/config
-    ports:
-      - 3306:3306
+      - /data/mozen_db_data:/config
     restart: unless-stopped
 
-  mozen:
+  mozen_web:
     depends_on:
-      - mariadb
-    image: mozen
-    container_name: mozen
-    environment:
-      - DB_PORT=3306
-      - DB_USER=mozen
-      - DB_PASSWORD=1234
+      - mozen_mariadb
+    image: gltron/mozen
+    container_name: mozen_web
     ports:
-      - 80:8181
+      - 8007:8181
     restart: unless-stopped
diff --git a/mozen/pom.xml b/mozen/pom.xml
index 956a989d57ce1bb584106b99046affd9c54ca124..993375b9df8e869dbf616b1f9741dc3b9fcde032 100644
--- a/mozen/pom.xml
+++ b/mozen/pom.xml
@@ -23,10 +23,6 @@
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-data-jpa</artifactId>
 		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-mail</artifactId>
-		</dependency>
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-web</artifactId>
@@ -46,11 +42,11 @@
 			<version>0.9.1</version>
 		</dependency>
 		<dependency>
-			<groupId>org.postgresql</groupId>
-			<artifactId>postgresql</artifactId>
-			<scope>runtime</scope>
+			<groupId>org.mariadb.jdbc</groupId>
+			<artifactId>mariadb-java-client</artifactId>
+			<version>2.6.0</version>
 		</dependency>
-		
+
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-test</artifactId>
diff --git a/mozen/src/main/java/mozen/MozenApplication.java b/mozen/src/main/java/mozen/MozenApplication.java
index fa1e6554caef703ec43288d35a9b7863af5cec2e..015cef3e0d8467fde1ad790fa6b18b56587085ab 100644
--- a/mozen/src/main/java/mozen/MozenApplication.java
+++ b/mozen/src/main/java/mozen/MozenApplication.java
@@ -1,8 +1,5 @@
 package mozen;
 
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.domain.EntityScan;
@@ -10,14 +7,7 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.PropertySource;
 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
-import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor;
-import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.transaction.PlatformTransactionManager;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 @SpringBootApplication
@@ -33,36 +23,6 @@ public class MozenApplication {
 		return new BCryptPasswordEncoder();
 	}
 
-	@Bean
-  public DataSource dataSource() {
-    EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
-    return builder.setType(EmbeddedDatabaseType.HSQL).build();
-  }
-
-  @Bean
-  public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
-    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
-    vendorAdapter.setGenerateDdl(true);
-
-    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
-    factory.setJpaVendorAdapter(vendorAdapter);
-    factory.setPackagesToScan("mozen.model");
-    factory.setDataSource(dataSource());
-    return factory;
-  }
-
-  @Bean
-  public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
-    JpaTransactionManager transactionManager = new JpaTransactionManager();
-    transactionManager.setEntityManagerFactory(emf);
-    return transactionManager;
-  }
-
-  @Bean
-  public PersistenceAnnotationBeanPostProcessor annotationProcessor() {
-    return new PersistenceAnnotationBeanPostProcessor();
-  }
-
 	public static void main(String[] args) {
 		SpringApplication.run(MozenApplication.class, args);
 	}
diff --git a/mozen/src/main/java/mozen/auth/JwtAuthenticationFilter.java b/mozen/src/main/java/mozen/auth/JwtAuthenticationFilter.java
index d600d31eaf00a076524983a80a1afdf752e912d2..7eaa46ae37ed85744a6e6adf527d76ea4c9d3465 100644
--- a/mozen/src/main/java/mozen/auth/JwtAuthenticationFilter.java
+++ b/mozen/src/main/java/mozen/auth/JwtAuthenticationFilter.java
@@ -26,6 +26,8 @@ public class JwtAuthenticationFilter extends UsernamePasswordAuthenticationFilte
 
   public JwtAuthenticationFilter(AuthenticationManager authenticationManager){
     this.authenticationManager = authenticationManager;
+
+    setFilterProcessesUrl("/api/users/login");
   }
 
   @Override
diff --git a/mozen/src/main/java/mozen/auth/WebSecurity.java b/mozen/src/main/java/mozen/auth/WebSecurity.java
index e42b9763282af70f18bc25171d74a16619354375..18fe1dbca80e1163f8bd4116ef724d78e4d6403a 100644
--- a/mozen/src/main/java/mozen/auth/WebSecurity.java
+++ b/mozen/src/main/java/mozen/auth/WebSecurity.java
@@ -37,27 +37,30 @@ public class WebSecurity extends WebSecurityConfigurerAdapter{
         // PUBLIC SECTION
         .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
         .antMatchers("/").permitAll()
-        .antMatchers(HttpMethod.POST, "/login").permitAll()
-        .antMatchers(HttpMethod.POST, "/users/signup").permitAll()
-        .antMatchers(HttpMethod.GET, "/search").permitAll()
-        .antMatchers(HttpMethod.GET, "/comments").permitAll()
-        .antMatchers(HttpMethod.GET, "/tags").permitAll()
-        .antMatchers(HttpMethod.GET, "/models").permitAll()
-        .antMatchers(HttpMethod.GET, "/models/download").permitAll()
-        .antMatchers(HttpMethod.GET, "/layers/download").permitAll()
+        .antMatchers(HttpMethod.POST, "/api/users/login").permitAll()
+        .antMatchers(HttpMethod.POST, "/api/users/signup").permitAll()
+        .antMatchers(HttpMethod.GET, "/api/search").permitAll()
+        .antMatchers(HttpMethod.GET, "/api/comments").permitAll()
+        .antMatchers(HttpMethod.GET, "/api/tags").permitAll()
+        .antMatchers(HttpMethod.GET, "/api/models").permitAll()
+        .antMatchers(HttpMethod.GET, "/api/models/download").permitAll()
+        .antMatchers(HttpMethod.GET, "/api/layers/download").permitAll()
 
         // ADMIN SECTION
-        .antMatchers(HttpMethod.GET, "/models/setVerified").hasRole("ADMIN")
-        .antMatchers(HttpMethod.GET, "/users/setAdmin").hasRole("ADMIN")
-        .antMatchers(HttpMethod.DELETE, "/tags").hasRole("ADMIN")
-        .antMatchers(HttpMethod.DELETE, "/tags/category").hasRole("ADMIN")
-        .antMatchers(HttpMethod.POST, "/tags/category").hasRole("ADMIN")
-        .antMatchers(HttpMethod.GET, "/models/list").hasRole("ADMIN")
-        .antMatchers(HttpMethod.GET, "/users/list").hasRole("ADMIN")
-        .antMatchers(HttpMethod.GET, "/comments/list").hasRole("ADMIN")
+        .antMatchers(HttpMethod.GET, "/api/models/setVerified").hasRole("ADMIN")
+        .antMatchers(HttpMethod.GET, "/api/users/setAdmin").hasRole("ADMIN")
+        .antMatchers(HttpMethod.DELETE, "/api/tags").hasRole("ADMIN")
+        .antMatchers(HttpMethod.DELETE, "/api/tags/category").hasRole("ADMIN")
+        .antMatchers(HttpMethod.POST, "/api/tags/category").hasRole("ADMIN")
+        .antMatchers(HttpMethod.GET, "/api/models/list").hasRole("ADMIN")
+        .antMatchers(HttpMethod.GET, "/api/users/list").hasRole("ADMIN")
+        .antMatchers(HttpMethod.GET, "/api/comments/list").hasRole("ADMIN")
 
         // USER SECTION
-        .anyRequest().authenticated()
+        .antMatchers("/api/**").authenticated()
+
+        // DEFAULT
+        .anyRequest().permitAll()
     .and()
       .addFilter(new JwtAuthenticationFilter(authenticationManager()))
       .addFilter(new JwtAuthorizationFilter(authenticationManager()))
diff --git a/mozen/src/main/java/mozen/web/CommentController.java b/mozen/src/main/java/mozen/web/CommentController.java
index 29931a0a606d9a7e192bf3201f6c792d3836003d..f8234ea5500ded2a0f516046ccbe2a826ac33d89 100644
--- a/mozen/src/main/java/mozen/web/CommentController.java
+++ b/mozen/src/main/java/mozen/web/CommentController.java
@@ -22,7 +22,7 @@ import mozen.model.User;
 import mozen.utils.UserHelper;
 
 @RestController
-@RequestMapping("/comments")
+@RequestMapping("/api/comments")
 @CrossOrigin
 public class CommentController {
   @Autowired
diff --git a/mozen/src/main/java/mozen/web/CustomLayerController.java b/mozen/src/main/java/mozen/web/CustomLayerController.java
index ce3e2dfeebd792fe51d5a6cbc88238e1d655017c..0ed31f197c06363d185f72588426d174323d5c73 100644
--- a/mozen/src/main/java/mozen/web/CustomLayerController.java
+++ b/mozen/src/main/java/mozen/web/CustomLayerController.java
@@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
 @RestController
-@RequestMapping("/layers")
+@RequestMapping("/api/layers")
 @CrossOrigin
 public class CustomLayerController {
   @Autowired
diff --git a/mozen/src/main/java/mozen/web/ModelController.java b/mozen/src/main/java/mozen/web/ModelController.java
index 11d6b47bafbbbf602a02396667b2cce4596c52e8..69e852234d001f660f062d01a29400225dd6d720 100644
--- a/mozen/src/main/java/mozen/web/ModelController.java
+++ b/mozen/src/main/java/mozen/web/ModelController.java
@@ -30,7 +30,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
 @RestController
-@RequestMapping("/models")
+@RequestMapping("/api/models")
 @CrossOrigin
 public class ModelController {
   @Autowired
diff --git a/mozen/src/main/java/mozen/web/SearchController.java b/mozen/src/main/java/mozen/web/SearchController.java
index 8d6c0fbfb8490154482cdf151272cc2ede9705b4..a4aaddaabe70282ab662da909fc52ca925bf66cb 100644
--- a/mozen/src/main/java/mozen/web/SearchController.java
+++ b/mozen/src/main/java/mozen/web/SearchController.java
@@ -13,7 +13,7 @@ import mozen.business.IModelManager;
 import mozen.messages.SearchResult;
 
 @RestController
-@RequestMapping("/search")
+@RequestMapping("/api/search")
 @CrossOrigin
 public class SearchController {
   @Autowired
diff --git a/mozen/src/main/java/mozen/web/TagController.java b/mozen/src/main/java/mozen/web/TagController.java
index e245ba6df9a9e4cc4bd528ae3af6ae67ac3ecd57..abff07d81299dfa1397406eb953d55bf7e0b74f8 100644
--- a/mozen/src/main/java/mozen/web/TagController.java
+++ b/mozen/src/main/java/mozen/web/TagController.java
@@ -22,7 +22,7 @@ import mozen.messages.TagMessage;
 import mozen.model.TagCategory;
 
 @RestController
-@RequestMapping("/tags")
+@RequestMapping("/api/tags")
 @CrossOrigin
 public class TagController {
   @Autowired
diff --git a/mozen/src/main/java/mozen/web/UserController.java b/mozen/src/main/java/mozen/web/UserController.java
index 4a9f4d9e019ee0cd5786467edaefc66768f0a306..c5504ad728f00c06893a0fb9d13f81e18db414cf 100644
--- a/mozen/src/main/java/mozen/web/UserController.java
+++ b/mozen/src/main/java/mozen/web/UserController.java
@@ -29,7 +29,7 @@ import mozen.utils.JwtUtils;
 import mozen.utils.UserHelper;
 
 @RestController
-@RequestMapping("/users")
+@RequestMapping("/api/users")
 @CrossOrigin
 public class UserController {
   @Autowired
diff --git a/mozen/src/main/java/mozen/web/VoteController.java b/mozen/src/main/java/mozen/web/VoteController.java
index ad0913c66606e052582cd028f3e359fbb059d878..e8a2ceb081fab8fd9fc9219f4073fda92f4f6e6a 100644
--- a/mozen/src/main/java/mozen/web/VoteController.java
+++ b/mozen/src/main/java/mozen/web/VoteController.java
@@ -19,7 +19,7 @@ import mozen.utils.UserHelper;
 import org.springframework.web.bind.annotation.RequestParam;
 
 @RestController
-@RequestMapping("/vote")
+@RequestMapping("/api/vote")
 @CrossOrigin
 public class VoteController {
   @Autowired
diff --git a/mozen/src/main/resources/application.properties b/mozen/src/main/resources/application.properties
index eb021a5f4350993619f1dd704a728cd33b308fc1..4d10c8991625874e9442803c1b173e43dd415bca 100644
--- a/mozen/src/main/resources/application.properties
+++ b/mozen/src/main/resources/application.properties
@@ -1,12 +1,11 @@
-
 server.port=8181
 
 # H2
-spring.datasource.driverClassName=org.hsqldb.jdbcDriver
-spring.datasource.url=jdbc:hsqldb:mem:mydb
-spring.datasource.username=SA
-spring.datasource.password=
-spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
+#spring.datasource.driverClassName=org.hsqldb.jdbcDriver
+#spring.datasource.url=jdbc:hsqldb:mem:mydb
+#spring.datasource.username=SA
+#spring.datasource.password=
+#spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
 
 # MySQL
 #spring.datasource.url=jdbc:mysql://localhost:3306/test
@@ -15,6 +14,20 @@ spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
 #spring.datasource.driver-class-name=com.mysql.jdbc.Driver
 #spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
 
+# MARIADB
+#spring.datasource.url=jdbc:mariadb://localhost:3306/MOZEN_DB
+#spring.datasource.username=mozen_user
+#spring.datasource.password=1234
+#spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+#spring.jpa.hibernate.ddl-auto=update
+
+# DOCKER + MARIADB
+spring.datasource.url=jdbc:mariadb://mozen_mariadb:3306/MOZEN_DB
+spring.datasource.username=mozen_user
+spring.datasource.password=1234
+spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+spring.jpa.hibernate.ddl-auto=update
+
 spring.servlet.multipart.max-file-size=10GB
 spring.servlet.multipart.max-request-size=10GB
 
diff --git a/mozen/src/test/resources/application.properties b/mozen/src/test/resources/application.properties
new file mode 100644
index 0000000000000000000000000000000000000000..ebdca00328a5a9ab106993ea726e123bb0bfed15
--- /dev/null
+++ b/mozen/src/test/resources/application.properties
@@ -0,0 +1,5 @@
+spring.datasource.driverClassName=org.hsqldb.jdbcDriver
+spring.datasource.url=jdbc:hsqldb:mem:mydb
+spring.datasource.username=SA
+spring.datasource.password=
+spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
\ No newline at end of file