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