> ## 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

> Squid SDK project folder layout — entry points, schema file, processor source, migrations, manifest, environment, and conventions for clean structure.

# Squid project structure

All files and folders except `package.json` are optional.

* `package.json` -- Configuration file for dependencies and the build script (invoked with `npm run build`). Hard requirement for deploying to [SQD Cloud](/en/cloud).
* `package-lock.json` OR `yarn.lock` OR `pnpm-lock.yaml` -- Dependencies shrinkwrap. Required for [Cloud](/en/cloud) deployment, except those that [override the dependencies installation command](/en/cloud/reference/manifest#cmd).
* `tsconfig.json` -- Configuration of `tsc`. Required for most squids.
* [Deployment manifest](/en/cloud/reference/manifest) (`squid.yaml` by default) -- Definitions of squid services used for running it locally with [`sqd run`](/en/sdk/squid-sdk/squid-cli/run) and deploying to [SQD Cloud](/en/cloud).
* `.squidignore` -- Files and patterns to be excluded when sending the squid code to the [Cloud](/en/cloud). When not supplied, some files will still be omitted: see the [reference page](/en/cloud/reference/squidignore) for details.
* `schema.graphql` -- [The schema definition file](/en/sdk/squid-sdk/reference/schema-file). Required if your squid [stores its data in PostgreSQL](/en/sdk/squid-sdk/resources/persisting-data/typeorm).
* `/src` -- The TypeScript source code folder for the squid processor.
  * `/src/main.ts` -- The entry point of the squid processor process. Typically, contains a `processor.run()` call.
  * `/src/processor.ts` -- Processor object ([EVM](/en/sdk/squid-sdk/reference/processors/evm-batch) or [Substrate](/en/sdk/squid-sdk/reference/processors/substrate-batch)) definition and configuration.
  * `/src/model/generated` -- The folder for the TypeORM entities generated from `schema.graphql`.
  * `/src/model` -- The module exporting the entity classes.
  * `/src/server-extension/resolvers` -- A folder for [user-defined GraphQL resolvers](/en/sdk/squid-sdk/reference/openreader-server/configuration/custom-resolvers) used by [OpenReader](/en/sdk/squid-sdk/reference/openreader-server).
  * `/src/types` -- A folder for types generated by the Substrate [typegen](/en/sdk/squid-sdk/resources/tools/typegen) tool for use in data decoding.
  * `/src/abi` -- A folder for modules generated by the EVM [typegen](/en/sdk/squid-sdk/resources/tools/typegen) tool containing type definitions and data decoding boilerplate code.
* `/db` -- The designated folder with the [database migrations](/en/sdk/squid-sdk/resources/persisting-data/typeorm).
* `/lib` -- The output folder for the compiled squid code.
* `/assets` -- A designated folder for custom user-provided files (e.g. static data files to seed the squid processor with).
* `/abi` -- A designated folder for JSON ABI files used as input by the EVM [typegen](/en/sdk/squid-sdk/resources/tools/typegen).
* `docker-compose.yml` -- A Docker compose file for local runs. Has a Postgres service definition by default.
* `.env` -- Defines environment variables used by `docker-compose.yml` and when the squid is run locally.
* `typegen.json` -- The config file for the Substrate [typegen](/en/sdk/squid-sdk/resources/tools/typegen) tool.
* `commands.json` -- [User-defined scripts](/en/sdk/squid-sdk/squid-cli/commands-json) picked up by [Squid CLI](/en/sdk/squid-sdk/squid-cli/commands-json). See also the [CLI cheatsheet](/en/sdk/squid-sdk/how-to-start/cli-cheatsheet).
