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

# Project Structure

> Understanding the Base44 project structure for local development

The Base44 CLI's [`create`](/developers/references/cli/commands/create) command creates new projects with all necessary files and configuration. This article describes the Base44 backend project structure and explains what each file and directory does.

## Backend project structure

When you create a backend-only Base44 project, the CLI generates this minimal structure:

<Tree>
  <Tree.Folder name="<your-project-name>" defaultOpen>
    <Tree.Folder name="base44" defaultOpen>
      <Tree.File name=".app.jsonc" />

      <Tree.File name="config.jsonc" />
    </Tree.Folder>

    <Tree.File name=".gitignore" />
  </Tree.Folder>
</Tree>

As you develop your project, you add files for your resources such as [entities](/developers/backend/resources/entities/overview), [functions](/developers/backend/resources/backend-functions/overview), [agents](/developers/backend/resources/agents/overview), [connectors](/developers/backend/resources/connectors), and [auth config](/developers/backend/resources/auth):

<Tree>
  <Tree.Folder name="<your-project-name>" defaultOpen>
    <Tree.Folder name="base44" defaultOpen>
      <Tree.File name=".app.jsonc" />

      <Tree.File name="config.jsonc" />

      <Tree.Folder name=".types" defaultOpen>
        <Tree.File name="types.d.ts" />
      </Tree.Folder>

      <Tree.Folder name="agents" defaultOpen>
        <Tree.File name="<agent-name>.jsonc" />
      </Tree.Folder>

      <Tree.Folder name="agent-skills" defaultOpen>
        <Tree.File name="<skill-name>.md" />
      </Tree.Folder>

      <Tree.Folder name="auth" defaultOpen>
        <Tree.File name="config.jsonc" />
      </Tree.Folder>

      <Tree.Folder name="connectors" defaultOpen>
        <Tree.File name="<connector-type>.jsonc" />
      </Tree.Folder>

      <Tree.Folder name="entities" defaultOpen>
        <Tree.File name="<entity-name>.jsonc" />
      </Tree.Folder>

      <Tree.Folder name="functions" defaultOpen>
        <Tree.Folder name="<function-name>" defaultOpen>
          <Tree.File name="entry.ts" />

          <Tree.File name="function.jsonc" />
        </Tree.Folder>
      </Tree.Folder>
    </Tree.Folder>

    <Tree.File name=".gitignore" />
  </Tree.Folder>
</Tree>

<Note>
  Functions only require an `entry.ts` or `entry.js` file. You can optionally add `function.jsonc` for advanced configurations like custom names or automations. See [Backend Functions](/developers/backend/resources/backend-functions/overview) for details.
</Note>

### base44/

Contains all Base44 backend configuration and resource definitions.

#### config.jsonc

Defines your project configuration, including paths to [entities](/developers/backend/resources/entities/overview), [functions](/developers/backend/resources/functions), [agents](/developers/backend/resources/agents/overview), [connectors](/developers/backend/resources/connectors), [auth config](/developers/backend/resources/auth), and site hosting settings for full-stack projects. The CLI creates this with just your project name, and you can add more configuration as needed. When `visibility` is set here, [`deploy`](/developers/references/cli/commands/deploy) applies it to the server on every run.

Your project requires a `config.jsonc` (or `config.json`) file in the `base44/` directory:

```jsonc theme={null}
// Base44 Project Configuration
{
  "name": "my-project",
  "description": "My Base44 app",
  "visibility": "private",        // optional: public | private | workspace

  // Directory paths (relative to config file)
  "entitiesDir": "./entities",
  "functionsDir": "./functions",
  "agentsDir": "./agents",
  "agentSkillsDir": "./agent-skills",
  "connectorsDir": "./connectors",
  "authDir": "./auth",

  // Site/hosting configuration (for full-stack projects)
  "site": {
    "outputDirectory": "./dist", // Required - where your built files are located
  },
}
```

| Property               | Description                                                                                                                                                                                                                                                                                                                     | Default          |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
| `name`                 | Project name (required)                                                                                                                                                                                                                                                                                                         | —                |
| `description`          | Project description                                                                                                                                                                                                                                                                                                             | —                |
| `visibility`           | Access level for the published app. Use `public` for an app anyone can open without logging in, `private` to limit access to invited users, or `workspace` to limit access to workspace members.                                                                                                                                | —                |
| `entitiesDir`          | Path to [entities](/developers/backend/resources/entities/overview) directory                                                                                                                                                                                                                                                   | `./entities`     |
| `functionsDir`         | Path to [functions](/developers/backend/resources/backend-functions/overview) directory                                                                                                                                                                                                                                         | `./functions`    |
| `agentsDir`            | Path to [agents](/developers/backend/resources/agents/overview) directory                                                                                                                                                                                                                                                       | `./agents`       |
| `agentSkillsDir`       | Path to [agent skills](/developers/backend/resources/agents/agent-skills) directory                                                                                                                                                                                                                                             | `./agent-skills` |
| `connectorsDir`        | Path to [connectors](/developers/backend/resources/connectors) directory                                                                                                                                                                                                                                                        | `./connectors`   |
| `authDir`              | Path to [auth config](/developers/backend/resources/auth) directory                                                                                                                                                                                                                                                             | `./auth`         |
| `site`                 | Frontend configuration. Omit for backend-only projects.                                                                                                                                                                                                                                                                         | —                |
| `site.outputDirectory` | Where your built site files are located. Required for [`site deploy`](/developers/references/cli/commands/site-deploy).                                                                                                                                                                                                         | —                |
| `site.buildCommand`    | Command run by [`build`](/developers/references/cli/commands/build), [`deploy --build`](/developers/references/cli/commands/deploy), [`site deploy --build`](/developers/references/cli/commands/site-deploy), and [`eject`](/developers/references/cli/commands/eject) to compile the site with `VITE_BASE44_APP_ID` injected. | —                |
| `site.installCommand`  | Command run by [`create`](/developers/references/cli/commands/create), `scaffold`, and [`eject`](/developers/references/cli/commands/eject) to install dependencies before building.                                                                                                                                            | —                |
| `site.serveCommand`    | Command used by [`base44 dev`](/developers/references/cli/commands/dev) to start your frontend dev server alongside the local backend.                                                                                                                                                                                          | —                |

