This is a static CMS (content management system) made with eleventy for Minecraft mods.
Because I love beta Minecraft mods, plugins and texture-packs! And I'm fascinated with static websites that do not juice the user's CPU. Also, I need to spend my free time with something...
- Listing projects in the artist page.
- Building a single-file repo index for clients to work with (like what F-Droid does)
New projects can be added to /src/project and need to follow a specific structure for proper recognition:
/src/projects/exampleproject/*
├─ index.md - # The text text content for the project page.
├─ index.json - # Project metadata.
├─ logo.png - # Project logo, can be defined to have a different name in the metadata.
└─ docs/* - # Documentation files, will automatically pick up.
├─ install.md - # Example documentation page for installing the plugin.
├─ uninstall.md - # And for uninstalling.
├─ upgrade.md - # And for upgrading.
└─ manage_players.md - # And for managing players.Files used in the project page can be added to it's directory and referenced relatively to the current working dir.
- name - project name.
- subtitle - project's brief description.
- author - your author name, must be consistent across all your submissions.
- tags - whether your project is a plugin or mod.
- images - lists of image files names or URLs that will appear in the project page.
- logo - your logo file name or URL.
- gameVersions - taget Minecraft versions.
- gameLoaders - supported modloaders.
- releasesType - wheter your project uses
localreleases orgithub.
- releases - a list of relases labels and links.
- name - name of the release.
- version - version of the release.
- gameVersions - taget Minecraft versions (overrides default value).
- gameLoaders - supported modloaders (overrides default value).
- downloads - list of download links for this release.
- githubRepoOwner - username of the repo owner.
- githubReponame - name of the repository.
Example index.json for a project:
{
"name": "Ghosts 'n Stuff",
"subtitle": "Miscellaneous additions to your Minecraft server.",
"author": "tenkuma",
"downloadLink": "https://modrinth.com/plugin/ghosts/versions",
"images": ["anti-spam.png", "rainbow-chat.png", "skibidi-blocker.png"],
"logo": "logo.png",
"tags": ["plugin"],
"links": {
"GitHub": "https://github.com/adrianvic/ghostsandstuff",
"Disroot Git": "https://git.disroot.org/adrianvictor/ghostsandstuff"
},
"docs": {
"Installation" : "docs/installation"
},
"releaseType": "github or local",
"githubRepoOwner": "adrianvic",
"githubRepoName": "ghostsandstuff",
"gameLoaders": ["Craftbukkit"]
"releases": [
{
"name": "The first release.",
"version": "1.0.0",
"gameVersions": ["b1.7.3"],
"downloads": {
"GitHub": "https://example.com",
"Modrinth": "https://modrinth.com"
}
}
]
}The structure for adding new author pages is mostly like the one for project pages:
/src/authors/exampleauthor/*
├─ index.md - # The text text content for the author page (bio).
├─ index.json - # Author metadata.
└─ logo.png - # Author logo, can be defined to have a different name in the metadata.The metadata is the same as the projects, however stripped down. The only values are name, subtitle, logo and images.
neoBeta can log into a GitHub account using oAuth, this is used to automatically fetch project releases from a GitHub repository. This is needed because GitHub's API has a limit of 60 requests for users that are not authenticated.
Beforing using this integration you need to populate the enviroment variables GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET with your own oAuth information, and run gen-github-token.cjs. A web server will be started locally (default port is 9876), redirecting you to GitHub's oAuth screen, after logging in the script will populate GITHUB_ACCESS_TOKEN to your .env. You can set GITHUB_ACCESS_TOKEN directly if you have one.
Search is provided statically by elasticlunr. The search index is compiled every time neoBeta is built. From my searches I'm confident elasticlunr will be enough for searching the project base for a sufficient period of time, if it ever get unrealistically heavy to the end-user other solutions will be explored.
Note
I know it's quirky to download neoBeta's whole codebase to add projects, that's why I'll be looking into splitting the projects into a separate repo.
neoBeta is intended to be crowd-sourced, so you can clone our repo, add your plugin page with the ''correct metadata'' and make a merge request. Be sure that you have the necessary rights to upload the project or proper authorization of the creator, open-source projects are better in that matter.
You can also open an issue or send me an e-mail with your project info, or a link for a place with relevant info so I can add your project to our database.
Feel free to submit your contributions to this repo ^^
