Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
a652d0b
Update test unit
ZanDev32 Jul 7, 2025
8916b03
update depedency to Java 17 due to incompability with TestFX in Cl/CD…
ZanDev32 Jul 9, 2025
a7cdfa7
Update Java version in CI workflow to 17 and improve Maven build comm…
ZanDev32 Jul 9, 2025
78b1b76
Update FXML for Achievement
Hiikonics Jul 10, 2025
681d793
Fix Navbar and PosItem bug
ZanDev32 Jul 10, 2025
72568a5
fix image the scaleToFit()
ZanDev32 Jul 10, 2025
f3ca36b
Fix Bug: old userdata got duplicated when new user added
ZanDev32 Jul 11, 2025
72b8e0b
Fix Bug: Overflow post when there are more than 2 post stack eachother
ZanDev32 Jul 11, 2025
86bdc48
Fix Bug: Overflow post when there are more than 2 post stack eachother
ZanDev32 Jul 11, 2025
0e7b32d
Store user data in home
ZanDev32 Jul 11, 2025
93eed08
Update W&W Achievement
Hiikonics Jul 16, 2025
4f93290
Update Model Achievement
Hiikonics Jul 16, 2025
5e49032
Implement the Profile (partial) and minor fix
ZanDev32 Jul 17, 2025
848af45
Refactor and update community and profile views; remove unused FXML f…
ZanDev32 Jul 17, 2025
6a37ff0
Update project structure and enhance file system management
ZanDev32 Jul 17, 2025
bb87c3d
Add Icon both for the App and splashscreen. minor fix too
ZanDev32 Jul 17, 2025
a4beeeb
Update Achievement Controller dikit
Hiikonics Jul 17, 2025
8d412b6
Enhance pom.xml: add packaging type, configure Maven plugins for JAR …
ZanDev32 Jul 17, 2025
c13f5e8
Update FXML Mission
Hiikonics Jul 17, 2025
aa74e25
Update FXML Mission 1.0
Hiikonics Jul 17, 2025
fcea333
minor fix
ZanDev32 Jul 17, 2025
6b51855
Refactor UI components and enhance functionality
ZanDev32 Jul 18, 2025
691f60d
Add post management features: implement post refresh, edit, and delet…
ZanDev32 Jul 18, 2025
7e2a1a8
Refactor image handling: consolidate image loading and scaling method…
ZanDev32 Jul 18, 2025
a129c0d
Merge pull request #12 from ZanDev32:community
ZanDev32 Jul 18, 2025
f7a21a4
Bump com.thoughtworks.xstream:xstream from 1.4.20 to 1.4.21
dependabot[bot] Jul 18, 2025
a6623be
Merge pull request #13 from ZanDev32/dependabot/maven/com.thoughtwork…
ZanDev32 Jul 18, 2025
ddaf98b
First Implementation of chatbot
ZanDev32 Jul 18, 2025
ec57911
minor fix
ZanDev32 Jul 19, 2025
50cd0a0
Refactor logging: replace System.err and System.out with Logger for i…
ZanDev32 Jul 19, 2025
2bf3e97
feat: Update Navbar and Add new Post fxml
ZanDev32 Jul 19, 2025
592aedc
Refactor post handling and UI updates
ZanDev32 Jul 19, 2025
3717e0c
Second Implementation of TabeBot nutrition analysis feature with AI i…
ZanDev32 Jul 20, 2025
01dfa4a
feat: Enhance nutrition analysis with improved verdict handling and U…
ZanDev32 Jul 20, 2025
929e92b
Enhance Achievement Model and Controller #14
ZanDev32 Jul 20, 2025
765bda9
Mission FXML #
ZanDev32 Jul 20, 2025
9e713f8
FIx Bug: Register throw error from old missing method
ZanDev32 Jul 20, 2025
cd94826
Tabestreak FXML Create file
Hiikonics Jul 20, 2025
0510c4b
Update FXML for Achievement
Hiikonics Jul 10, 2025
0de4e2c
Update W&W Achievement
Hiikonics Jul 16, 2025
7661c76
Update Model Achievement
Hiikonics Jul 16, 2025
3624c23
Update Achievement Controller dikit
Hiikonics Jul 17, 2025
c43bf79
Implement chatbot and nutrition analysis features #16
ZanDev32 Jul 20, 2025
216ee97
Merge branch 'mission' of https://github.com/ZanDev32/TabemonPal into…
Hiikonics Jul 20, 2025
8157af5
Add admin panel for post management with access control and data hand…
ZanDev32 Jul 20, 2025
4c2135f
Implement MFXTableView in Admin Panel with enhanced styling and funct…
ZanDev32 Jul 20, 2025
72a4bf6
FXML & CSS Update for TabeStreak
Hiikonics Jul 20, 2025
970bbe3
feat: Introduce Nutrition, Post, and User models with associated data…
ZanDev32 Jul 20, 2025
b128bf3
fix: Correct user password in LocalUserData.xml
ZanDev32 Jul 20, 2025
b307544
Add settings view and controller tests
ZanDev32 Jul 20, 2025
5e240f8
fix typo
ZanDev32 Jul 21, 2025
9bcd014
Add admin panel and data models for post management from ZanDev32:cha…
ZanDev32 Jul 21, 2025
8f7060b
Merge branch 'mission' into main
ZanDev32 Jul 21, 2025
34495ab
Merge branch 'home' into main
ZanDev32 Jul 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v3