#### .app.jsonc

Links your local project to your Base44 app. This file is automatically created by the CLI when you create or link a project.

Individual CLI commands can override this default with the `--app-id` flag or the `BASE44_APP_ID` environment variable. See [Select a target app](/developers/references/cli/commands/introduction#select-a-target-app).

```jsonc theme={null}
// Base44 App Configuration
// This file links your local project to your Base44 app.
// Do not commit this file to version control.
{
  "id": "your-app-id",
}
```

<Note>
  The `.app.jsonc` file should not be committed to version control. The CLI
  automatically creates a `.gitignore` file that excludes this file.
</Note>

#### .types/types.d.ts

Generated TypeScript type definitions for your entities, functions, agents, and connectors. Created by running [`base44 types generate`](/developers/references/cli/commands/types-generate). This file provides autocomplete and type safety when using the SDK in TypeScript projects. See [Dynamic Types](/developers/references/sdk/getting-started/dynamic-types) for more details.

#### agents/

Directory containing [AI agent configurations](/developers/backend/resources/agents/overview). Each agent is defined in a separate `.json` or `.jsonc` file.

#### agent-skills/

Directory containing [agent skills](/developers/backend/resources/agents/agent-skills), the reusable instruction sets that run inside your app's agents. Each skill is a separate Markdown file whose name is the skill name, with a frontmatter `description` and an instruction body. These are runtime skills for your app's agents, not the AI coding assistant skills described below.

#### auth/

Directory containing your app's [authentication configuration](/developers/backend/resources/auth). Contains a single `config.jsonc` file that defines which login methods are available to your end users. Pull the current config from Base44 with [`auth pull`](/developers/references/cli/commands/auth-pull).

#### connectors/

Directory containing [OAuth connector configurations](/developers/backend/resources/connectors). Each connector is defined in a separate `.json` or `.jsonc` file named after the integration type such as `slack.jsonc` or `googlecalendar.jsonc`.

#### entities/

Directory containing [entity schema definitions](/developers/backend/resources/entities/overview). Each entity is defined in a separate `.json` or `.jsonc` file. Create this directory when you're ready to define your first entity.

#### functions/

Directory containing serverless [backend functions](/developers/backend/resources/backend-functions/overview). Each function requires its own subdirectory with an `entry.ts` or `entry.js` code file. The CLI uses the directory path relative to the functions root as the function name. For example, `functions/sendEmail/entry.ts` creates a function named `sendEmail`. You can optionally add a `function.jsonc` configuration file to customize the function name or add automations.

<Tree>
  <Tree.Folder name="functions" defaultOpen>
    <Tree.Folder name="<function-name>" defaultOpen>
      <Tree.File name="entry.ts" />

      <Tree.File name="function.jsonc" />
    </Tree.Folder>
  </Tree.Folder>
</Tree>

### .gitignore

Prevents files from being committed to version control. Your project starts with this file to prevent `.app.jsonc` from being committed.

### AI coding assistant skills

When you create a project with `base44 create`, [Base44 skills](/developers/backend/overview/base44-skills) are automatically installed. These appear in assistant-specific folders like `.claude/skills/`, `.cursor/skills/`, or similar, depending on which AI coding assistant you use. These folders help your coding assistant understand how to work with Base44 and are safe to commit to version control.

<Note>
  These coding assistant skills are separate from the [agent skills](/developers/backend/resources/agents/agent-skills) in your `agent-skills/` directory. Coding assistant skills help tools like Claude and Cursor build your app, while agent skills run inside your app's agents.
</Note>

## See also

* [Quickstart - Backend only](/developers/backend/quickstart/templates/quickstart-backend-only): Create your first backend-only project
* [Quickstart - React](/developers/backend/quickstart/templates/quickstart-react-template): Build a full-stack React app with Base44
* [`types generate` command](/developers/references/cli/commands/types-generate): Generate TypeScript types from your project
* [Dynamic Types](/developers/references/sdk/getting-started/dynamic-types): Get type safety for your SDK code
* [Entities](/developers/backend/resources/entities/overview): Learn about database schema configuration
* [Backend Functions](/developers/backend/resources/backend-functions/overview): Create serverless API endpoints
* [AI Agents](/developers/backend/resources/agents/overview): Configure AI agents for your app
* [Connectors](/developers/backend/resources/connectors): Set up OAuth connections to third-party services
* [Auth Config](/developers/backend/resources/auth): Manage your app's login methods
