بنقرة واحدة
superlandings-go-assets
Asset management, CLI output conventions, and template helpers for SuperLandings Go
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Asset management, CLI output conventions, and template helpers for SuperLandings Go
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Create sites with templates, assets, blog, admin panel — full mastery guide
Deploy SuperLandings Go to remote servers with hotify-cli and Traefik
hotify-cli integration for SuperLandings Go - DNS, Traefik, and reverse proxy configuration
SSH-based site sync and proxy mechanism for SuperLandings Go
| name | superlandings-go-assets |
| description | Asset management, CLI output conventions, and template helpers for SuperLandings Go |
Assets (images, CSS, JS) are stored in ~/.superlandings/sites/{slug}/assets/ — shared across all versions. No duplication on version rollback.
# Upload (create/replace)
sl-cli site upload <site> "<path>" --file <local-file>
sl-cli site upload my-site "logo.png" --file ./logo.png
sl-cli site upload my-site "css/style.css" --file ./dist/style.css
# List
sl-cli site assets list <site>
# Remove
sl-cli site assets remove <site> "<path>"
# Remote (any command + --target <host:port>)
sl-cli site upload my-site "img.png" --file ./img.png --target dk2
{{asset "filename"}}Recursively searches the shared assets directory by filename and returns the first match as a URL path.
<img src="{{asset "logo.png"}}" alt="Logo">
<link rel="stylesheet" href="{{asset "style.css"}}">
If assets/logo.png and assets/nav/logo.png both exist, resolves to /slug/logo.png (first found).
All commands output JSON by default:
| Type | Structure |
|---|---|
| Success | {"version":"1.0","success":true,"message":"...","id":"...","slug":"..."} |
| Data | {"version":"1.0","sites":[...],"assets":[...]} |
| Error | {"version":"1.0","success":false,"error":{"code":81,"type":"invalid_input","message":"...","recoverable":false}} |
Errors go to stderr with semantic exit codes:
| Code | Meaning | Example |
|---|---|---|
| 81 | Missing flag | --name is required |
| 90 | Not found | site not found |
| 92 | Conflict | slug already exists |
| 101 | External failure | hotify-cli error |
The daemon serves content from domains without Traefik path rewriting:
https://test-site.intrane.fr/blue.png
→ Traefik forwards to :3100/blue.png
→ daemon sees Host: test-site.intrane.fr
→ looks up site_domains → resolves slug "test-site"
→ serves sites/test-site/assets/blue.png ✅
Local sl-cli --target <host:port> → HTTP POST to remote daemon API → remote process action → JSON response.
Asset upload via --target: reads file locally → base64 encodes → POSTs to /api/sites/{slug}/upload → remote daemon decodes and writes to disk.
scp sl-cli <user>@<host>:~/sl-cli-new
ssh <user>@<host> "sudo -u <user> pkill -f 'sl-cli backend'; \
sudo cp ~/sl-cli-new /home/<user>/sl-cli; \
sudo -u <user> nohup /home/<user>/sl-cli backend start --daemon --port 3100 --no-systemd > /dev/null 2>&1 &"
~/.hotify/config.json as the infra user or DNS/Traefik setup fails./etc/traefik/*.yml must be writable by the daemon user + passwordless sudo for systemctl restart traefik.html/template requires .Funcs() registered before .Parse().