```brainfuck
.=./:) ,===. .==. ,===. ,===. ____ .=======.
\8.-.') |8@8R\ |88| |@8Y/ |8@8| .xX888b`. |@8^Y^88B\
/8`-'8\ |88,8R\ |@8| |88| |@8Y' /x88' \8b\ |8( ' )8@|
`-'`"` |@8|\_Y\|88| |@8| _ |88| |888| /@8| |(_ o _)8/
.===. |8Y_( )Y\&8| |8&Y( )Y8@| _.-`@88| |8(_,_).' __
|8@8| |&(_ o _)8@| \Y(_ o._)Y/ .X@88^8888| |8&|\Y\ |@8|
|88&| |8L(_,_)\88| \Y(_,_)Y/ |88_( )_88| |X8| \Y`'@8Y/
|Y8R| |8@| |@8| \Y@88Y/ \Y(_ o _)Y/ |8@| \&88Y/
'===' '==' '==' `===` 'Y(_,_)Y' ''=' `'='
```
<p align="center">
<i>Not sure how good this art is, but whatever (c) mxxntype.</i>
<br>
<b>Invar is currently hella WIP, barely anything is implemented, but I'm working on it.</b>
</p>
<h3 align="center">
Invar
</h3>
**Invar** is a CLI management tool for modded (or not) Minecraft servers. This project has the following goals:
- Allowing you to *declaratively* build and configure Minecraft modpacks, which includes managing mods, resourcepacks, shaderpacks and datapacks, while treating their configuration files as first-class citizens. I aim to implement fetching component data from both the [Modrinth](https://modrinth.com) and [CurseForge](https://curseforge.com/minecraft) APIs;
- Providing an automated setup of a [Docker](https://www.docker.com) container with your modded minecraft server, powered by [`itzg/minecraft-server`](https://docker-minecraft-server.readthedocs.io/en/latest) and `docker compose`, with configurable automatic backups and maintenance;
- Being as user-friendly and informative as possible and allowing you to organize and categorize your managed `components`, so you don't get lost in them while playing around with hundreds of mods at the same time.
### Architecture
<img src="https://raw.githubusercontent.com/exoumoon/invar/refs/heads/main/assets/architecture.drawio.svg" width="100%">