base on Mbin: a federated content aggregator, voting, discussion and microblogging platform # Mbin
Mbin is a fork of [/kbin](https://codeberg.org/Kbin/kbin-core), community-focused. Feel free to discuss on [Matrix](https://matrix.to/#/#mbin:melroy.org) and to create Pull Requests.
> [!Important]
> Mbin is focused on what the community wants, pull requests can be merged by any repo maintainer (with merge rights in GitHub). Discussions take place on [Matrix](https://matrix.to/#/#mbin:melroy.org) then _consensus_ has to be reached by the community. If approved by the community, only one approval on the PR is required by one of the Mbin maintainers. It's built entirely on trust.
Mbin is a decentralized content aggregator, voting, discussion and microblogging platform running on the fediverse network. It can
communicate with many other ActivityPub services, including Kbin, Mastodon, Lemmy, Pleroma, Peertube. The initiative aims to
promote a free and open internet.
[![Mbin Workflow](https://github.com/MbinOrg/mbin/actions/workflows/action.yaml/badge.svg?branch=main)](https://github.com/MbinOrg/mbin/actions/workflows/action.yaml?query=branch%3Amain)
[![Psalm Security Scan](https://github.com/MbinOrg/mbin/actions/workflows/psalm.yml/badge.svg?branch=main)](https://github.com/MbinOrg/mbin/actions/workflows/psalm.yml?query=branch%3Amain)
[![Translation status](https://hosted.weblate.org/widgets/mbin/-/svg-badge.svg)](https://hosted.weblate.org/engage/mbin/)
[![Matrix](https://img.shields.io/badge/chat-on%20matrix-brightgreen)](https://matrix.to/#/#mbin:melroy.org)
Unique Features of Mbin for server owners & users alike:
- Tons of **[GUI improvements](https://github.com/MbinOrg/mbin/pulls?q=is%3Apr+is%3Amerged+label%3Afrontend)**
- A lot of **[enhancements](https://github.com/MbinOrg/mbin/pulls?q=is%3Apr+is%3Amerged+label%3Aenhancement)**
- Various **[bug fixes](https://github.com/MbinOrg/mbin/pulls?q=is%3Apr+is%3Amerged+label%3Abug)**
- Support of **all** ActivityPub Actor Types (including also "Service" account support; thus support for robot accounts)
- **Up-to-date** PHP packages and **security/vulnerability** issues fixed
- Support for `application/json` Accept request header on all ActivityPub end-points
- Introducing a hosted documentation: [docs.joinmbin.org](https://docs.joinmbin.org)
See also: [all merged PRs](https://github.com/MbinOrg/mbin/pulls?q=is%3Apr+is%3Amerged) or [our releases](https://github.com/MbinOrg/mbin/releases).
For developers:
- Improved [bare metal/VM guide](https://docs.joinmbin.org/admin/installation/bare_metal) and [Docker guide](https://docs.joinmbin.org/admin/installation/docker/)
- [Improved Docker setup](https://github.com/MbinOrg/mbin/pulls?q=is%3Apr+is%3Amerged+label%3Adocker)
- _Developer_ server explained (see [Development Server documentation here](https://docs.joinmbin.org/contributing/development_server) )
- GitHub Security advisories, vulnerability reporting, [Dependabot](https://github.com/features/security) and [Advanced code scanning](https://docs.github.com/en/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning) enabled. And we run `composer audit`.
- Improved **code documentation**
- **Tight integration** with [Mbin Weblate project](https://hosted.weblate.org/engage/mbin/) for translations (Two way sync)
- Last but not least, a **community-focus project embracing the [Collective Code Construction Contract](./C4.md)** (C4). No single maintainer.
## Instances
- [List of instances](https://joinmbin.org/servers)
- [Alternative list of instances at fedidb.org](https://fedidb.org/software/mbin)
- [Alternative list of instances at fediverse.observer](https://mbin.fediverse.observer/list)
![Mbin logo](docs/images/mbin.png)
## Star History
[![Star History Chart](https://api.star-history.com/svg?repos=MbinOrg/mbin&type=Date)](https://star-history.com/#MbinOrg/mbin&Date)
## Contributing
- [Official repository on GitHub](https://github.com/MbinOrg/mbin)
- [Matrix Space for discussions](https://matrix.to/#/#mbin:melroy.org)
- [Translations](https://hosted.weblate.org/engage/mbin/)
- [Contribution guidelines](CONTRIBUTING.md) - please read first, including before opening an issue!
## Magazines
Unofficial magazines:
- [@
[email protected]](https://gehirneimer.de/m/mbinmeta)
- [@
[email protected]](https://kbin.melroy.org/m/updates)
- [@
[email protected]](https://fedia.io/m/AskMbin)
## Contributors
<!-- readme: contributors -start -->
<table>
<tbody>
<tr>
<td align="center">
<a href="https://github.com/ernestwisniewski">
<img src="https://avatars.githubusercontent.com/u/10058784?v=4" width="100;" alt="ernestwisniewski"/>
<br />
<sub><b>Ernest</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/melroy89">
<img src="https://avatars.githubusercontent.com/u/628926?v=4" width="100;" alt="melroy89"/>
<br />
<sub><b>Melroy van den Berg</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/BentiGorlich">
<img src="https://avatars.githubusercontent.com/u/25664458?v=4" width="100;" alt="BentiGorlich"/>
<br />
<sub><b>BentiGorlich</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/e-five256">
<img src="https://avatars.githubusercontent.com/u/146029455?v=4" width="100;" alt="e-five256"/>
<br />
<sub><b>e-five</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/asdfzdfj">
<img src="https://avatars.githubusercontent.com/u/20770492?v=4" width="100;" alt="asdfzdfj"/>
<br />
<sub><b>asdfzdfj</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/weblate">
<img src="https://avatars.githubusercontent.com/u/1607653?v=4" width="100;" alt="weblate"/>
<br />
<sub><b>Weblate (bot)</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/SzymonKaminski">
<img src="https://avatars.githubusercontent.com/u/8536735?v=4" width="100;" alt="SzymonKaminski"/>
<br />
<sub><b>SzymonKaminski</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/cooperaj">
<img src="https://avatars.githubusercontent.com/u/400210?v=4" width="100;" alt="cooperaj"/>
<br />
<sub><b>Adam Cooper</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/simonrcodrington">
<img src="https://avatars.githubusercontent.com/u/12083338?v=4" width="100;" alt="simonrcodrington"/>
<br />
<sub><b>Simon Codrington</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/kkoyung">
<img src="https://avatars.githubusercontent.com/u/11942650?v=4" width="100;" alt="kkoyung"/>
<br />
<sub><b>Kingsley Yung</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/TheVillageGuy">
<img src="https://avatars.githubusercontent.com/u/47496248?v=4" width="100;" alt="TheVillageGuy"/>
<br />
<sub><b>TheVillageGuy</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/danielpervan">
<img src="https://avatars.githubusercontent.com/u/5121830?v=4" width="100;" alt="danielpervan"/>
<br />
<sub><b>Daniel Pervan</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/Ahrotahn">
<img src="https://avatars.githubusercontent.com/u/40727284?v=4" width="100;" alt="Ahrotahn"/>
<br />
<sub><b>Ahrotahn</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/GauthierPLM">
<img src="https://avatars.githubusercontent.com/u/2579741?v=4" width="100;" alt="GauthierPLM"/>
<br />
<sub><b>Gauthier POGAM--LE MONTAGNER</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/CocoPoops">
<img src="https://avatars.githubusercontent.com/u/7891055?v=4" width="100;" alt="CocoPoops"/>
<br />
<sub><b>CocoPoops</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/thepaperpilot">
<img src="https://avatars.githubusercontent.com/u/3683148?v=4" width="100;" alt="thepaperpilot"/>
<br />
<sub><b>Anthony Lawn</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/chall8908">
<img src="https://avatars.githubusercontent.com/u/315948?v=4" width="100;" alt="chall8908"/>
<br />
<sub><b>Chris Hall</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/andrewmoise">
<img src="https://avatars.githubusercontent.com/u/8404538?v=4" width="100;" alt="andrewmoise"/>
<br />
<sub><b>andrewmoise</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/garrettw">
<img src="https://avatars.githubusercontent.com/u/84885?v=4" width="100;" alt="garrettw"/>
<br />
<sub><b>Garrett W.</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/piotr-sikora-v">
<img src="https://avatars.githubusercontent.com/u/1295000?v=4" width="100;" alt="piotr-sikora-v"/>
<br />
<sub><b>Piotr Sikora</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/lilfade">
<img src="https://avatars.githubusercontent.com/u/4168401?v=4" width="100;" alt="lilfade"/>
<br />
<sub><b>Bryson</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/vpzomtrrfrt">
<img src="https://avatars.githubusercontent.com/u/3528358?v=4" width="100;" alt="vpzomtrrfrt"/>
<br />
<sub><b>vpzomtrrfrt</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/cavebob">
<img src="https://avatars.githubusercontent.com/u/75441692?v=4" width="100;" alt="cavebob"/>
<br />
<sub><b>cavebob</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/jwr1">
<img src="https://avatars.githubusercontent.com/u/47087725?v=4" width="100;" alt="jwr1"/>
<br />
<sub><b>John Wesley</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/drupol">
<img src="https://avatars.githubusercontent.com/u/252042?v=4" width="100;" alt="drupol"/>
<br />
<sub><b>Pol Dellaiera</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/ryanmonsen">
<img src="https://avatars.githubusercontent.com/u/55466117?v=4" width="100;" alt="ryanmonsen"/>
<br />
<sub><b>ryanmonsen</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/comradekingu">
<img src="https://avatars.githubusercontent.com/u/13802408?v=4" width="100;" alt="comradekingu"/>
<br />
<sub><b>Allan Nordhøy</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/CSDUMMI">
<img src="https://avatars.githubusercontent.com/u/31551856?v=4" width="100;" alt="CSDUMMI"/>
<br />
<sub><b>CSDUMMI</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/DismalShadowX">
<img src="https://avatars.githubusercontent.com/u/24910097?v=4" width="100;" alt="DismalShadowX"/>
<br />
<sub><b>Nathan Sparrow</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/privacyguard">
<img src="https://avatars.githubusercontent.com/u/92675882?v=4" width="100;" alt="privacyguard"/>
<br />
<sub><b>privacyguard</b></sub>
</a>
</td>
</tr>
<tbody>
</table>
<!-- readme: contributors -end -->
## Getting Started
### Documentation
See [docs.joinmbin.org](https://docs.joinmbin.org)
### Requirements
[See also Symfony requirements](https://symfony.com/doc/current/setup.html#technical-requirements)
- PHP version: 8.2 or higher
- GD or Imagemagick PHP extension
- NGINX / Apache / Caddy
- PostgreSQL
- RabbitMQ
- Valkey / KeyDB / Redis
- Mercure (optional)
## Languages
Following languages are currently supported/translated:
- Bulgarian
- Chinese
- Danish
- Dutch
- English
- Esperanto
- Filipino
- French
- Galician
- German
- Greek
- Italian
- Japanese
- Polish
- Portuguese
- Portuguese (Brazil)
- Russian
- Spanish
- Turkish
- Ukrainian
## Credits
- [grumpyDev](https://karab.in/u/grumpyDev): icons, kbin-theme
- [Emma](https://codeberg.org/LItiGiousemMA/Postmill): Postmill
- [Ernest](https://github.com/ernestwisniewski): Kbin
## License
[AGPL-3.0 license](LICENSE)
", Assign "at most 3 tags" to the expected json: {"id":"3624","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"