mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
chore: rename Stirling-Image to ashim across entire codebase
Complete rebrand from Stirling-Image to ashim following the project move to https://github.com/ashim-hq/ashim. Changes across 117 files: - Package scope: @stirling-image/* → @ashim/* - GitHub URLs: stirling-image/stirling-image → ashim-hq/ashim - Docker Hub: stirlingimage/stirling-image → ashimhq/ashim - GitHub Pages: stirling-image.github.io → ashim-hq.github.io - All branding text: "Stirling Image" → "ashim" - Docker service/volumes/user: stirling → ashim - Database: stirling.db → ashim.db - localStorage keys: stirling-token → ashim-token - Environment variables: STIRLING_GPU → ASHIM_GPU - Python cache dirs: .cache/stirling-image → .cache/ashim - SVG filter IDs, test prefixes, and all other references
This commit is contained in:
@@ -2,23 +2,23 @@ import { defineConfig } from "vitepress";
|
||||
import llmstxt from "vitepress-plugin-llms";
|
||||
|
||||
export default defineConfig({
|
||||
title: "Stirling Image",
|
||||
description: "Documentation for Stirling Image, a self-hosted image processing suite.",
|
||||
base: "/stirling-image/",
|
||||
title: "ashim",
|
||||
description: "Documentation for ashim, a self-hosted image processing suite.",
|
||||
base: "/ashim/",
|
||||
srcDir: ".",
|
||||
outDir: "./.vitepress/dist",
|
||||
ignoreDeadLinks: [/localhost/],
|
||||
|
||||
head: [
|
||||
["meta", { name: "theme-color", content: "#3b82f6" }],
|
||||
["link", { rel: "icon", type: "image/svg+xml", href: "/stirling-image/favicon.svg" }],
|
||||
["link", { rel: "llms-txt", href: "/stirling-image/llms.txt" }],
|
||||
["link", { rel: "icon", type: "image/svg+xml", href: "/ashim/favicon.svg" }],
|
||||
["link", { rel: "llms-txt", href: "/ashim/llms.txt" }],
|
||||
],
|
||||
|
||||
vite: {
|
||||
plugins: [
|
||||
llmstxt({
|
||||
domain: "https://stirling-image.github.io",
|
||||
domain: "https://ashim-hq.github.io",
|
||||
customLLMsTxtTemplate: `# {title}
|
||||
|
||||
{description}
|
||||
@@ -41,7 +41,7 @@ export default defineConfig({
|
||||
|
||||
## Source
|
||||
|
||||
- [GitHub](https://github.com/stirling-image/stirling-image)
|
||||
- [GitHub](https://github.com/ashim-hq/ashim)
|
||||
- License: AGPLv3 (commercial license also available)
|
||||
`,
|
||||
customTemplateVariables: {
|
||||
@@ -93,13 +93,13 @@ export default defineConfig({
|
||||
|
||||
footer: {
|
||||
message:
|
||||
'Released under the <a href="https://github.com/stirling-image/stirling-image/blob/main/LICENSE">AGPLv3 License</a>.',
|
||||
'Released under the <a href="https://github.com/ashim-hq/ashim/blob/main/LICENSE">AGPLv3 License</a>.',
|
||||
copyright:
|
||||
'AI-friendly docs available at <a href="/stirling-image/llms.txt">/llms.txt</a> · <a href="/stirling-image/llms-full.txt">/llms-full.txt</a>',
|
||||
'AI-friendly docs available at <a href="/ashim/llms.txt">/llms.txt</a> · <a href="/ashim/llms-full.txt">/llms-full.txt</a>',
|
||||
},
|
||||
|
||||
editLink: {
|
||||
pattern: "https://github.com/stirling-image/stirling-image/edit/main/apps/docs/:path",
|
||||
pattern: "https://github.com/ashim-hq/ashim/edit/main/apps/docs/:path",
|
||||
text: "Edit this page on GitHub",
|
||||
},
|
||||
},
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
import { onMounted, ref } from "vue";
|
||||
|
||||
const stars = ref<string | null>(null);
|
||||
const repo = "https://github.com/stirling-image/stirling-image";
|
||||
const repo = "https://github.com/ashim-hq/ashim";
|
||||
|
||||
onMounted(async () => {
|
||||
try {
|
||||
const res = await fetch("https://api.github.com/repos/stirling-image/stirling-image");
|
||||
const res = await fetch("https://api.github.com/repos/ashim-hq/ashim");
|
||||
if (!res.ok) return;
|
||||
const data = await res.json();
|
||||
const count = data.stargazers_count;
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# AI engine
|
||||
|
||||
The `@stirling-image/ai` package wraps Python ML models in TypeScript functions. A persistent Python dispatcher process pre-imports heavy ML libraries at startup and keeps them warm in memory, eliminating the cold-start latency that would otherwise occur on every request. If the dispatcher is unavailable, the bridge falls back to spawning a fresh subprocess per call.
|
||||
The `@ashim/ai` package wraps Python ML models in TypeScript functions. A persistent Python dispatcher process pre-imports heavy ML libraries at startup and keeps them warm in memory, eliminating the cold-start latency that would otherwise occur on every request. If the dispatcher is unavailable, the bridge falls back to spawning a fresh subprocess per call.
|
||||
|
||||
All model weights are bundled in the Docker image during the build. No downloads happen at runtime.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Image engine
|
||||
|
||||
The `@stirling-image/image-engine` package handles all non-AI image operations. It wraps [Sharp](https://sharp.pixelplumbing.com/) and runs entirely in-process with no external dependencies.
|
||||
The `@ashim/image-engine` package handles all non-AI image operations. It wraps [Sharp](https://sharp.pixelplumbing.com/) and runs entirely in-process with no external dependencies.
|
||||
|
||||
## Operations
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
The API server runs on port 1349 by default and serves all endpoints under `/api`.
|
||||
|
||||
::: tip Full API Reference
|
||||
Your Stirling Image instance includes a complete interactive API reference at `/api/docs` (e.g. `http://your-host:1349/api/docs`) with all 80+ endpoints, request/response schemas, and examples.
|
||||
Your ashim instance includes a complete interactive API reference at `/api/docs` (e.g. `http://your-host:1349/api/docs`) with all 80+ endpoints, request/response schemas, and examples.
|
||||
:::
|
||||
|
||||
::: info LLM-friendly docs
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# Architecture
|
||||
|
||||
Stirling Image is a monorepo managed with pnpm workspaces and Turborepo. Everything ships as a single Docker container.
|
||||
ashim is a monorepo managed with pnpm workspaces and Turborepo. Everything ships as a single Docker container.
|
||||
|
||||
## Project structure
|
||||
|
||||
```
|
||||
Stirling-Image/
|
||||
ashim/
|
||||
├── apps/
|
||||
│ ├── api/ # Fastify backend
|
||||
│ ├── web/ # React + Vite frontend
|
||||
@@ -19,13 +19,13 @@ Stirling-Image/
|
||||
|
||||
## Packages
|
||||
|
||||
### `@stirling-image/image-engine`
|
||||
### `@ashim/image-engine`
|
||||
|
||||
The core image processing library built on [Sharp](https://sharp.pixelplumbing.com/). It handles all non-AI operations: resize, crop, rotate, flip, convert, compress, strip metadata, and color adjustments (brightness, contrast, saturation, grayscale, sepia, invert, color channels).
|
||||
|
||||
This package has no network dependencies and runs entirely in-process.
|
||||
|
||||
### `@stirling-image/ai`
|
||||
### `@ashim/ai`
|
||||
|
||||
A bridge layer that calls Python scripts for ML operations. On first use, the bridge starts a persistent Python dispatcher process that pre-imports heavy libraries (rembg, OpenCV, NumPy) and keeps them warm in memory. Subsequent AI calls skip the import overhead entirely. If the dispatcher is unavailable, the bridge falls back to spawning a fresh Python subprocess per request.
|
||||
|
||||
@@ -38,7 +38,7 @@ Supported operations:
|
||||
|
||||
Python scripts live in `packages/ai/python/`. The Docker image pre-downloads all model weights during the build so the container works offline.
|
||||
|
||||
### `@stirling-image/shared`
|
||||
### `@ashim/shared`
|
||||
|
||||
Shared TypeScript types, constants (like `APP_VERSION` and tool definitions), and i18n translation strings used by both the frontend and backend.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Configuration
|
||||
|
||||
All configuration is done through environment variables. Every variable has a sensible default, so Stirling Image works out of the box without setting any of them.
|
||||
All configuration is done through environment variables. Every variable has a sensible default, so ashim works out of the box without setting any of them.
|
||||
|
||||
## Environment variables
|
||||
|
||||
@@ -24,7 +24,7 @@ All configuration is done through environment variables. Every variable has a se
|
||||
| Variable | Default | Description |
|
||||
|---|---|---|
|
||||
| `STORAGE_MODE` | `local` | `local` or `s3`. Only local storage is currently implemented. |
|
||||
| `DB_PATH` | `./data/stirling.db` | Path to the SQLite database file. |
|
||||
| `DB_PATH` | `./data/ashim.db` | Path to the SQLite database file. |
|
||||
| `WORKSPACE_PATH` | `./tmp/workspace` | Directory for temporary files during processing. Cleaned up automatically. |
|
||||
| `FILES_STORAGE_PATH` | `./data/files` | Directory for persistent user files (uploaded images, saved results). |
|
||||
|
||||
@@ -48,7 +48,7 @@ All configuration is done through environment variables. Every variable has a se
|
||||
|
||||
| Variable | Default | Description |
|
||||
|---|---|---|
|
||||
| `APP_NAME` | `Stirling Image` | Display name shown in the UI. |
|
||||
| `APP_NAME` | `ashim` | Display name shown in the UI. |
|
||||
| `DEFAULT_THEME` | `light` | Default theme for new sessions. `light` or `dark`. |
|
||||
| `DEFAULT_LOCALE` | `en` | Default interface language. |
|
||||
|
||||
@@ -56,13 +56,13 @@ All configuration is done through environment variables. Every variable has a se
|
||||
|
||||
```yaml
|
||||
services:
|
||||
stirling-image:
|
||||
image: stirlingimage/stirling-image:latest
|
||||
ashim:
|
||||
image: ashimhq/ashim:latest
|
||||
ports:
|
||||
- "1349:1349"
|
||||
volumes:
|
||||
- stirling-data:/data
|
||||
- stirling-workspace:/tmp/workspace
|
||||
- ashim-data:/data
|
||||
- ashim-workspace:/tmp/workspace
|
||||
environment:
|
||||
- AUTH_ENABLED=true
|
||||
- DEFAULT_USERNAME=admin
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# Database
|
||||
|
||||
Stirling Image uses SQLite with [Drizzle ORM](https://orm.drizzle.team/) for data persistence. The schema is defined in `apps/api/src/db/schema.ts`.
|
||||
ashim uses SQLite with [Drizzle ORM](https://orm.drizzle.team/) for data persistence. The schema is defined in `apps/api/src/db/schema.ts`.
|
||||
|
||||
The database file lives at the path set by `DB_PATH` (defaults to `./data/stirling.db`). In Docker, mount the `/data` volume to persist it across container restarts.
|
||||
The database file lives at the path set by `DB_PATH` (defaults to `./data/ashim.db`). In Docker, mount the `/data` volume to persist it across container restarts.
|
||||
|
||||
## Tables
|
||||
|
||||
@@ -90,7 +90,7 @@ Key-value store for server-wide settings that admins can change from the UI.
|
||||
Drizzle handles schema migrations. The config is in `apps/api/drizzle.config.ts`. During development, run:
|
||||
|
||||
```bash
|
||||
pnpm --filter @stirling-image/api drizzle-kit push
|
||||
pnpm --filter @ashim/api drizzle-kit push
|
||||
```
|
||||
|
||||
In production, the schema is applied automatically on startup.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Deployment
|
||||
|
||||
Stirling Image ships as a single Docker container. The image supports **linux/amd64** (with NVIDIA CUDA) and **linux/arm64** (CPU), so it runs natively on Intel/AMD servers, Apple Silicon Macs, and ARM devices like the Raspberry Pi 4/5.
|
||||
ashim ships as a single Docker container. The image supports **linux/amd64** (with NVIDIA CUDA) and **linux/arm64** (CPU), so it runs natively on Intel/AMD servers, Apple Silicon Macs, and ARM devices like the Raspberry Pi 4/5.
|
||||
|
||||
See [Docker Image](./docker-tags) for GPU setup, Docker Compose examples, and version pinning.
|
||||
|
||||
@@ -8,14 +8,14 @@ See [Docker Image](./docker-tags) for GPU setup, Docker Compose examples, and ve
|
||||
|
||||
```yaml
|
||||
services:
|
||||
stirling-image:
|
||||
image: stirlingimage/stirling-image:latest
|
||||
container_name: stirling-image
|
||||
ashim:
|
||||
image: ashimhq/ashim:latest
|
||||
container_name: ashim
|
||||
ports:
|
||||
- "1349:1349"
|
||||
volumes:
|
||||
- stirling-data:/data
|
||||
- stirling-workspace:/tmp/workspace
|
||||
- ashim-data:/data
|
||||
- ashim-workspace:/tmp/workspace
|
||||
environment:
|
||||
- AUTH_ENABLED=true
|
||||
- DEFAULT_USERNAME=admin
|
||||
@@ -23,8 +23,8 @@ services:
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
stirling-data:
|
||||
stirling-workspace:
|
||||
ashim-data:
|
||||
ashim-workspace:
|
||||
```
|
||||
|
||||
```bash
|
||||
@@ -81,12 +81,12 @@ The `/data` volume is the important one. Without it, you lose all user accounts
|
||||
The container includes a health check that hits `GET /api/v1/health`. Docker uses this to report container status:
|
||||
|
||||
```bash
|
||||
docker inspect --format='{{.State.Health.Status}}' stirling-image
|
||||
docker inspect --format='{{.State.Health.Status}}' ashim
|
||||
```
|
||||
|
||||
## Reverse proxy
|
||||
|
||||
If you're running Stirling Image behind nginx or Caddy, point it at port 1349. Example nginx config:
|
||||
If you're running ashim behind nginx or Caddy, point it at port 1349. Example nginx config:
|
||||
|
||||
```nginx
|
||||
server {
|
||||
@@ -113,7 +113,7 @@ Set `client_max_body_size` to match your `MAX_UPLOAD_SIZE_MB` value.
|
||||
The GitHub repository has three workflows:
|
||||
|
||||
- **ci.yml** -- Runs automatically on every push and PR. Lints, typechecks, tests, builds, and validates the Docker image (without pushing).
|
||||
- **release.yml** -- Triggered manually via `workflow_dispatch`. Runs semantic-release to create a version tag and GitHub release, then builds a multi-arch Docker image (amd64 + arm64) and pushes to Docker Hub (`stirlingimage/stirling-image`) and GitHub Container Registry (`ghcr.io/stirling-image/stirling-image`).
|
||||
- **release.yml** -- Triggered manually via `workflow_dispatch`. Runs semantic-release to create a version tag and GitHub release, then builds a multi-arch Docker image (amd64 + arm64) and pushes to Docker Hub (`ashimhq/ashim`) and GitHub Container Registry (`ghcr.io/ashim-hq/ashim`).
|
||||
- **deploy-docs.yml** -- Builds this documentation site and deploys it to GitHub Pages on push to `main`.
|
||||
|
||||
To create a release, go to **Actions > Release > Run workflow** in the GitHub UI, or run:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Developer guide
|
||||
|
||||
How to set up a local development environment and contribute code to Stirling Image.
|
||||
How to set up a local development environment and contribute code to ashim.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
@@ -14,8 +14,8 @@ Python 3.10+ is only needed if you are working on the AI/ML sidecar (background
|
||||
## Setup
|
||||
|
||||
```bash
|
||||
git clone https://github.com/stirling-image/stirling-image.git
|
||||
cd stirling-image
|
||||
git clone https://github.com/ashim-hq/ashim.git
|
||||
cd ashim
|
||||
pnpm install
|
||||
pnpm dev
|
||||
```
|
||||
@@ -72,7 +72,7 @@ pnpm test:coverage # tests with coverage report
|
||||
|
||||
## Database
|
||||
|
||||
SQLite via Drizzle ORM. The database file lives at `./data/stirling.db` by default.
|
||||
SQLite via Drizzle ORM. The database file lives at `./data/ashim.db` by default.
|
||||
|
||||
```bash
|
||||
cd apps/api
|
||||
@@ -195,13 +195,13 @@ Add a `data-testid` attribute to your action button (as shown above) so e2e test
|
||||
Build the full production image locally:
|
||||
|
||||
```bash
|
||||
docker build -f docker/Dockerfile -t stirling-image:latest .
|
||||
docker build -f docker/Dockerfile -t ashim:latest .
|
||||
```
|
||||
|
||||
Use BuildKit cache mounts for faster rebuilds:
|
||||
|
||||
```bash
|
||||
DOCKER_BUILDKIT=1 docker build -f docker/Dockerfile -t stirling-image:latest .
|
||||
DOCKER_BUILDKIT=1 docker build -f docker/Dockerfile -t ashim:latest .
|
||||
```
|
||||
|
||||
## Environment variables
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# Docker Image
|
||||
|
||||
Stirling Image ships as a single Docker image that works on all platforms.
|
||||
ashim ships as a single Docker image that works on all platforms.
|
||||
|
||||
## Quick start
|
||||
|
||||
```bash
|
||||
docker run -d -p 1349:1349 -v stirling-data:/data stirlingimage/stirling-image:latest
|
||||
docker run -d -p 1349:1349 -v ashim-data:/data ashimhq/ashim:latest
|
||||
```
|
||||
|
||||
The app is available at `http://localhost:1349`.
|
||||
@@ -15,7 +15,7 @@ The app is available at `http://localhost:1349`.
|
||||
The image includes CUDA support on amd64. If you have an NVIDIA GPU with the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) installed, add `--gpus all`:
|
||||
|
||||
```bash
|
||||
docker run -d --gpus all -p 1349:1349 -v stirling-data:/data stirlingimage/stirling-image:latest
|
||||
docker run -d --gpus all -p 1349:1349 -v ashim-data:/data ashimhq/ashim:latest
|
||||
```
|
||||
|
||||
The image auto-detects your GPU at runtime. Without `--gpus all`, it runs on CPU. Same image either way.
|
||||
@@ -56,13 +56,13 @@ GET /api/v1/admin/health
|
||||
|
||||
```yaml
|
||||
services:
|
||||
stirling-image:
|
||||
image: stirlingimage/stirling-image:latest
|
||||
ashim:
|
||||
image: ashimhq/ashim:latest
|
||||
ports:
|
||||
- "1349:1349"
|
||||
volumes:
|
||||
- stirling-data:/data
|
||||
- stirling-workspace:/tmp/workspace
|
||||
- ashim-data:/data
|
||||
- ashim-workspace:/tmp/workspace
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
@@ -71,21 +71,21 @@ services:
|
||||
max-file: "3"
|
||||
|
||||
volumes:
|
||||
stirling-data:
|
||||
stirling-workspace:
|
||||
ashim-data:
|
||||
ashim-workspace:
|
||||
```
|
||||
|
||||
For GPU acceleration via Docker Compose, add the deploy section:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
stirling-image:
|
||||
image: stirlingimage/stirling-image:latest
|
||||
ashim:
|
||||
image: ashimhq/ashim:latest
|
||||
ports:
|
||||
- "1349:1349"
|
||||
volumes:
|
||||
- stirling-data:/data
|
||||
- stirling-workspace:/tmp/workspace
|
||||
- ashim-data:/data
|
||||
- ashim-workspace:/tmp/workspace
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
@@ -96,8 +96,8 @@ services:
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
stirling-data:
|
||||
stirling-workspace:
|
||||
ashim-data:
|
||||
ashim-workspace:
|
||||
```
|
||||
|
||||
## Version pinning
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
|
||||
## Run with Docker
|
||||
|
||||
The fastest way to get Stirling Image running:
|
||||
The fastest way to get ashim running:
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
--name stirling-image \
|
||||
--name ashim \
|
||||
-p 1349:1349 \
|
||||
-v stirling-data:/data \
|
||||
stirlingimage/stirling-image:latest
|
||||
-v ashim-data:/data \
|
||||
ashimhq/ashim:latest
|
||||
```
|
||||
|
||||
Open `http://localhost:1349` in your browser. Log in with `admin` / `admin`.
|
||||
@@ -18,7 +18,7 @@ Open `http://localhost:1349` in your browser. Log in with `admin` / `admin`.
|
||||
Have an NVIDIA GPU? Add `--gpus all` to accelerate background removal (2.7x), upscaling (3x), and OCR (1.5x):
|
||||
|
||||
```bash
|
||||
docker run -d --gpus all -p 1349:1349 -v stirling-data:/data stirlingimage/stirling-image:latest
|
||||
docker run -d --gpus all -p 1349:1349 -v ashim-data:/data ashimhq/ashim:latest
|
||||
```
|
||||
|
||||
Requires [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html). Falls back to CPU if no GPU is found. See [Docker Tags](./docker-tags) for details and benchmarks.
|
||||
@@ -30,14 +30,14 @@ Create a `docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
stirling-image:
|
||||
image: stirlingimage/stirling-image:latest
|
||||
container_name: stirling-image
|
||||
ashim:
|
||||
image: ashimhq/ashim:latest
|
||||
container_name: ashim
|
||||
ports:
|
||||
- "1349:1349"
|
||||
volumes:
|
||||
- stirling-data:/data
|
||||
- stirling-workspace:/tmp/workspace
|
||||
- ashim-data:/data
|
||||
- ashim-workspace:/tmp/workspace
|
||||
environment:
|
||||
- AUTH_ENABLED=true
|
||||
- DEFAULT_USERNAME=admin
|
||||
@@ -45,8 +45,8 @@ services:
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
stirling-data:
|
||||
stirling-workspace:
|
||||
ashim-data:
|
||||
ashim-workspace:
|
||||
```
|
||||
|
||||
```bash
|
||||
@@ -60,8 +60,8 @@ See [Configuration](./configuration) for the full list of environment variables.
|
||||
Requirements: Node.js 22+, pnpm 9+, Python 3.10+
|
||||
|
||||
```bash
|
||||
git clone https://github.com/stirling-image/stirling-image.git
|
||||
cd stirling-image
|
||||
git clone https://github.com/ashim-hq/ashim.git
|
||||
cd ashim
|
||||
pnpm install
|
||||
```
|
||||
|
||||
@@ -86,4 +86,4 @@ Some things to try first:
|
||||
- Batch process a folder of images through any tool
|
||||
- Save results to the Files page for later
|
||||
|
||||
Every tool is also available through the [REST API](../api/rest), so you can script workflows or plug Stirling Image into other systems.
|
||||
Every tool is also available through the [REST API](../api/rest), so you can script workflows or plug ashim into other systems.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Translation guide
|
||||
|
||||
Stirling Image ships with English by default. The i18n system is designed so adding a new language is straightforward. This page walks you through the process.
|
||||
ashim ships with English by default. The i18n system is designed so adding a new language is straightforward. This page walks you through the process.
|
||||
|
||||
## How translations work
|
||||
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
layout: home
|
||||
|
||||
hero:
|
||||
name: "Stirling Image"
|
||||
name: "ashim"
|
||||
text: "Self-hosted image processing"
|
||||
tagline: Resize, compress, convert, remove backgrounds, and more. All on your own server, no data leaves your machine.
|
||||
actions:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "@stirling-image/docs",
|
||||
"name": "@ashim/docs",
|
||||
"version": "1.14.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
Reference in New Issue
Block a user