<p align="center" style="margin-bottom: 0">
    <a href="https://docs.fdm-monster.net/" target="_blank" rel="noopener noreferrer">
        <img width="150" src="https://github.com/fdm-monster/fdm-monster-client/blob/main/public/img/logo.png?raw=true" alt="FDM Monster">
    </a>
</p>
<h1 align="center" style="padding-top: 0; margin-top: 10px">FDM Monster</h1>

<p align="center">
<a href="https://discord.gg/mwA8uP8CMc">
    <img src="https://img.shields.io/discord/864835453773807686?label=Discord"/>
</a>
<a href="https://github.com/fdm-monster/fdm-monster/releases/latest">
    <img src="https://img.shields.io/github/release/fdm-monster/fdm-monster"/>
</a>
<a href="https://github.com/fdm-monster/fdm-monster/stargazers">
    <img src="https://img.shields.io/github/stars/fdm-monster/fdmonster"/>
</a>

<a href="https://github.com/fdm-monster/fdm-monster/issues">
    <img src="https://img.shields.io/github/issues/fdm-monster/fdm-monster"/>
</a> 
<a href="https://app.codecov.io/gh/fdm-monster/fdm-monster">
    <img src="https://codecov.io/gh/fdm-monster/fdm-monster/branch/develop/graph/badge.svg?flag=server-nodejs&precision=0"/>
</a>
<br/>
<a href="https://unraid.net/community/apps?q=fdm+monster">
    <img src="https://img.shields.io/badge/Unraid%20Community%20Application-fc832e"/>
</a>

</p>

## Support the project

Github ![GitHub Sponsor](https://img.shields.io/github/sponsors/fdm-monster?label=Sponsor&logo=GitHub)

Ko-Fi [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/V7V6XFWY0)

<h2 align="center">
<a href="https://docs.fdm-monster.net/" target="_blank">Documentation</a>
</h2>

## What is FDM Monster?

FDM Monster is a server for managing your 3D printer farm through [OctoPrint](https://octoprint.org/).
Our efforts are focused on providing a professional print-farming workflow that is suitable for hobby and commercial farms alike.

This server has been battle-tested in the field for 100+ printers, so give it a star ⭐and enhance your 3D Printing Farm's workflow!

## Features
- Adding OctoPrint instances
- Dragging printers on grid
- Dropping GCode to print
- Batch select and print GCode
- Marking printers as maintenance mode
- Import printers from OctoFarm
- [Raspberry Pi image MonsterPi](https://docs.fdm-monster.net/guides/monsterpi)

![docs/images/server-running.png](https://raw.githubusercontent.com/fdm-monster/fdm-monster-docs/main/docs/images/server-running.png)
_The FDM Monster grid after placing one OctoPrint instance._

## Getting started

Check out the [Documentation](https://docs.fdm-monster.net). Are you interested in running the Raspberry Pi image?
Please jump ahead [MonsterPi Section](https://docs.fdm-monster.net/guides/monsterpi).

### Reach out for questions

Please join the discord, but stay professional and proactive!

- Discord server: https://discord.gg/mwA8uP8CMc
- Website: [https://fdm-monster.net](https://fdm-monster.net)
- Mail: davidzwa@gmail.com

## Contributors ✨

These are the people involved in the project. Find the meaning of the emoji keys [here](https://allcontributors.org/docs/en/emoji-key).

<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-18-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END -->

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
  <tbody>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/davidzwa"><img src="https://avatars.githubusercontent.com/u/6005355?v=4?s=80" width="80px;" alt="David Zwart"/><br /><sub><b>David Zwart</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Adavidzwa" title="Bug reports">🐛</a> <a href="https://github.com/fdm-monster/fdm-monster/commits?author=davidzwa" title="Code">💻</a> <a href="#maintenance-davidzwa" title="Maintenance">🚧</a> <a href="#userTesting-davidzwa" title="User Testing">📓</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://kevenaar.name"><img src="https://avatars.githubusercontent.com/u/834643?v=4?s=80" width="80px;" alt="Maurice Kevenaar"/><br /><sub><b>Maurice Kevenaar</b></sub></a><br /><a href="#security-mkevenaar" title="Security">🛡️</a> <a href="#maintenance-mkevenaar" title="Maintenance">🚧</a> <a href="#ideas-mkevenaar" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Amkevenaar" title="Bug reports">🐛</a> <a href="https://github.com/fdm-monster/fdm-monster/pulls?q=is%3Apr+reviewed-by%3Amkevenaar" title="Reviewed Pull Requests">👀</a> <a href="#infra-mkevenaar" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Tobikisss"><img src="https://avatars.githubusercontent.com/u/45754890?v=4?s=80" width="80px;" alt="Tobias"/><br /><sub><b>Tobias</b></sub></a><br /><a href="#ideas-Tobikisss" title="Ideas, Planning, & Feedback">🤔</a> <a href="#maintenance-Tobikisss" title="Maintenance">🚧</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://tideline3d.com"><img src="https://avatars.githubusercontent.com/u/12903320?v=4?s=80" width="80px;" alt="tideline3d"/><br /><sub><b>tideline3d</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Atideline3d" title="Bug reports">🐛</a> <a href="#ideas-tideline3d" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/windarrow3d"><img src="https://avatars.githubusercontent.com/u/91099282?v=4?s=80" width="80px;" alt="WindArrow3d"/><br /><sub><b>WindArrow3d</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Awindarrow3d" title="Bug reports">🐛</a> <a href="#financial-windarrow3d" title="Financial">💵</a> <a href="#ideas-windarrow3d" title="Ideas, Planning, & Feedback">🤔</a> <a href="#userTesting-windarrow3d" title="User Testing">📓</a> <a href="#platform-windarrow3d" title="Packaging/porting to new platform">📦</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://lucianchapar.com"><img src="https://avatars.githubusercontent.com/u/33263520?v=4?s=80" width="80px;" alt="Lucian Chapar"/><br /><sub><b>Lucian Chapar</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Alucian151" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Dumnersm580"><img src="https://avatars.githubusercontent.com/u/80608783?v=4?s=80" width="80px;" alt="Dumnersm580"/><br /><sub><b>Dumnersm580</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/commits?author=Dumnersm580" title="Documentation">📖</a> <a href="#ideas-Dumnersm580" title="Ideas, Planning, & Feedback">🤔</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="http://www.tophattwaffle.com"><img src="https://avatars.githubusercontent.com/u/6774125?v=4?s=80" width="80px;" alt="tophattwaffle"/><br /><sub><b>tophattwaffle</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Atophattwaffle" title="Bug reports">🐛</a> <a href="#ideas-tophattwaffle" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/rmhenn"><img src="https://avatars.githubusercontent.com/u/22482801?v=4?s=80" width="80px;" alt="rmhenn"/><br /><sub><b>rmhenn</b></sub></a><br /><a href="#ideas-rmhenn" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Armhenn" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/cyrixdx4"><img src="https://avatars.githubusercontent.com/u/62126724?v=4?s=80" width="80px;" alt="cyrixdx4"/><br /><sub><b>cyrixdx4</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Acyrixdx4" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/doucettom"><img src="https://avatars.githubusercontent.com/u/6595645?v=4?s=80" width="80px;" alt="doucettom"/><br /><sub><b>doucettom</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Adoucettom" title="Bug reports">🐛</a> <a href="#ideas-doucettom" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/ZombiesLoveMe"><img src="https://avatars.githubusercontent.com/u/35661391?v=4?s=80" width="80px;" alt="Callum"/><br /><sub><b>Callum</b></sub></a><br /><a href="#ideas-ZombiesLoveMe" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/bharvey88"><img src="https://avatars.githubusercontent.com/u/8107750?v=4?s=80" width="80px;" alt="bharvey88"/><br /><sub><b>bharvey88</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Abharvey88" title="Bug reports">🐛</a> <a href="#infra-bharvey88" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#platform-bharvey88" title="Packaging/porting to new platform">📦</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Mikec78660"><img src="https://avatars.githubusercontent.com/u/108021920?v=4?s=80" width="80px;" alt="Mikec78660"/><br /><sub><b>Mikec78660</b></sub></a><br /><a href="#ideas-Mikec78660" title="Ideas, Planning, & Feedback">🤔</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://techinterview.guide"><img src="https://avatars.githubusercontent.com/u/168030?v=4?s=80" width="80px;" alt="w. ian douglas"/><br /><sub><b>w. ian douglas</b></sub></a><br /><a href="#ideas-iandouglas" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://insanityautomation.com/"><img src="https://avatars.githubusercontent.com/u/38436470?v=4?s=80" width="80px;" alt="InsanityAutomation"/><br /><sub><b>InsanityAutomation</b></sub></a><br /><a href="#ideas-InsanityAutomation" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3AInsanityAutomation" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/LyfeOnEdge"><img src="https://avatars.githubusercontent.com/u/26140376?v=4?s=80" width="80px;" alt="Andrew (LyfeOnEdge) (ArcticGentoo)"/><br /><sub><b>Andrew (LyfeOnEdge) (ArcticGentoo)</b></sub></a><br /><a href="#ideas-LyfeOnEdge" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/callanova"><img src="https://avatars.githubusercontent.com/u/175639705?v=4?s=80" width="80px;" alt="callanova"/><br /><sub><b>callanova</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Acallanova" title="Bug reports">🐛</a></td>
    </tr>
  </tbody>
</table>

<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->

<!-- ALL-CONTRIBUTORS-LIST:END -->

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->

<table></table>

<!-- ALL-CONTRIBUTORS-LIST:END -->

## Sponsors

Please consider sponsoring FDM Monster to help this project! You can find the [GitHub Sponsorship Tiers here](https://github.com/sponsors/fdm-monster).

Thanks to the following parties for their financial support:

| Tier 4 | Tier 3 | Tier 2 | Tier 1 | One Time |
|--------|--------|--------|--------|-----------|
|  | [WindArrow3d](https://github.com/WindArrow3d) | | [doucettom](https://github.com/doucettom) | [th3dstudio](https://github.com/th3dstudio) |


## Contribute

Feel like joining in as a developer or do you have a quick fix? Great! Please read
the [CONTRIBUTING](CONTRIBUTING.md) file.

### Development Progress

- [x] :rocket: Docker amd64 image
- [x] 🛡️ MongoDB 5 & 6 support
- [x] :rocket: Quick copy paste of FDM Monster printers
- [x] 🛡️ Complete API test coverage
- [x] :rocket: Floor management
- [x] Auto-clean old OctoPrint files (opt-in and configurable) 
- [x] :rocket: Windows and Linux Service
- [x] Printer completion/failure tracking (with statistics page)
- [x] Printer placement using drag n drop 
- [x] 🔌 Raspberry Pi image (https://github.com/fdm-monster/MonsterPi)
- [x] :rocket: Documentation (https://docs.fdm-monster.net)
- [x] 🛡️ Login and user management
- [x] OctoFarm export 
- [ ] Klipper and Moonraker API integration
- [ ] OctoKlipper integration
- [ ] Spoolman integration


## License

FDM Monster is licensed with [AGPL-3.0](LICENSE). For details, please consult the [LICENSE](LICENSE) file.

## Historical Note

This project has been forked from OctoFarm at September 2021 when I ended as a contributor to this project. 
