diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index f91f646..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# https://help.github.com/articles/dealing-with-line-endings/
-#
-# Linux start script should use lf
-/gradlew text eol=lf
-
-# These are Windows script files and should use crlf
-*.bat text eol=crlf
-
-# Binary files should be left untouched
-*.jar binary
-
diff --git a/.github/workflows/deploy-release.yml b/.github/workflows/deploy-release.yml
new file mode 100644
index 0000000..5ede354
--- /dev/null
+++ b/.github/workflows/deploy-release.yml
@@ -0,0 +1,30 @@
+name: Deploy Release
+
+on:
+ release:
+ types: [released, prereleased]
+
+jobs:
+ deploy-release:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ steps:
+ - uses: actions/checkout@v4
+ - name: Set up JDK 17
+ uses: actions/setup-java@v4
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ - name: Grant execute permission
+ run: chmod +x gradlew
+ - name: Extract version (strip leading v)
+ run: echo "VERSION=${GITHUB_REF_NAME#v}" >> $GITHUB_ENV
+ - name: Deploy to Maven Central
+ run: ./gradlew deployCentralPortal -Pversion=$VERSION
+ env:
+ MVN_GPG_KEY: ${{ secrets.MVN_GPG_KEY }}
+ MVN_GPG_PASSWORD: ${{ secrets.MVN_GPG_PASSWORD }}
+ SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
+ SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
+ VERSION: ${{ env.VERSION }}
\ No newline at end of file
diff --git a/.github/workflows/deploy-snapshot.yml b/.github/workflows/deploy-snapshot.yml
new file mode 100644
index 0000000..46eaa32
--- /dev/null
+++ b/.github/workflows/deploy-snapshot.yml
@@ -0,0 +1,27 @@
+name: Deploy Snapshot
+
+on:
+ push:
+ branches: [develop]
+
+jobs:
+ deploy-snapshot:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ steps:
+ - uses: actions/checkout@v4
+ - name: Set up JDK 17
+ uses: actions/setup-java@v4
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ - name: Grant execute permission
+ run: chmod +x gradlew
+ - name: Deploy Snapshot
+ run: ./gradlew deployNexusSnapshot -Pversion=$VERSION-SNAPSHOT
+ env:
+ MVN_GPG_KEY: ${{ secrets.MVN_GPG_KEY }}
+ MVN_GPG_PASSWORD: ${{ secrets.MVN_GPG_PASSWORD }}
+ SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
+ SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index a7c6327..d81b0c8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,48 @@
-# Ignore Gradle project-specific cache directory
.gradle
+build/
+!gradle/wrapper/gradle-wrapper.jar
+!**/src/main/**/build/
+!**/src/test/**/build/
-# Ignore Gradle build output directory
-build
-/local.properties
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+out/
+!**/src/main/**/out/
+!**/src/test/**/out/
+
+### Kotlin ###
+.kotlin
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+bin/
+!**/src/main/**/bin/
+!**/src/test/**/bin/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
+
+### Junie
+/.junie/
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
index 13566b8..7bc07ec 100644
--- a/.idea/.gitignore
+++ b/.idea/.gitignore
@@ -3,6 +3,8 @@
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
+# Environment-dependent path to Maven home directory
+/mavenHomeManager.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..d36af14
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+control
\ No newline at end of file
diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml
new file mode 100644
index 0000000..4a53bee
--- /dev/null
+++ b/.idea/AndroidProjectSystem.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
deleted file mode 100644
index 61a9130..0000000
--- a/.idea/compiler.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/copyright/NextFTC_Copyright.xml b/.idea/copyright/NextFTC_Copyright.xml
deleted file mode 100644
index 3482a61..0000000
--- a/.idea/copyright/NextFTC_Copyright.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
deleted file mode 100644
index 3732b80..0000000
--- a/.idea/copyright/profiles_settings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 68b8616..2a65317 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,13 +4,11 @@