diff --git a/.gitignore b/.gitignore
index 8a4f991..cf2f5a8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -43,4 +43,4 @@ bin/
.DS_Store
/logs
-config.toml
+/config
diff --git a/.idea/git_toolbox_prj.xml b/.idea/git_toolbox_prj.xml
new file mode 100644
index 0000000..eb31621
--- /dev/null
+++ b/.idea/git_toolbox_prj.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/dev/coph/flightscore/backend/Backend.java b/src/main/java/dev/coph/flightscore/backend/Backend.java
index 6b2bc14..4e7b0ea 100644
--- a/src/main/java/dev/coph/flightscore/backend/Backend.java
+++ b/src/main/java/dev/coph/flightscore/backend/Backend.java
@@ -1,6 +1,61 @@
package dev.coph.flightscore.backend;
-public class Backend {
+import dev.coph.flightscore.backend.config.Config;
+import dev.coph.simplelogger.Logger;
+import dev.coph.simplerequest.server.WebServer;
+import dev.coph.simplesql.adapter.DatabaseAdapter;
+import dev.coph.simplesql.driver.DriverType;
+import dev.coph.simpleutilities.config.ConfigurationManager;
+import lombok.Getter;
+import lombok.experimental.Accessors;
+@Getter
+@Accessors(fluent = true)
+public class Backend {
+ private final Logger logger = Logger.of("Backend");
+ private final ConfigurationManager configurationManager;
+ private final DatabaseAdapter databaseAdapter;
+ private final WebServer webServer;
+
+
+ public Backend() {
+ logger.info("Loading configuration...");
+ this.configurationManager = new ConfigurationManager();
+ Config configuration = configurationManager.configuration(Config.class);
+ logger.success("Configuration loaded!");
+ logger.info("Preparing database...");
+ this.databaseAdapter = new DatabaseAdapter.Builder()
+ .driverType(DriverType.MARIADB)
+ .host(configuration.database_url())
+ .port(configuration.database_port())
+ .database(configuration.database_databaseName())
+ .user(configuration.database_username())
+ .password(configuration.database_password())
+ .build();
+ logger.success("Database ready!");
+ logger.info("Preparing web server...");
+ this.webServer = new WebServer(configuration.server_port());
+ logger.success("Web server ready!");
+ }
+
+ public void onEnable() {
+ logger.info("Loading routes...");
+
+ logger.success("Routes loaded!");
+
+ logger.info("Starting database...");
+ databaseAdapter.connect();
+ logger.success("Database started!");
+
+ logger.info("Starting web server...");
+ webServer.start();
+ logger.success("Web server started!");
+ }
+
+ public void onDisable() {
+ logger.info("Stopping services...");
+
+ }
+
}
diff --git a/src/main/java/dev/coph/flightscore/backend/Main.java b/src/main/java/dev/coph/flightscore/backend/Main.java
index 7ef33a1..3168043 100644
--- a/src/main/java/dev/coph/flightscore/backend/Main.java
+++ b/src/main/java/dev/coph/flightscore/backend/Main.java
@@ -1,10 +1,25 @@
package dev.coph.flightscore.backend;
+import dev.coph.simplelogger.GenericLogger;
+import dev.coph.simplelogger.LogLevel;
+
public class Main {
+ private static Backend backend;
static void main(String[] args) {
+ GenericLogger.instance().consoleLogLevel(LogLevel.DEBUG);
+ GenericLogger.instance().fileLogLevel(LogLevel.INFO);
+ Runtime.getRuntime().addShutdownHook(new Thread(() -> {
+ if (backend != null) backend.onDisable();
+ }));
+ GenericLogger.info("Preparing backend...");
+ backend = new Backend();
+ GenericLogger.success("Backend ready!");
+ GenericLogger.info("Starting backend...");
+ backend.onEnable();
+ GenericLogger.success("Backend started!");
}
diff --git a/src/main/java/dev/coph/flightscore/backend/action/result/LoginActionResult.java b/src/main/java/dev/coph/flightscore/backend/action/result/LoginActionResult.java
new file mode 100644
index 0000000..bea21ed
--- /dev/null
+++ b/src/main/java/dev/coph/flightscore/backend/action/result/LoginActionResult.java
@@ -0,0 +1,11 @@
+package dev.coph.flightscore.backend.action.result;
+
+import dev.coph.flightscore.backend.user.User;
+
+public class LoginActionResult {
+
+ private User user;
+ private String accessToken;
+ private String refreshToken;
+
+}
diff --git a/src/main/java/dev/coph/flightscore/backend/config/Config.java b/src/main/java/dev/coph/flightscore/backend/config/Config.java
new file mode 100644
index 0000000..f7b22a0
--- /dev/null
+++ b/src/main/java/dev/coph/flightscore/backend/config/Config.java
@@ -0,0 +1,36 @@
+package dev.coph.flightscore.backend.config;
+
+import dev.coph.simpleutilities.config.AbstractConfiguration;
+import dev.coph.simpleutilities.config.ConfigurationFile;
+import dev.coph.simpleutilities.config.DefaultValue;
+import dev.coph.simpleutilities.config.provider.TomlConfigurationProvider;
+import lombok.Getter;
+import lombok.experimental.Accessors;
+
+@Getter
+@Accessors(fluent = true)
+@ConfigurationFile(
+ description = "This is the configuration of the FlightScore backend. Only change if you know what you do.",
+ path = "config/backend.yaml",
+ type = TomlConfigurationProvider.class
+)
+public class Config extends AbstractConfiguration {
+
+ @DefaultValue("8080")
+ private int server_port;
+
+ @DefaultValue("127.0.0.1")
+ private String database_url;
+ @DefaultValue("3306")
+ private int database_port;
+ @DefaultValue("flightscore")
+ private String database_databaseName;
+ @DefaultValue("root")
+ private String database_password;
+ @DefaultValue("root")
+ private String database_username;
+
+ @DefaultValue("7a0c878e20c039349ef3fc5e0bebcedeb1441c123c118b243ee196dc6246cfd7")
+ private String jwt_secret;
+
+}
diff --git a/src/main/java/dev/coph/flightscore/backend/user/User.java b/src/main/java/dev/coph/flightscore/backend/user/User.java
new file mode 100644
index 0000000..e2de283
--- /dev/null
+++ b/src/main/java/dev/coph/flightscore/backend/user/User.java
@@ -0,0 +1,19 @@
+package dev.coph.flightscore.backend.user;
+
+import dev.coph.flightscore.backend.user.role.Role;
+import dev.coph.simpleutilities.ulid.ULID;
+import lombok.Getter;
+import lombok.experimental.Accessors;
+
+@Getter
+@Accessors(fluent = true)
+public class User {
+
+ private ULID id;
+ private String firstName;
+ private String lastName;
+ private String email;
+ private String phoneNumber;
+ private Role role;
+
+}
diff --git a/src/main/java/dev/coph/flightscore/backend/user/UserProvider.java b/src/main/java/dev/coph/flightscore/backend/user/UserProvider.java
new file mode 100644
index 0000000..ace357f
--- /dev/null
+++ b/src/main/java/dev/coph/flightscore/backend/user/UserProvider.java
@@ -0,0 +1,20 @@
+package dev.coph.flightscore.backend.user;
+
+import dev.coph.flightscore.backend.Backend;
+import dev.coph.flightscore.backend.action.result.LoginActionResult;
+import lombok.RequiredArgsConstructor;
+
+@RequiredArgsConstructor
+public class UserProvider {
+ private final Backend backend;
+
+
+
+
+ public LoginActionResult login(String email, String password) {
+
+ return null;
+ }
+
+
+}
diff --git a/src/main/java/dev/coph/flightscore/backend/user/permission/Permission.java b/src/main/java/dev/coph/flightscore/backend/user/permission/Permission.java
new file mode 100644
index 0000000..09fab8c
--- /dev/null
+++ b/src/main/java/dev/coph/flightscore/backend/user/permission/Permission.java
@@ -0,0 +1,14 @@
+package dev.coph.flightscore.backend.user.permission;
+
+import dev.coph.simpleutilities.ulid.ULID;
+import lombok.Getter;
+import lombok.experimental.Accessors;
+
+@Getter
+@Accessors(fluent = true)
+public class Permission {
+
+ private ULID id;
+ private String name;
+
+}
diff --git a/src/main/java/dev/coph/flightscore/backend/user/role/Role.java b/src/main/java/dev/coph/flightscore/backend/user/role/Role.java
new file mode 100644
index 0000000..80cccdb
--- /dev/null
+++ b/src/main/java/dev/coph/flightscore/backend/user/role/Role.java
@@ -0,0 +1,18 @@
+package dev.coph.flightscore.backend.user.role;
+
+import dev.coph.flightscore.backend.user.permission.Permission;
+import dev.coph.simpleutilities.ulid.ULID;
+import lombok.Getter;
+import lombok.experimental.Accessors;
+
+import java.util.HashSet;
+
+@Getter
+@Accessors(fluent = true)
+public class Role {
+
+ private ULID id;
+ private String name;
+ private HashSet permissions = new HashSet<>();
+
+}