> ## Documentation Index
> Fetch the complete documentation index at: https://syncmaven.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Install

Syncmaven can be installed as a Docker image or an NPM package. Docker is the recommended way to use Syncmaven.

# Docker

Syncmaven is available as a Docker image - `syncmaven`.

<Steps>
  <Step title="Create a project directory">
    ```
    mkdir ./syncmaven-example
    ```
  </Step>

  <Step title="Initialize the project">
    ```
    docker run --rm -v ./syncmaven-example:/project syncmaven/syncmaven init
    ```

    <Note>
      `syncmaven/syncmaven` docker image assumes that the project located in docker image `/project` directory. It should be mounted to the local host directory
      where the project is located.
    </Note>
  </Step>

  <Step title="Edit the project">
    Edit the project files in the `./syncmaven-example`.
  </Step>

  <Step title="Run all syncs">
    ```
    docker run --rm -v ./syncmaven-example:/project syncmaven/syncmaven sync
    ```

    Explore other commands by running `docker run --rm syncmaven --help`.
  </Step>
</Steps>

# NPM

Syncmaven is also available as an NPM package - `syncmaven`. It can be installed locally and used as a CLI tool.
Make sure you have Node.js installed on your machine, and it's version is 20 or higher.

<Warning>
  Syncmaven NPM package is not stable yet. You may face issues during installation. If you do, please use the Docker image.
</Warning>

```
npm install -g syncmaven
```

Then you can use `syncmaven` command to run the tool.

```bash theme={null}
syncmaven init -d ./syncmaven-example # Initialize the project
syncmaven sync -d ./syncmaven-example # Run all syncs
syncmaven help # Explore other commands
```

# Next steps

Take a look at the [examples](/examples) to see how Syncmaven can be used in real life:

Get yourself familiar with the [fundamentals](/fundametals):

<CardGroup cols={2}>
  <Card title="Project" icon="folder-open" href="/fundametals/project">
    How to create a project and its structure
  </Card>

  <Card title="Model" icon="table" href="/fundametals/model">
    How to define a model, an SQL query that tells Syncmaven how to fetch data
  </Card>

  <Card title="Destination" icon="bullseye" href="/fundametals/destination">
    How to define a destination, a place where the data will be synced
  </Card>

  <Card title="Sync" icon="arrows-rotate" href="/fundametals/sync">
    A process that connects a [model](/fundametals/model) with a [destination](/fundametals/destination)
  </Card>
</CardGroup>
