---
schema_version: "1"
id: a3af1244ebcafe6e2fff6911a5bd19f721df2d5a52f6a011fde41bd788e965c4
title: Project Structure
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/salesforce-slack-sdk/apex-slack-sdk/guides/build/project-structure.md
canonical_url: https://developer.salesforce.com/docs/platform/salesforce-slack-sdk/guide/project-structure.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: c320a9e6193f783305154efc46e5e8de3fcd13d9a52ac5c381b90ffa1768120b
products:
  - Apex SDK for Slack (Beta)
---
# Project Structure

Before you create your Slack app bundle, make sure that you [set up your SFDX project](https://developer.salesforce.com/docs/platform/salesforce-slack-sdk/run-sfdx.md).

Your SFDX project looks like this.

```txt
project
|_myslackapp
      |_config
            |_ project-scratch-def.json
      |_force-app/main/default/
            |_ classes/
                  |_ createMyRecord.cls
                  |_ createMyRecord.cls-meta.xml
            |_ permissionsets/
                  |_ SlackPerms.permissionset-meta.xml
            |_ slackapps/
                  |_ MySlackApp.slackapp
                  |_ MySlackApp.slackapp-meta.xml
            |_ viewdefinitions/
                  |_ my_message.view
                  |_ my_message.view-meta.xml
      |_package.json
      |_sfdx-project.json
```

A Slack app bundle in the `force-app/main/default/` directory includes:

- [Apex classes containing command logic](https://developer.salesforce.com/docs/platform/salesforce-slack-sdk/guide/actions.md) in `classes/`
  - Action handlers
  - Event handlers (for `onclick` and other events)
  - Shortcut handlers
  - Slash command handlers
  - [Data providers](https://developer.salesforce.com/docs/platform/salesforce-slack-sdk/guide/data-providers.md)
- [Permission set](https://developer.salesforce.com/docs/platform/salesforce-slack-sdk/orgs-users.md#create-permissions-for-a-slack-app) in `permissionsets/`
- [SlackApp metadata](https://developer.salesforce.com/docs/platform/salesforce-slack-sdk/api_meta/meta_slackapp.md) in `slackapps/`
- [ViewDefinition metadata](https://developer.salesforce.com/docs/platform/salesforce-slack-sdk/api_meta/meta_viewdefinition.md) in `viewdefinitions/`