- name: Set up JDK 11
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '11'
java-version: '17'
cache: 'maven'
job-status-reporting: false

Expand Down
21 changes: 0 additions & 21 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,21 +0,0 @@
MIT License

Copyright (c) 2025 Zan

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
20 changes: 13 additions & 7 deletions README.MD
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# TabemonPal: The Healthy Eating Gamification App


[![Java](https://img.shields.io/badge/Java-11-red.svg)](https://openjdk.java.net/)
[![Java](https://img.shields.io/badge/Java-17-red.svg)](https://openjdk.java.net/)
[![JavaFX](https://img.shields.io/badge/JavaFX-19-blue.svg)](https://openjfx.io/)
[![MaterialFX](https://img.shields.io/badge/MaterialFX-11.13.5-purple.svg)](https://github.com/palexdev/MaterialFX)

Expand All @@ -26,7 +26,7 @@
### Prerequisites

Ensure you have the following installed on your system:
- Java Development Kit (JDK) 11 or higher
- Java Development Kit (JDK) 17 or higher
- Maven for dependency management

### Installation
Expand All @@ -40,7 +40,7 @@ Follow these steps to set up the project locally:

2. **Build the project with Maven**:
```bash
mvn install
mvn -B clean install
```

3. **Run the application**:
Expand All @@ -60,7 +60,9 @@ TabemonPal/
│ │ ├── App.java # Main application entry point
│ │ ├── api/
│ │ ├── controller/
│ │ ├── models/
│ │ ├── data/
│ │ ├── model/
│ │ ├── repository/
│ │ └── util/
│ └── resources/
│ └── com/
Expand All @@ -72,7 +74,9 @@ TabemonPal/
└── java/
└── com/
└── starlight/
├── models/
├── api/
├── controller/
├── model/
└── util/
```

Expand All @@ -93,8 +97,10 @@ An embedded HTTP server that handles user authentication, registration, and data
### Data Repositories
XML-based repositories for storing and retrieving user accounts and community posts with support for CRUD operations.

All user-generated data (XML files and uploaded images) is stored in a directory named `.tabemonpal` inside the current user's home folder. This keeps application data separate from the installation path and ensures it persists across updates.

### ChatGPT Integration
The application leverages OpenAI's ChatGPT through the ChatGPT Java API to provide intelligent consultation and nutritional advice to users.
The application leverages OpenAI's ChatGPT to provide intelligent consultation and nutritional advice to users.

### MVC Architecture
The application follows the Model-View-Controller pattern with clear separation between data models, JavaFX views, and controller logic.
Expand All @@ -118,13 +124,13 @@ mvn test
### Required Libraries

- MaterialFX: https://github.com/palexdev/MaterialFX
- ChatGPT Java API: https://github.com/PlexPt/chatgpt-java
- XStream: https://x-stream.github.io/

## 🙏 Acknowledgments

- MaterialFX library by Alessandro Parisi for the modern UI components
- PlexPt for the ChatGPT Java API integration
- Praventa-desktop by rizalkalam for some code inpiration
- XStream library for simplified XML serialization

## 📄 License
Expand Down
152 changes: 145 additions & 7 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@
<groupId>com.starlight</groupId>
<artifactId>tabemonpal</artifactId>
<version>0.5-ALPHA</version>
<packaging>jar</packaging>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>

<dependencyManagement>
Expand All @@ -30,6 +31,16 @@
<artifactId>javafx-web</artifactId>
<version>19</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>19</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>19</version>
</dependency>
</dependencies>
</dependencyManagement>

Expand All @@ -46,6 +57,14 @@
<groupId>org.openjfx</groupId>
<artifactId>javafx-web</artifactId>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
</dependency>
<dependency>
<groupId>io.github.palexdev</groupId>
<artifactId>materialfx</artifactId>
Expand All @@ -54,7 +73,7 @@
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.20</version>
<version>1.4.21</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
Expand All @@ -77,7 +96,7 @@
<dependency>
<groupId>org.testfx</groupId>
<artifactId>openjfx-monocle</artifactId>
<version>11.0.2</version>
<version>17.0.10</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand All @@ -94,9 +113,9 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<version>3.11.0</version>
<configuration>
<release>11</release>
<release>17</release>
</configuration>
</plugin>
<plugin>
Expand Down Expand Up @@ -131,19 +150,138 @@
<version>0.0.8</version>
<configuration>
<mainClass>com.starlight.App</mainClass>
<commandlineArgs>
--add-exports=javafx.graphics/com.sun.javafx.application=ALL-UNNAMED
--add-opens=javafx.graphics/com.sun.javafx.application=ALL-UNNAMED
--add-exports=javafx.graphics/com.sun.glass.ui=ALL-UNNAMED
--add-opens=javafx.graphics/com.sun.glass.ui=ALL-UNNAMED
--add-exports=javafx.graphics/com.sun.javafx.util=ALL-UNNAMED
--add-exports=javafx.base/com.sun.javafx.logging=ALL-UNNAMED
--add-exports=javafx.graphics/com.sun.glass.ui=org.testfx
--add-opens=javafx.graphics/com.sun.glass.ui.monocle=ALL-UNNAMED
--add-exports=javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED
--add-opens=javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED
--add-opens=javafx.graphics/com.sun.glass.ui.monocle.input.devices=ALL-UNNAMED
--add-opens=javafx.graphics/com.sun.glass.ui.monocle=org.testfx
--add-exports=javafx.graphics/com.sun.glass.ui.monocle=ALL-UNNAMED
--add-exports=javafx.graphics/com.sun.glass.ui=ALL-UNNAMED,org.testfx.monocle
--add-opens=javafx.graphics/com.sun.javafx.tk=ALL-UNNAMED
--add-exports=javafx.graphics/com.sun.javafx.tk=ALL-UNNAMED
--add-exports=javafx.graphics/com.sun.glass.ui.monocle.input=ALL-UNNAMED
--add-exports=javafx.graphics/com.sun.glass.ui.monocle.input.devices=ALL-UNNAMED
--add-opens=javafx.graphics/com.sun.javafx.application.HostServicesDelegate=ALL-UNNAMED
</commandlineArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<version>3.0.0-M9</version>
<configuration>
<argLine>
--add-exports=javafx.graphics/com.sun.javafx.application=ALL-UNNAMED
--add-opens=javafx.graphics/com.sun.javafx.application=ALL-UNNAMED
--add-exports=javafx.graphics/com.sun.glass.ui=ALL-UNNAMED
--add-opens=javafx.graphics/com.sun.glass.ui=ALL-UNNAMED
--add-exports=javafx.graphics/com.sun.javafx.util=ALL-UNNAMED
--add-exports=javafx.base/com.sun.javafx.logging=ALL-UNNAMED
--add-exports=javafx.graphics/com.sun.glass.ui=org.testfx
--add-opens=javafx.graphics/com.sun.glass.ui.monocle=ALL-UNNAMED
--add-exports=javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED
--add-opens=javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED
--add-opens=javafx.graphics/com.sun.glass.ui.monocle.input.devices=ALL-UNNAMED
--add-opens=javafx.graphics/com.sun.glass.ui.monocle=org.testfx
--add-exports=javafx.graphics/com.sun.glass.ui.monocle=ALL-UNNAMED
--add-exports=javafx.graphics/com.sun.glass.ui=ALL-UNNAMED,org.testfx.monocle
--add-opens=javafx.graphics/com.sun.javafx.tk=ALL-UNNAMED
--add-exports=javafx.graphics/com.sun.javafx.tk=ALL-UNNAMED
--add-exports=javafx.graphics/com.sun.glass.ui.monocle.input=ALL-UNNAMED
--add-exports=javafx.graphics/com.sun.glass.ui.monocle.input.devices=ALL-UNNAMED
--add-opens=javafx.graphics/com.sun.javafx.application.HostServicesDelegate=ALL-UNNAMED
--add-opens=com.starlight/com.starlight=ALL-UNNAMED
--add-opens=com.starlight/com.starlight.api=ALL-UNNAMED
--add-opens=com.starlight/com.starlight.model=ALL-UNNAMED
--add-opens=com.starlight/com.starlight.util=ALL-UNNAMED
--add-opens=com.starlight/com.starlight.controller=ALL-UNNAMED
</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<shadedArtifactAttached>false</shadedArtifactAttached>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.starlight.Launcher</mainClass>
<manifestEntries>
<Multi-Release>true</Multi-Release>
<Add-Opens>javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED javafx.graphics/com.sun.javafx.application=ALL-UNNAMED javafx.graphics/com.sun.glass.ui=ALL-UNNAMED javafx.graphics/com.sun.javafx.util=ALL-UNNAMED javafx.graphics/com.sun.glass.ui.monocle=ALL-UNNAMED javafx.graphics/com.sun.javafx.tk=ALL-UNNAMED javafx.graphics/com.sun.javafx.application.HostServicesDelegate=ALL-UNNAMED</Add-Opens>
<Add-Exports>javafx.graphics/com.sun.javafx.application=ALL-UNNAMED javafx.graphics/com.sun.glass.ui=ALL-UNNAMED javafx.graphics/com.sun.javafx.util=ALL-UNNAMED javafx.base/com.sun.javafx.logging=ALL-UNNAMED javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED javafx.graphics/com.sun.glass.ui.monocle=ALL-UNNAMED javafx.graphics/com.sun.javafx.tk=ALL-UNNAMED javafx.graphics/com.sun.glass.ui.monocle.input=ALL-UNNAMED javafx.graphics/com.sun.glass.ui.monocle.input.devices=ALL-UNNAMED</Add-Exports>
</manifestEntries>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>module-info.class</exclude>
<exclude>META-INF/versions/*/module-info.class</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<delete file="${project.build.directory}/original-${project.build.finalName}.jar" quiet="true"/>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<mainClass>com.starlight.App</mainClass>
<args>
<arg>--add-modules</arg>
<arg>javafx.controls,javafx.fxml,javafx.web</arg>
<arg>--add-exports=javafx.graphics/com.sun.javafx.application=ALL-UNNAMED</arg>
<arg>--add-opens=javafx.graphics/com.sun.javafx.application=ALL-UNNAMED</arg>
<arg>--add-exports=javafx.graphics/com.sun.glass.ui=ALL-UNNAMED</arg>
<arg>--add-opens=javafx.graphics/com.sun.glass.ui=ALL-UNNAMED</arg>
<arg>--add-exports=javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED</arg>
<arg>--add-opens=javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED</arg>
</args>
</configuration>
</plugin>
</plugins>
</build>
</project>
Loading
Loading