From 93bd9805167ca2a3583e29058fdc5c0ae0e720d3 Mon Sep 17 00:00:00 2001 From: sysnaptik-main Date: Thu, 25 Jun 2026 12:29:14 +0000 Subject: [PATCH] initial commit --- .gitea/workflows/mindflux.yml | 22 +++++++ Dockerfile | 20 +++++++ docker-compose.yml | 17 ++++++ pom.xml | 59 +++++++++++++++++++ .../java/com/mindflux/HelloController.java | 19 ++++++ .../com/mindflux/MindfluxApplication.java | 11 ++++ src/main/resources/application.properties | 8 +++ .../db/migration/V1__initial_schema.sql | 20 +++++++ 8 files changed, 176 insertions(+) create mode 100644 .gitea/workflows/mindflux.yml create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 pom.xml create mode 100644 src/main/java/com/mindflux/HelloController.java create mode 100644 src/main/java/com/mindflux/MindfluxApplication.java create mode 100644 src/main/resources/application.properties create mode 100644 src/main/resources/db/migration/V1__initial_schema.sql diff --git a/.gitea/workflows/mindflux.yml b/.gitea/workflows/mindflux.yml new file mode 100644 index 0000000..aecdb25 --- /dev/null +++ b/.gitea/workflows/mindflux.yml @@ -0,0 +1,22 @@ +name: mindflux-ci + +on: + push: + branches: [ "main" ] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Java 21 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 21 + + - name: Maven Build + run: mvn clean package -DskipTests diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8af54fb --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM maven:3.9.8-eclipse-temurin-21 AS build + +WORKDIR /app + +COPY pom.xml . +RUN mvn dependency:go-offline + +COPY src ./src +RUN mvn clean package -DskipTests + + +FROM eclipse-temurin:21-jdk + +WORKDIR /app + +COPY --from=build /app/target/*.jar app.jar + +EXPOSE 8080 + +CMD ["java", "-jar", "app.jar"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..f10bc06 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +services: + mindflux: + image: registry:5000/mindflux:latest + container_name: mindflux + restart: unless-stopped + environment: + SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/mindfluxdb + SPRING_DATASOURCE_USERNAME: mindflux + SPRING_DATASOURCE_PASSWORD: mindflux_pass + networks: + - backend_network + ports: + - "8081:8080" + +networks: + backend_network: + external: true diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..a326040 --- /dev/null +++ b/pom.xml @@ -0,0 +1,59 @@ + + 4.0.0 + + com.mindflux + mindflux + 1.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 3.3.2 + + + + 21 + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + + org.postgresql + postgresql + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + org.flywaydb + flyway-core + + + + org.flywaydb + flyway-database-postgresql + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/src/main/java/com/mindflux/HelloController.java b/src/main/java/com/mindflux/HelloController.java new file mode 100644 index 0000000..a03af76 --- /dev/null +++ b/src/main/java/com/mindflux/HelloController.java @@ -0,0 +1,19 @@ +package com.mindflux; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +@RestController +public class HelloController { + + @GetMapping("/") + public Map hello() { + return Map.of( + "app", "mindflux", + "status", "running", + "message", "Hello from Spring Boot 🚀" + ); + } +} diff --git a/src/main/java/com/mindflux/MindfluxApplication.java b/src/main/java/com/mindflux/MindfluxApplication.java new file mode 100644 index 0000000..3701fb0 --- /dev/null +++ b/src/main/java/com/mindflux/MindfluxApplication.java @@ -0,0 +1,11 @@ +package com.mindflux; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class MindfluxApplication { + public static void main(String[] args) { + SpringApplication.run(MindfluxApplication.class, args); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..8203438 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,8 @@ +server.port=8080 + +spring.datasource.url=jdbc:postgresql://postgres:5432/mindfluxdb +spring.datasource.username=mindflux +spring.datasource.password=mindflux_pass + +spring.jpa.hibernate.ddl-auto=validate +spring.jpa.show-sql=true diff --git a/src/main/resources/db/migration/V1__initial_schema.sql b/src/main/resources/db/migration/V1__initial_schema.sql new file mode 100644 index 0000000..7a65697 --- /dev/null +++ b/src/main/resources/db/migration/V1__initial_schema.sql @@ -0,0 +1,20 @@ +CREATE TABLE users ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + username VARCHAR(100) NOT NULL UNIQUE, + password VARCHAR(255) NOT NULL, + email VARCHAR(255), + role VARCHAR(50) NOT NULL, + profile_picture VARCHAR(255) +); + +CREATE TABLE achievements ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + username VARCHAR(100), + title VARCHAR(255), + description TEXT, + icon VARCHAR(255), + date_achieved TIMESTAMP +); + +CREATE INDEX idx_achievements_username +ON achievements (username);