Architecture
Project Structure
The project is organized into the following directories:
.github
(opens in a new tab): Contains the GitHub Actions workflows, issue and pull request templates, linter configuration files, and other GitHub-specific files.CLI
(opens in a new tab): Maven child module containing the source code for the Drifty CLI.GUI
(opens in a new tab): Maven child module containing the source code for the Drifty GUI.Core
(opens in a new tab): Maven child module containing the shared code between the CLI and GUI.Website
(opens in a new tab): Contains the source code for the Drifty website (A Next.js application).config
(opens in a new tab): Contains the configuration files for building the native installers and executables.Docker
(opens in a new tab): Contains the Dockerfile to build and run the Drifty application in a Docker container.dev
(opens in a new tab): Contains the Dockerfiles to build and run the Drifty application in a Docker container for development purposes.CLI
(opens in a new tab): Contains the Dockerfile to build and run the Drifty CLI executable in a Docker container for development purposes.GUI
(opens in a new tab): Contains the Dockerfile to build and run the Drifty GUI executable in a Docker container for development purposes.commons
(opens in a new tab): Contains the Dockerfiles for the base images used by the Drifty CLI and GUI Dockerfiles.
prod
(opens in a new tab): Contains the Dockerfile to build and run the Drifty application in a Docker container for production purposes.CLI
(opens in a new tab): Contains the Dockerfile to build the Docker image for the Drifty CLI executable.GUI
(opens in a new tab): Contains the Dockerfile to build the Docker image for the Drifty GUI executable.
Technologies Used
The Drifty project uses the following technologies:
- Java (opens in a new tab): The project is written in Java, which is a high-level, class-based, object-oriented programming language.
- JavaFX (opens in a new tab): The project uses JavaFX as the GUI toolkit for Drifty GUI.
- Maven (opens in a new tab): The project uses Maven as the build automation and project management tool.
- GraalVM (opens in a new tab): The project uses GraalVM to build native executables for the Drifty CLI and GUI.
- GluonFX Maven Plugin (opens in a new tab): The project uses the GluonFX Maven Plugin (which uses GraalVM under the hood) to build native executables for the Drifty GUI.
- Next.js (opens in a new tab): The project uses Next.js to build the Drifty website.
- Docker (opens in a new tab): The project uses Docker to containerize the Drifty application for development and production purposes.
- GitHub Actions (opens in a new tab): The project uses GitHub Actions for CI/CD workflows.