Skip to content

First Steps

With the local environment running (see Setup), these are the first things to do to confirm everything works and get oriented.

Access the Admin Panel

Open http://localhost:8080/wp/wp-admin/ and log in with the credentials you created during the WordPress installation wizard.

Note

The admin URL includes /wp/ because Bedrock installs WordPress core in a subdirectory. This is by design --- it keeps core files separate from application code.

From the admin panel you can verify that key plugins are active:

  • ACF Pro --- custom fields for content metadata
  • Polylang Pro --- multilingual content (DE + EN)
  • Rank Math --- SEO management
  • Complianz --- GDPR consent

Run Code Quality Checks

The project enforces code quality through three complementary tools. Run all three before committing changes:

PHP Formatting (Pint)

composer lint          # Check formatting (dry run)
composer lint:fix      # Auto-fix formatting issues

WordPress Coding Standards (phpcs)

composer lint:phpcs       # Check against WordPress standards
composer lint:fix:phpcs   # Auto-fix what can be fixed automatically

Static Analysis (PHPStan)

composer analyse       # Run PHPStan analysis

Note

All three checks run automatically in CI on every pull request. Fixing issues locally before pushing saves a round-trip.

Run Tests

The project has two test layers with different scopes and requirements.

Unit Tests

Unit tests use Brain/Monkey to stub WordPress functions and do not require Docker or a database. They are fast and run entirely on the host:

composer test:unit

Integration Tests

Integration tests run inside the WordPress environment with a real database. They require Docker containers to be running. On first run, create the test database:

composer test:setup    # Creates the wordpress_test database
composer test          # Run integration tests

Build the Theme CSS

The theme uses a Sass-based CSS pipeline. After the initial npm install (done during setup), build the stylesheet:

npm run build          # Full CSS build (Sass compile + theme header injection)

During active frontend work, use the watch command to rebuild automatically on file changes:

npm run watch          # Rebuild on SCSS changes

Frontend Linting

SCSS and JavaScript each have their own linter:

npm run lint:scss      # Stylelint for SCSS files
npm run lint:js        # ESLint for JavaScript files

Project Structure at a Glance

Understanding where things live will help you navigate the codebase:

config/                 WordPress configuration (replaces wp-config.php)
web/app/mu-plugins/     Must-use plugins (always active, version-controlled)
web/app/plugins/        Composer-managed plugins (gitignored)
web/app/themes/         Themes (naluma-theme is the active theme)
scripts/                Development and build scripts
openspec/               Spec-driven development artifacts
docs/                   Project documentation

For the complete architecture breakdown, see the Architecture explanation. For a full command reference, see Commands.

Depending on what you are working on: