Skip to Content
🚀 Drifty v2.1.0 is live! Explore the latest features, join the community or report an issue!

Introduction

Drifty is an open-source file downloader system designed to be user-friendly, fast, and versatile. This document explains how Drifty is structured and the technologies it uses, helping both users and developers understand the project better.

Project Structure

The project is organized into several key directories, each with a specific purpose:

  • .github: GitHub-specific files including workflows, templates, and configurations
  • CLI: Command-line interface application code
  • GUI: Graphical user interface application code
  • Core: Shared code used by both CLI and GUI applications
  • Website: Documentation website built with Next.js
  • website_redirection: Redirection page for the old Drifty website 
  • config: Configuration files for building installers and executables
  • Docker: Docker container configurations
    • dev: Development environment containers
      • CLI: CLI development container
      • GUI: GUI development container
      • commons: Shared base images
    • prod: Production-ready containers
      • CLI: CLI production container
      • GUI: GUI production container

Architecture Overview

Drifty’s architecture is designed to be modular and flexible, allowing for easy development and deployment.

This diagram illustrates the relationships between the different components of Drifty:

  • Core Module: Contains shared code used by both CLI and GUI applications
  • CLI and GUI Applications: Independent applications that depend on the Core module
  • Docker Containers: Built in layers, with development containers extending common base images and production containers containing the final applications

Technologies Used

Drifty uses a variety of technologies to provide a robust and efficient downloading experience. Here’s a breakdown of the key technologies:

Core Technologies

  • Java: The main programming language that powers Drifty’s functionality
  • JavaFX: Framework for building the GUI application, providing a rich user interface
  • Maven: Build automation tool that manages dependencies and builds the project

Build & Development

  • GraalVM: High-performance runtime that allows Drifty to be compiled into native images for faster startup and lower memory usage
  • GluonFX Maven Plugin: Plugin that simplifies building JavaFX applications for multiple platforms
  • Docker: Containerization platform that packages Drifty into portable containers for easy deployment

Website

  • Next.js: Modern framework for building the documentation website
  • Tailwind CSS: Styling system that makes the website look good
  • Nextra: Documentation framework that simplifies writing and managing documentation content

DevOps

  • GitHub Actions: Continuous integration and deployment (CI/CD) tool that automates testing, building, and releasing Drifty
  • GitHub Packages: Package registry for storing and distributing Drifty’s Docker images