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.