Overview of Technologies and Theoretical Constructs for Westonia 🌟 - WestoniaSMP/Westonia GitHub Wiki

Westonia is an upcoming Minecraft server project that utilizes modern software development practices and technologies. 🌐 This document outlines the key technologies and concepts used across the different aspects of the project, divided into the following areas:

Minecraft 🎮

Purpur

  • Description: Purpur is a high-performance fork of Paper, which itself is a fork of Spigot. It adds additional APIs and configuration options to enhance gameplay and server administration.
  • Use Case: Custom plugin development and server optimization.

Velocity

  • Description: A modern, high-performance Minecraft proxy designed for scalability and flexibility.
  • Use Case: Managing multiple Minecraft server instances and ensuring seamless communication between them.

OkHttp

  • Description: A Java library for HTTP and HTTP/2 communication.
  • Use Case: Facilitating efficient communication between the Minecraft server and the backend API.

Spring for Dependency Injection (DI)

  • Description: A lightweight framework for dependency injection in Java applications.
  • Use Case: Managing object creation and dependency wiring in plugins to ensure modular and maintainable code.

Jackson

  • Description: A library for processing JSON and YAML data.
  • Use Case: Parsing and writing YAML configuration files for the Minecraft server and its plugins.

Gradle

  • Description: A powerful build automation tool for Java projects.
  • Use Case: Managing dependencies, building plugins, and automating workflows.

Discord OAuth

  • Description: OAuth2 protocol for secure authentication using Discord.
  • Use Case: Restricting server access to authorized users and integrating Discord for identity verification.

Backend 🖥️

EntityFramework (EF)

  • Description: An Object-Relational Mapper (ORM) for .NET.
  • Use Case: Simplifying database interactions by mapping database records to .NET objects.

ASP.NET Identity

  • Description: A library for managing user authentication, roles, and policies in ASP.NET applications.
  • Use Case: Implementing secure user management and role-based access control.

Newtonsoft.JSON

  • Description: A popular .NET library for working with JSON.
  • Use Case: Serializing and deserializing data for API communication and configuration.

REST API (ASP.NET WebAPI)

  • Description: A framework for building RESTful APIs in .NET.
  • Use Case: Exposing endpoints for communication between the Minecraft server, website, and other services.

Swagger

  • Description: A tool for documenting and testing APIs.
  • Use Case: Providing clear and interactive API documentation for developers.

AutoMapper

  • Description: A library for mapping between objects in .NET.
  • Use Case: Simplifying object transformation, especially between data transfer objects (DTOs) and domain models.

Autofac

  • Description: A Dependency Injection (DI) container for .NET.
  • Use Case: Managing service lifetimes and dependencies in the backend application.

Website 🌐

Vue.js 3 (with TypeScript)

  • Description: A modern JavaScript framework for building user interfaces.
  • Use Case: Creating a dynamic and reactive frontend for the server's website.

Vuetify

  • Description: A Material Design component library for Vue.js.
  • Use Case: Ensuring a consistent and visually appealing design for the website.

Pinia

  • Description: A state management library for Vue.js.
  • Use Case: Managing application state in a clean and maintainable way.

SASS

  • Description: A preprocessor scripting language that compiles to CSS.
  • Use Case: Writing modular and reusable styles for the website.

Axios

  • Description: A promise-based HTTP client for JavaScript.
  • Use Case: Handling API requests and responses efficiently in the frontend.

Theoretical Constructs 💡

Docker

  • Description: A platform for developing, shipping, and running applications in lightweight containers.
  • Use Case: Isolating services and creating consistent development, testing, and production environments.

ORM (Object-Relational Mapping)

  • Description: A programming technique for converting data between incompatible systems (like relational databases and object-oriented languages).
  • Use Case: Used by tools like EntityFramework to simplify database operations.

Dependency Injection (DI)

  • Description: A design pattern for managing dependencies and promoting loose coupling in applications.
  • Use Case: Ensures modularity and testability in both Minecraft plugins and backend services.

REST (Representational State Transfer)

  • Description: An architectural style for designing networked applications.
  • Use Case: Standardizes communication between the backend API, Minecraft server, and website.

OAuth2

  • Description: An open standard for access delegation commonly used for token-based authentication.
  • Use Case: Securely authorizing users via Discord for the server.

Material Design

  • Description: A design system created by Google emphasizing simplicity and usability.
  • Use Case: Establishes a consistent design language for the website.

State Management

  • Description: A methodology for handling the state of an application, especially in complex frontends.
  • Use Case: Managed using Pinia to maintain a reactive and consistent user experience.

This technology stack has been selected to ensure scalability, maintainability, and modern best practices across all components of the Westonia project. ✨ Each technology and concept plays a critical role in achieving the vision of a seamless, high-quality Minecraft server experience.