---
title: Your data repo
description: Understand the organization data repo, its file layout, and how changes reach models, dashboards, themes, and packages.
species: concept
---
# Your data repo

Each organization has a Git-backed data repo. The in-app **Files** view and an ordinary Git clone edit the same history, so a model reviewed in a pull request is the model Supernova runs.

```text
models/
  revenue.sql
dashboards/
  revenue/
    page.md
    monthly.sql
themes/
  skycrane.json
packages/
  skycrane/finance/typesql.pkg
typesql.lock
```

## File layout

| Path | Meaning |
|---|---|
| `models/**/*.sql` | Materialized models. The basename is the output table name. |
| `dashboards/<slug>/page.md` | Dashboard layout and frontmatter. |
| `dashboards/<slug>/*.sql` | Queries used by that dashboard. |
| `themes/<slug>.json` | Organization-authored chart themes. |
| `packages/<namespace>/<name>/typesql.pkg` | Content-pinned typesql packages. |
| `typesql.lock` | Exact package hashes used by type checking. |

## Change the repo

The **Files** view supports editing, history, and activity without a local checkout. For a local workflow, add an SSH key in organization settings, copy the repo URL, then use standard `git clone`, `git pull`, and `git push` commands.

Every accepted push becomes a new repository revision. Model runs read a fixed revision; they do not mix files from two commits. Dashboard pages resolve their sibling query files from that same history.

## Names are contracts

Moving `models/revenue.sql` changes the model's namespace. Renaming the file changes its output table. Dashboard and package paths are also identifiers, so review path changes as API changes rather than cosmetic edits.

Supernova derives model dependencies from parsed table references and explicit `-- depends_on:` directives. Folder order and file modification times never decide run order.
