ESC
Type to search...
S
Soli Docs

Installation

Get Soli MVC up and running on your machine in minutes. Follow these steps to bootstrap your new project.

1
Prerequisites

Node.js

v16 or higher (for Tailwind CSS)

node --version

npm

Package manager

npm --version

OpenSSL

Required to build from source (libssl-dev / openssl-devel / Homebrew openssl)

openssl version

2
Install Soli CLI

Recommended Quick Install

curl -sSL https://raw.githubusercontent.com/solisoft/soli_lang/main/install.sh | sh

This detects your OS and architecture, downloads the latest release binary, and installs it to ~/.local/bin.

When run as root (e.g. through sudo, or inside a Docker image build), the installer automatically targets /usr/local/bin so every user can run soli — no --system flag needed:

curl -sSL https://raw.githubusercontent.com/solisoft/soli_lang/main/install.sh | sudo sh

A global install also removes any stale per-user copy (e.g. /root/.local/bin/soli) left by older installs, so PATH can't shadow the new binary with an outdated one.

For system-wide installation as a non-root user (the script uses sudo for the copy step):

curl -sSL https://raw.githubusercontent.com/solisoft/soli_lang/main/install.sh | sh -s -- --system

To force a per-user install even when running as root, pass --user.

Via Cargo

cargo install solilang

From Source

# Clone the repository
git clone https://github.com/solisoft/soli_lang.git
cd soli_lang

# Build and install the soli CLI
cargo install --path .

# Verify installation
soli --version

Updating

soli update replaces the binary in place, wherever it was installed. If Soli lives in a root-owned directory (such as /usr/local/bin), run the update with sudo:

sudo soli update

Running soli update without the needed permissions prints a hint telling you to re-run with sudo.

3
Create Your Project

# Create a new Soli app
soli new my_app

This command creates a new project with everything you need:

  • MVC directory structure (app/controllers, app/views, app/models)
  • Tailwind CSS configuration and dependencies
  • Home controller and welcome page
  • Application layout with responsive design
  • Helper functions for views

4
Start Development Server

cd my_app
soli serve . --dev

Your app is now running at http://localhost:5011. In --dev mode the server also compiles your Tailwind CSS automatically — it auto-detects Tailwind v3 vs v4 (v4 needs no tailwind.config.js) and recompiles app/assets/css into public/css on change, so a separate watcher is optional.

Hot Reload Enabled

The --dev flag enables hot reload. Edit any controller, middleware, or view file and refresh your browser to see changes instantly. No restart needed!

Docker

Soli ships an official container image on the GitHub Container Registry, rebuilt and published for every release.

# Pull the latest release (or pin a version, e.g. :v1.13.5)
docker pull ghcr.io/solisoft/soli_lang:latest

The image's entrypoint is the soli binary, so any soli subcommand works as the container command:

docker run --rm ghcr.io/solisoft/soli_lang:latest --version

Run a Soli app in a container

Mount your project into the container and publish the server port. The server binds 0.0.0.0 by default, so the published port is reachable from the host:

docker run --rm -p 5011:5011 \
  -v "$(pwd):/app" -w /app \
  ghcr.io/solisoft/soli_lang:latest serve . --port 5011

Your app is now available at http://localhost:5011.

Build the image yourself

The repository ships a multi-stage Dockerfile that compiles a release binary and copies it into a slim Debian runtime:

git clone https://github.com/solisoft/soli_lang.git
cd soli_lang
docker build -t soli .
docker run --rm soli --version

Project Structure

Understanding the layout of a Soli MVC application.

my_app/
├── app/
│   ├── controllers/          # Request handlers
│   │   └── home_controller.sl
│   ├── helpers/              # View helpers
│   │   └── application_helper.sl
│   ├── models/               # Data models
│   └── views/                # Templates
│       ├── home/
│       │   └── index.html.slv
│       └── layouts/
│           └── application.html.slv
├── config/
│   └── routes.sl           # Route definitions
├── db/
│   └── migrations/           # Database migrations
├── public/                   # Static files
│   ├── css/
│   │   ├── app.css           # Source (Tailwind v4, CSS-first config)
│   │   └── output.css        # Compiled CSS
│   ├── js/
│   └── images/
├── tests/                    # Test files
├── .env                      # Environment variables
└── package.json              # Node.js dependencies

Production Deployment

# Start production server
soli serve . --port 5011

# Or run as a daemon (background process)
soli serve . -d

Troubleshooting

  • If changes don't appear, check the terminal for errors
  • Make sure port 5011 isn't in use by another process

Next Steps