---
title: ResourceSpace
url: 'https://wiki.teletypegames.org/infrastructure/resourcespace'
markdown: 'https://wiki.teletypegames.org/infrastructure/resourcespace.md'
lang: en
date: '2026-10-23'
description: 'ResourceSpace is an open-source Digital Asset Management (DAM) system. We use it to organise, tag, and share game assets — sprites, concept art, audio, video, and documents. Instance URL assets.teletypegames.org Repository infra/resourcespace Software ResourceSpace (open source) Pu…'
taxonomy:
  tag:
    - howto
---

# ResourceSpace

> [ResourceSpace](https://www.resourcespace.com/) is an open-source Digital Asset Management (DAM) system. We use it to organise, tag, and share game assets — sprites, concept art, audio, video, and documents.

# Instance

|  |  |
|---|---|
| **URL** | [assets.teletypegames.org](https://assets.teletypegames.org) |
| **Repository** | [infra/resourcespace](https://git.teletypegames.org/infra/resourcespace) |
| **Software** | [ResourceSpace](https://www.resourcespace.com/) (open source) |
| **Purpose** | Central asset library for all Teletype Games projects |
| **Live stack** | `/srv/stacks/resourcespace` on vps.teletype.hu (git checkout, deployed by the pipeline) |

# What it holds

| Collection | Typical contents |
|---|---|
| Sprites & tilesets | Game graphics, spritesheets, exported atlases |
| Concept art | Sketches, mood boards, character designs |
| Audio | Sound effects, music tracks, stems |
| Video | Trailers, devlogs, screen captures |
| Documents | Design docs, press kits, marketing material |

# Deploy

A push to master deploys from Woodpecker (`ci-deploy resourcespace`, see [Deployment](https://wiki.teletypegames.org/infrastructure/deployment)): the server fast-forwards its checkout, checks the compose file and runs `docker compose up -d --build`. The TTG settings (`config.ttg.php`), the theme plugin and the Apache and PHP tuning are built into the image; only `config.php`, which ResourceSpace writes itself, is mounted from the server. The database password (`db.env`) stays on the server.

# Related pages

- [Server](https://wiki.teletypegames.org/infrastructure/server) — network topology and service overview
- [Backup](https://wiki.teletypegames.org/infrastructure/backup) — database backup includes the ResourceSpace catalog

'; var prevLevel = 2; for (var i = 0; i < headings.length; i++) { var h = headings\[i\]; var text = h.textContent.trim(); var slug = text.toLowerCase() .replace(/\[áàâä\]/g,'a').replace(/\[éèêë\]/g,'e').replace(/\[íìîï\]/g,'i') .replace(/\[óòôöő\]/g,'o').replace(/\[úùûüű\]/g,'u') .replace(/\[^a-z0-9\]+/g, '-').replace(/^-|-$/g, ''); if (!slug) slug = 'heading-' + i; if (used\[slug\]) { slug += '-' + i; } used\[slug\] = true; h.id = slug; var level = parseInt(h.tagName.charAt(1)); var cls = level > 2 ? ' class="toc-child"' : ''; html += '- [' + text + '](#'%20+%20slug%20+%20')
'; } html += '
'; toc.innerHTML = html; // Scroll-spy: highlight current heading var links = toc.querySelectorAll('a'); var ids = \[\]; for (var j = 0; j < links.length; j++) ids.push(links\[j\].getAttribute('href').slice(1)); function updateActive() { var current = ''; for (var k = 0; k < ids.length; k++) { var el = document.getElementById(ids\[k\]); if (el && el.getBoundingClientRect().top <= 80) current = ids\[k\]; } for (var m = 0; m < links.length; m++) { links\[m\].parentNode.classList.toggle('active', links\[m\].getAttribute('href') === '#' + current); } } window.addEventListener('scroll', updateActive, { passive: true }); updateActive(); })();

---

## Navigation

- Parent: [Infrastructure](https://wiki.teletypegames.org/infrastructure.md)
- Previous: [Matomo](https://wiki.teletypegames.org/infrastructure/matomo.md)
- Next: [Server](https://wiki.teletypegames.org/infrastructure/server.md)
