> ## Documentation Index
> Fetch the complete documentation index at: https://ngquct-docs-fix-500-query-results.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Open Project Folder

> Create a connection from the database settings already in your project's config files

Point TablePro at a checkout and it reads the database settings out of the config files already in it. Each set of credentials becomes one row, showing the file and key it came from.

<Frame caption="The scan result listing each credential found and the file it came from">
  <img className="block dark:hidden" src="https://mintcdn.com/ngquct-docs-fix-500-query-results/HJY892UtvXUv1PFn/images/project-folder-scan.png?fit=max&auto=format&n=HJY892UtvXUv1PFn&q=85&s=46359d8c23ea40d7e1f81551dd748ac9" alt="Project folder scan sheet" width="1560" height="960" data-path="images/project-folder-scan.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/ngquct-docs-fix-500-query-results/HJY892UtvXUv1PFn/images/project-folder-scan-dark.png?fit=max&auto=format&n=HJY892UtvXUv1PFn&q=85&s=07b016f24ba4db0bc1b6b2e39a731a21" alt="Project folder scan sheet" width="1560" height="960" data-path="images/project-folder-scan-dark.png" />
</Frame>

<Steps>
  <Step title="Open the folder">
    On the welcome window, choose **Add from Existing > Open Project Folder…** and pick the folder. **Choose Another Folder…** in the sheet points the scan somewhere else without starting over.
  </Step>

  <Step title="Pick one row">
    Each row shows the database type, host, port, user, and database, plus the file and key behind it. Select one and click **Continue**.
  </Step>

  <Step title="Review and save">
    The connection form opens filled in. Nothing is saved and nothing connects until you click **Save**.
  </Step>
</Steps>

One pass imports one row. Run it again for the next service, and again after you add a service to a compose file. Nothing is matched against the connections you already have, so importing one row twice gives you two connections.

## What a row can tell you

Passwords are never displayed. A row says **Password found** when the file has one, and the value goes straight to your Keychain when you save.

| Note                                       | Meaning                                                                                 |
| ------------------------------------------ | --------------------------------------------------------------------------------------- |
| Password found                             | The file has a password. It is not displayed.                                           |
| Looks like a placeholder value             | The value matches a known template, such as `!ChangeMe!` or `password_here`.            |
| Container service name, may be unreachable | The host is a name like `db` or `postgres`, which usually only resolves inside Docker.  |
| Host and port assumed                      | The file had credentials but no address, so `127.0.0.1` and the default port were used. |
| No published port, may be unreachable      | A Compose service with no `ports:` mapping, so your Mac may not reach it.               |

A connection starts at the **Alert** [Safe Mode](/features/safe-mode) level rather than Silent when `prod`, `production`, or `live` appears as a whole word in the file path, the host, or the database name.

## Files it reads

| File                                        | What it reads                                                                                                                                                                                   |
| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `.env` and friends                          | `DATABASE_URL`, `MONGODB_URI`, `REDIS_URL`, `TURSO_DATABASE_URL` and similar URL keys; Laravel `DB_*` keys; Postgres, MySQL, MariaDB, Mongo and SQL Server container variables; `PG*` variables |
| `wp-config.php`                             | `DB_NAME`, `DB_USER`, `DB_PASSWORD`, `DB_HOST`                                                                                                                                                  |
| `prisma/schema.prisma`                      | The `datasource` provider and url, including `env("…")` references                                                                                                                              |
| `config/database.yml`                       | The Rails development section, following anchors and `<<` merge keys, and resolving `ENV["…"]`                                                                                                  |
| `docker-compose.yml`, `compose.yaml`        | Database services, using the published host port                                                                                                                                                |
| `application.properties`, `application.yml` | `spring.datasource.url`, username, and password                                                                                                                                                 |
| `appsettings.json`                          | The `ConnectionStrings` entries                                                                                                                                                                 |

Template files are skipped, so `.env.example`, `.env.sample`, `.env.template`, and `.env.dist` never appear. `.envrc` is a shell script, so TablePro neither reads nor runs it.

## What the scan skips

The walk goes four levels deep, ignores files over 1 MB, follows no symlinks, and stops after 20,000 entries. It skips `node_modules`, `.git`, `vendor`, `dist`, `build` and around twenty more directories of that kind, and never reads inside `~/.ssh`, `~/.aws`, `~/.gnupg`, `~/.docker`, `~/Library/Keychains`, or `/etc`.

The one file it reads outside the folder you picked is `wp-config.php` one level up, where many WordPress sites keep it. That row shows its path as `../wp-config.php`.

## When a value cannot be read

Some settings point elsewhere instead of holding a value, like `${{Postgres.DATABASE_URL}}` on Railway or a Rails credential lookup. Those are left out rather than guessed at, so a row you expected can be missing. Fill those in by hand, or paste the URL with [Import from URL](/connections/urls).

## Related

* [Connection Sharing](/features/connection-sharing) for importing from other database apps
* [Safe Mode](/features/safe-mode) for guarding production connections
