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

# Project Structure

> Understanding the folder layout of a squid project

This page describes the standard folder layout and configuration files used in squid projects.

<Note>
  All files and folders except `package.json` are optional, though most squids
  will include many of these for full functionality.
</Note>

## Configuration Files

### `package.json`

Configuration file for dependencies and the build script (invoked with `npm run build`).

<Warning>
  This file is required for deploying to [SQD Cloud](/en/cloud/overview).
</Warning>

### Lock files

One of `package-lock.json`, `yarn.lock`, or `pnpm-lock.yaml` - dependencies shrinkwrap file.

Required for [Cloud](/en/cloud/overview) deployment, except those that [override the dependencies installation command](/en/cloud/reference/manifest#cmd).

### `tsconfig.json`

TypeScript compiler configuration. Required for most squids.

### `squid.yaml`

[Deployment manifest](/en/cloud/reference/manifest) defining squid services. Used for running locally with [`sqd run`](/en/cloud/reference/cli/run) and deploying to [SQD Cloud](/en/cloud/overview).

### `.squidignore`

Files and patterns to exclude when deploying to [Cloud](/en/cloud/overview). When not supplied, some files will still be omitted: see the [reference page](/en/cloud/reference/squidignore) for details on default exclusions.

### `schema.graphql`

[Schema definition file](./schema-files/schema-files-codegen) for your data model. Required if your squid [stores its data in PostgreSQL](../guides/writing-to-postgres).

## Source Code

### `/src`

The TypeScript source code folder for the squid processor:

* **`/src/main.ts`** - Entry point of the squid processor process. Typically contains a `processor.run()` call.

* **`/src/processor.ts`** - Processor object ([Tron](./tron-processor/general)) definition and configuration.

* **`/src/model/generated`** - TypeORM entities generated from `schema.graphql`.

* **`/src/model`** - Module exporting the entity classes.

* **`/src/server-extension/resolvers`** - [User-defined GraphQL resolvers](./openreader/configuration/custom-resolvers) for [OpenReader](./openreader/overview).

* **`/src/abi`** - ABI utilities for Tron smart contract interactions.

## Build Output and Artifacts

### `/lib`

Output folder for the compiled squid code (generated by `npm run build`).

### `/db`

Folder containing [database migrations](../guides/writing-to-postgres#database-migrations).

## Additional Folders

### `/assets`

Designated folder for custom user-provided files (e.g., static data files to seed the squid processor).

### `/abi`

Designated folder for Tron ABI files used for smart contract interactions.

## Local Development Files

### `docker-compose.yml`

Docker Compose file for local development. Includes a PostgreSQL service definition by default.

### `.env`

Environment variables used by `docker-compose.yml` and when the squid runs locally.

### `commands.json`

[User-defined scripts](/en/cloud/reference/cli/commands-json) picked up by Squid CLI. See also the [CLI cheatsheet](../guides/advanced/cli-cheatsheet).

## Next Steps

<CardGroup cols={2}>
  <Card title="Development Flow" icon="diagram-project" href="../guides/make-an-indexer">
    Learn the general approach to squid development
  </Card>

  <Card title="CLI Cheatsheet" icon="terminal" href="../guides/advanced/cli-cheatsheet">
    Quick reference for commonly used CLI commands
  </Card>
</CardGroup>
