- CSS 50.7%
- Nunjucks 49.3%
| .woodpecker | Only execute build pipeline in forks. | |
| src | Update hurry-curry.yml | |
| .eleventy.js | Implement ignore patterns to exclude snapshot releases | |
| .gitignore | Some experiments. | |
| LICENSE.md | Update license and readme | |
| package.json | Add 99Managers Futsal Edition game. | |
| README.md | Fix / add mindustry & rota links. | |
FOSS gaming
status-badge Mastodon Lemmy Codeberg Liberapay Open Collective
Table of Contents
Introduction
This repository contains the source code for the website FOSS gaming, a hub for free and open-source gaming news, presenting the most recent releases, devlogs, videos, and social media updates in one place. The site is built using the static site generator 11ty, and is hosted on Codeberg Pages. At its core, the site is based on a collection of yml files with FOSS game and engine metadata, which contain links to RSS feeds and social platforms for each project. We use Codeberg CI to automatically build and deploy the site from this source repository to the FOSSgaming/pages repository.
Contributing
If you want to contribute to the site, you can do so by submitting a pull request to this repository.
Development setup
To set up the project for development, follow these steps:
# Clone the repository
git clone https://codeberg.org/FOSSgaming/pages-data.git
# Change into the project directory
cd pages-data
# Install the dependencies
npm install
# Run the development server
npx @11ty/eleventy --serve
# Check the console output. The site should now be available at http://localhost:8080/
# You can make changes to the template and CSS files, and the server will automatically rebuild the site.
# If you make changes to the data or script files, you need to restart the server. Abort the running server with Ctrl+C and run the serve command again.
Adding projects
To add a new game or engine to the site, you need to follow these steps:
- Create a new file: Create a new
.ymlfile in the appropriate directory (src/gamesorsrc/engines). The file is named after the slugified project name, e.g.ET: Legacybecomeset-legacy.yml. - Add metadata: Add the metadata for the game or engine. Use the existing files as a reference. Include the title, description, icon, RSS feeds, and links.
title:"{Title of the game or engine.}"description:"{Brief description of the game or engine.}"icon:"{URL of the icon image. Preferably a square image, e.g. the repository avatar.}"rssFeeds:releases:codeberg:"{URL of the releases RSS feed on Codeberg. Usually the repository link with /releases.rss appended.}"forgejo:"{URL of the releases RSS feed on Forgejo. Usually the repository link with /releases.rss appended.}"gitea:"{URL of the releases RSS feed on Gitea. Usually the repository link with /releases.rss appended.}"github:"{URL of the releases RSS feed on GitHub. Usually the repository link with /releases.atom appended.}"gitlab:"{URL of the releases RSS feed on GitLab. Usually the repository link with /-/releases.atom appended.}"devlogs:itch-io:"{URL of the devlogs RSS feed on Itch.io. Usually the project link with /devlog.rss appended.}"sourceforge:"{URL of the devlogs RSS feed on SourceForge. Usually 'https://sourceforge.net/p/<PROJECTNAME>/activity/feed'.}"steam:"{URL of the news feed on Steam. Usually 'https://store.steampowered.com/feeds/news/app/<GAME-ID>/'.}"website:"{URL of the devlogs RSS feed on the project's website. Use tools like [RSS Guard](https://github.com/martinrotter/rssguard) to identify the feed URL.}"social-media-updates:mastodon:"{URL of the Mastodon account's RSS feed. Usually the profile link with .rss appended.}"bluesky:"{URL of the Bluesky account's RSS feed. Usually the profile link with /rss appended.}"lemmy:"{URL of the Lemmy account's RSS feed. Usually '<INSTANCE_URL>/feeds/u/<USERNAME>.xml?sort=new'.}"videos:peertube:"{URL of the PeerTube account's RSS feed. Find this by clicking the 'Subscribe' button on the peertube profile, and then 'Subscribe via RSS'.}"youtube:"{URL of the YouTube channel's RSS feed. Usually https://www.youtube.com/feeds/videos.xml?channel_id=<CHANNEL_ID>.}"tags:github:"{URL of the tags RSS feed on GitHub. Usually the repository link with /tags.atom appended.}"gitlab:"{URL of the tags RSS feed on GitLab. Usually the repository link with /-/tags.atom appended.}"gitea:"{URL of the tags RSS feed on Gitea. Usually the repository link with /tags.rss appended.}"forgejo:"{URL of the tags RSS feed on Forgejo. Usually the repository link with /tags.rss appended.}"codeberg:"{URL of the tags RSS feed on Codeberg. Usually the repository link with /tags.rss appended.}"links:website:"{URL of the project's website.}"source-code:"{URL of the project's source code repository.}"wiki:"{URL of the project's wiki.}"itch-io:"{URL of the project's Itch.io page.}"steam:"{URL of the project's Steam page.}"gog:"{URL of the project's GOG page.}"snapcraft:"{URL of the project's Snapcraft page.}"flathub:"{URL of the project's Flathub page.}"google-play:"{URL of the project's Google Play page.}"f-droid:"{URL of the project's F-Droid page.}"app-store:"{URL of the project's App Store page.}"funding:"{URL of the project's funding page.}"translating:"{URL of the project's translation page.}"newsletter:"{URL of the project's newsletter subscription page.}"youtube:"{URL of the project's YouTube channel.}"peertube:"{URL of the project's PeerTube channel.}"mastodon:"{URL of the project's Mastodon account.}"bluesky:"{URL of the project's Bluesky account.}"lemmy:"{URL of the project's Lemmy community.}"forum:"{URL of the project's forum.}"matrix:"{URL of the project's Matrix community.}"discord:"{URL of the project's Discord server.}"irc:"{URL of the project's IRC channel.}"rocketchat:"{URL of the project's Rocket.Chat server.}"xmpp:"{URL of the project's XMPP chatroom.}"- Validate the file: Ensure that the YAML syntax is correct. You can use online tools like YAML Lint to validate the syntax.
- Submit a pull request: Once you have added the new file, commit your changes and submit a pull request. Provide a brief description of the game or engine you are adding.
Updating existing projects
To update the metadata of an existing project, follow these steps:
- Locate the file: Find the
.ymlfile for the project you want to update in thesrc/gamesorsrc/enginesdirectory. - Edit the file: Make the necessary changes to the metadata. Ensure that the YAML syntax remains valid.
- Submit a pull request: Commit your changes and submit a pull request. Provide a brief description of the changes you made.
General guidelines
- For obvious reasons, only include FOSS projects. No proprietary games or engines.
- No mirrors! Only include the main development repository of a project.
- Social media links should only be included if they are used for official announcements related to the project itself. Personal accounts or unrelated content should not be included.
- Ensure that all links are valid and point to the correct resources.
- Use high-quality images for the icons.
- Follow the existing format and structure of the YAML files.
- Provide clear and concise descriptions for each project. For example, stick to the short description provided on the project's website or repository.
- Validate the YAML syntax before submitting a pull request.
- Don't include duplicate feeds, e.g. if a project has mirrors on GitHub and Codeberg, only include the main development repository's releases feed.
- Some projects may not have feeds or links for all supported platforms. In such cases, leave the corresponding section empty or omit it entirely.
- Some social media platforms have proven threatening to privacy and software freedom. We therefore focus on social media feeds from FOSS-friendly platforms like Mastodon, PeerTube, Lemmy... and avoid platforms like Twitter, Facebook, Instagram, TikTok, etc.
License
FOSS gaming is a gurkenlabs project. This project is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE (AGPL-3.0-or-later). See the LICENSE file for details.