This document outlines the standard directory structure and key files you'll find in a Doh project, typically created using the doh init project
(or doh init doh
) command.
A standard Doh project provides a basic setup designed for modularity and robust configuration. Here's a look at the common top-level items:
/
├── .doh/ # Internal Doh files (cache, manifests - generally leave alone)
├── .vscode/ # VS Code specific settings (e.g., launch configurations)
│ └── launch.json
├── dbs/ # Default git-ignored and express-ignored folder for SQLite files
├── doh_js/ # Core Doh runtime files provided by the framework
│ └── manifests/ # Generated manifests for packages, patterns, etc.
├── doh_libs/ # Doh Package wappers for external libraries
├── doh_modules/ # DeployDoh.com official modules
├── modules/ # Standard location for your application's code (Custom Doh Packages/Modules)
├── secrets/ # Git-managed, Express-ignored directory for generic secrets
├── .gitignore # Standard Git ignore file pre-configured for Doh
├── boot.pod.yaml # Base configuration settings loaded first (part of repo)
├── doh.js # Main project entry point script
├── package.json # Node.js package definition and dependencies
└── pod.yaml # Primary project instance configuration (local, not in repo by default)
doh.js
:
./doh_js/index.js
for server-side, ./doh_js/deploy.js
for browser builds, although browser builds usually start from an HTML file). In this way, Doh has many entry points, but all of them funnel through ./doh_js/deploy.js
as it is considered the true Doh Core, containing a large majority of the base Doh features.package.json
:
type: "module"
is set for ES Module compatibility.boot.pod.yaml
:
pod.yaml
.pod.yaml
, this file is not typically in .gitignore
, allowing base configurations to be version-controlled.pod.yaml
:
host_load
), set up webservers, manage database connections, and define inheritance from other Pod files..gitignore
by default, as it often contains instance-specific settings or secrets./modules/
:
/doh_js/
:
/doh_js/manifests/
: Contains JSON files generated by Doh's internal systems (like the Auto-Packager or Pattern Engine) that describe the structure and components of your project (e.g., package_manifest.json
, patterns_manifest.json
). These are usually managed automatically. These are intended to be public, used by all environments to interact with your project./.doh/
:
codex/
, shrines/
), and update/upgrade/install artifacts..gitignore
. You generally don't need to interact with its contents directly, although CLI commands exist for cache clearing or backup management..gitignore
:
.gitignore
file pre-populated with common patterns to ignore files and directories specific to Node.js, Doh, and general development (e.g., node_modules/
, .doh/
, dist/
, pod.yaml
)./.vscode/launch.json
:
doh run
flow and specific tasks like doh export
.doh init webserver
: This command initializes a similar structure but typically pre-configures pod.yaml
with settings for the Express webserver module and creates a simple html and css page that can be hot edited in the base project root./modules/
directory using Doh.Package()
or Doh.Module()
, the Auto-Packager will analyze these and update manifests within /doh_js/manifests/
and potentially /.doh/
.