Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
60 changes: 60 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Build

on:
push:
branches:
- "**"
pull_request:

permissions:
contents: read

jobs:
gradle:
name: Gradle
runs-on: ubuntu-latest

steps:
- name: Check out repository
uses: actions/checkout@v7

- name: Set up Java
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 25

- name: Set up Gradle
uses: gradle/actions/setup-gradle@v6

- name: Build and test
run: ./gradlew build

website:
name: Website
runs-on: ubuntu-latest
defaults:
run:
working-directory: docs

steps:
- name: Check out repository
uses: actions/checkout@v7

- name: Set up pnpm
uses: pnpm/action-setup@v6
with:
version: 11.10.0

- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
cache-dependency-path: docs/pnpm-lock.yaml

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build website
run: pnpm build
21 changes: 21 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Release

on:
push:
tags:
- "**"

permissions:
contents: read

jobs:
release:
name: Release
if: ${{ vars.RELEASES_ENABLED == 'true' }}
runs-on: ubuntu-latest

steps:
- name: Release is not configured
run: |
echo "Configure the release steps before setting RELEASES_ENABLED to true."
exit 1
45 changes: 45 additions & 0 deletions .github/workflows/website.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Website release

on:
push:
branches:
- main
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: github-pages
cancel-in-progress: true

jobs:
build:
name: Build website
runs-on: ubuntu-latest

steps:
- name: Check out repository
uses: actions/checkout@v7

- name: Build and upload website
uses: withastro/action@v6
with:
path: docs
node-version: 24
package-manager: pnpm@11.10.0

deploy:
name: Deploy website
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}

steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v5
1 change: 1 addition & 0 deletions CNAME
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
twaddle.asorda.net
16 changes: 0 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,6 @@ Tools and twaddle is built around a few strong opinions:
- Server features should be isolated enough to develop, test, and replace independently.
- The framework should make it easier to build actual projects, not just quick prototypes.

## What it provides
While the exact feature set depends on the current implementation, the intended shape of the framework is:
- A DI context for building and testing server software based on koin
- A structured bootstrap and lifecycle model for different elements
- Shared conventions for configuration, service registration, and cross-module communication.
- An opinionated developer experience on top of Minestom's low-level primitives.


## Design principles

### Pluggable by default
Expand All @@ -51,14 +43,6 @@ mod loader; it is trying to give Minestom-based servers a better composition mod
The framework should scale from isolated experiments to larger projects with multiple systems, contributors, and
deployment environments.

## Getting started
Until the public API settles, the best way to approach Tools and twaddle is as a framework for experimentation:
1. Start with a small Minestom project.
2. Add Tools and twaddle as the organizational layer around it.
3. Keep gameplay logic in isolated modules.
4. Expect breaking changes while the architecture matures.
5. Use the project to validate patterns before committing to long-term APIs.

## Who this is for
Tools and twaddle is a good fit if you:
- Build directly against Minestom.
Expand Down
21 changes: 21 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# build output
dist/
# generated types
.astro/

# dependencies
node_modules/

# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*


# environment variables
.env
.env.production

# macOS-specific files
.DS_Store
22 changes: 22 additions & 0 deletions docs/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
## Development

When starting the dev server, use background mode:

```
astro dev --background
```

Manage the background server with `astro dev stop`, `astro dev status`, and `astro dev logs`.

## Documentation

Full documentation: https://docs.astro.build

Consult these guides before working on related tasks:

- [Adding pages, dynamic routes, or middleware](https://docs.astro.build/en/guides/routing/)
- [Working with Astro components](https://docs.astro.build/en/basics/astro-components/)
- [Using React, Vue, Svelte, or other framework components](https://docs.astro.build/en/guides/framework-components/)
- [Adding or managing content](https://docs.astro.build/en/guides/content-collections/)
- [Adding styles or using Tailwind](https://docs.astro.build/en/guides/styling/)
- [Supporting multiple languages](https://docs.astro.build/en/guides/internationalization/)
1 change: 1 addition & 0 deletions docs/CLAUDE.md
57 changes: 57 additions & 0 deletions docs/astro.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
// @ts-check
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';

// https://astro.build/config
export default defineConfig({
site: 'https://twaddle.asorda.net',
integrations: [
starlight({
title: 'Tools & twaddle',
description: 'An opinionated toolkit for building modular Minestom servers.',
favicon: '/favicon.png',
logo: {
src: './src/assets/icon.png',
alt: 'Tools & twaddle toolbox',
},
customCss: ['./src/styles/custom.css'],
social: [
{
icon: 'github',
label: 'GitHub',
href: 'https://github.com/everbuild-org/tools-and-twaddle',
},
],
sidebar: [
{
label: 'Start here',
items: [
{ label: 'Overview', slug: 'index' },
{ label: 'Getting started', slug: 'getting-started' },
],
},
{
label: 'Concepts',
items: [
{ label: 'Architecture', slug: 'concepts/architecture' },
{ label: 'Capability classification', slug: 'concepts/classification' },
],
},
{
label: 'Foundation',
items: [
{ label: 'Core runtime', slug: 'core/runtime' },
{ label: 'Structured logging', slug: 'core/logging' },
{ label: 'Minestom helpers', slug: 'core/minestom-helpers' },
],
},
{
label: 'Modules',
items: [
{ label: 'Inventory transfer rules', slug: 'modules/inventory-transfer' },
],
},
],
}),
],
});
17 changes: 17 additions & 0 deletions docs/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "docs",
"type": "module",
"version": "0.0.1",
"scripts": {
"dev": "astro dev",
"start": "astro dev",
"build": "astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"@astrojs/starlight": "^0.41.6",
"astro": "^7.0.2",
"sharp": "^0.34.5"
}
}
Loading