> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dirtview.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Uploading a plan set

> You upload the whole PDF once. DirtView splits it into sheets and reads the number and title off each sheet.

export const Video = ({id, title, runtime, url}) => {
  const meta = VIDEOS[id] || ({});
  const label = title || meta.title || "Tutorial video";
  const length = runtime || meta.runtime || "";
  const track = meta.track || "";
  const src = toEmbedUrl(url || meta.url);
  const frame = {
    position: "relative",
    width: "100%",
    paddingTop: "56.25%",
    borderRadius: "10px",
    overflow: "hidden",
    background: "rgba(127,127,127,0.09)",
    border: src ? "1px solid rgba(127,127,127,0.24)" : "1px dashed rgba(127,127,127,0.42)"
  };
  const fill = {
    position: "absolute",
    inset: 0,
    width: "100%",
    height: "100%",
    border: 0
  };
  const center = {
    position: "absolute",
    inset: 0,
    display: "flex",
    flexDirection: "column",
    alignItems: "center",
    justifyContent: "center",
    gap: "10px",
    padding: "24px",
    textAlign: "center"
  };
  const idBadge = {
    fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
    fontSize: "12px",
    letterSpacing: "0.06em",
    padding: "2px 8px",
    borderRadius: "4px",
    background: "rgba(184,82,40,0.14)",
    color: "#B85228",
    fontWeight: 600
  };
  const caption = {
    display: "flex",
    flexWrap: "wrap",
    alignItems: "center",
    gap: "8px",
    marginTop: "8px",
    fontSize: "13px",
    opacity: 0.66,
    fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace"
  };
  return <div style={{
    margin: "0 0 28px"
  }}>
      <div style={frame}>
        {src ? <iframe style={fill} src={src} title={label} frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" allowFullScreen /> : <div style={center}>
            <svg width="44" height="44" viewBox="0 0 44 44" fill="none" aria-hidden="true">
              <circle cx="22" cy="22" r="20" stroke="currentColor" strokeOpacity="0.28" strokeWidth="2" />
              <path d="M18 15.5L29 22L18 28.5V15.5Z" fill="currentColor" fillOpacity="0.32" />
            </svg>
            <div style={{
    fontWeight: 600,
    fontSize: "15px",
    maxWidth: "36ch",
    lineHeight: 1.35
  }}>{label}</div>
            <div style={{
    fontSize: "13px",
    opacity: 0.6
  }}>
              Video coming soon{length ? " · " + length : ""}
            </div>
          </div>}
      </div>
      <div style={caption}>
        {id ? <span style={idBadge}>{id}</span> : null}
        {length ? <span>{length}</span> : null}
        {track ? <span>{track} track</span> : null}
      </div>
    </div>;
};

<Video id="20.1" />

<Note>
  **The short version.** Upload the entire plan set as one PDF. DirtView splits it into individual sheets and reads the sheet number and title off the drawing itself. You don't upload sheets one at a time.
</Note>

## Upload it

<Steps>
  <Step title="Open Drawings inside the job">
    Drawings belong to one project. Open the job first.
  </Step>

  <Step title="Upload the whole PDF">
    The full set, in one file. Don't split it up first — that's the software's job.
  </Step>

  <Step title="Let it process, then check the index">
    Each page becomes a sheet, with its number and title taken from the sheet. Scan the list and make sure the numbers look like your set.
  </Step>

  <Step title="Fix anything it misread">
    Hand-drawn or stamped title blocks are the usual culprits.
  </Step>
</Steps>

## Folders are optional, sheets are not

Every page becomes a sheet whether you organize it or not. Folders are just a way to group sheets into discipline packages — architectural, structural, mechanical — so people can find things faster. A job with zero folders and 25 sheets is perfectly normal.

<Tip>
  If your tile reads `0 folders / 25 sheets`, nothing is wrong. You just haven't grouped them.
</Tip>

## Next

<CardGroup cols={2}>
  <Card title="Find a sheet fast" icon="magnifying-glass" href="/drawings/find-a-sheet">
    What search actually matches.
  </Card>

  <Card title="Uploading a newer sheet" icon="clock-rotate-left" href="/drawings/revisions">
    How revisions supersede instead of delete.
  </Card>
</CardGroup>
