PHPackages                             mostlyserious/craftcms - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. mostlyserious/craftcms

ActiveProject[Framework](/categories/framework)

mostlyserious/craftcms
======================

A Craft CMS Starter

0.13.0(3w ago)150UnlicenseTypeScriptPHP ~8.5.0

Since Jul 22Pushed 3w agoCompare

[ Source](https://github.com/mostlyserious/craftcms)[ Packagist](https://packagist.org/packages/mostlyserious/craftcms)[ RSS](/packages/mostlyserious-craftcms/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (72)Versions (44)Used By (0)

Mostly Serious Craft CMS
========================

[](#mostly-serious-craft-cms)

Documentation
-------------

[](#documentation)

- [Configuration Directory](config/README.md) - Craft CMS settings, plugin configurations, and project structure
- [Modules Directory](modules/README.md) - Custom Craft CMS modules, services, and backend functionality
- [Source Directory](src/README.md) - Frontend architecture, components, and development patterns
- [Utility Scripts and Modules](utility/README.md) - Environment configuration, setup scripts, and asset optimization plugins

Installation
------------

[](#installation)

```
composer create-project --no-install mostlyserious/craftcms $PROJECT_NAME
```

JavaScript Tooling
------------------

[](#javascript-tooling)

This template uses DDEV as the source of truth for JavaScript tooling:

- `.ddev/config.yaml` installs Node 24 and enables Corepack
- `package.json` pins `pnpm@11.1.2` through the `packageManager` field
- `pnpm-lock.yaml` is the shared dependency lockfile
- `pnpm-workspace.yaml` installs native development-tool binaries for the current platform plus Darwin/Linux ARM64, so DDEV scripts and host IDE tooling can use the same dependency tree
- run pnpm package-manager commands through DDEV with `ddev pnpm ...`
- run `package.json` scripts through DDEV with `ddev pnpm run ...`

DDEV treats `node_modules` as an upload directory so Mutagen does not sync it. Run dependency installs through `ddev pnpm ...`; `supportedArchitectures` keeps the native binaries needed by the Linux container and common host IDE environments available from the same dependency tree.

If you pull changes that affect `.ddev/config.yaml`, run `ddev mutagen reset` before continuing when Mutagen is enabled for your local DDEV project.

Use DDEV as the source of truth for app/runtime behavior:

- `ddev craft ...`
- `ddev pnpm install --frozen-lockfile` to install JavaScript dependencies
- `ddev pnpm add ...` and `ddev pnpm remove ...` for dependency changes
- `ddev pnpm run build` to build assets inside DDEV
- `ddev pnpm run dev` to start Vite inside DDEV
- `ddev pnpm run fmt` for repo formatting, including Svelte files, inside DDEV
- `ddev pnpm run fmt:check` to verify formatting without writing changes
- `ddev pnpm run lint` to run Oxlint
- `ddev pnpm run check` for full frontend validation, including TypeScript and Svelte diagnostics, inside DDEV
- `ddev pnpm test -- --run` to run the Vitest suite once

This template also commits shared workspace settings for Zed and VS Code. VS Code users should install the recommended extensions when prompted. Editors use the same project dependency tree created by `ddev pnpm install --frozen-lockfile`.

This template does not require Bun, Vite Plus, ESLint, devcontainers, remote development features, dependency sync scripts, or a custom `node_modules` Docker volume to be productive in Zed, VS Code, or other IDEs.

Configuration Files
-------------------

[](#configuration-files)

This project includes several configuration files that define code quality standards, build processes, and development tooling:

### Code Quality &amp; Linting

[](#code-quality--linting)

- **`.editorconfig`** - Editor configuration for consistent code formatting across different editors and IDEs. Defines indentation, line endings, and character encoding standards.
- **`oxlint.config.ts`** - Oxlint configuration for JavaScript, TypeScript, and Svelte script-block linting. Defines lint rules, plugins, and file-specific overrides for the frontend codebase.
- **`oxfmt.config.ts`** - Oxfmt configuration for repository-wide formatting, including Svelte file formatting. Acts as the shared formatter source for CLI usage and editor integration.
- **`pint.json`** - Laravel Pint configuration for PHP code formatting. Uses Laravel preset with additional rules for strict typing, ordered imports, and consistent code structure.
- **`stylelint.config.ts`** - Stylelint configuration extending Hudochenkov's property order rules for CSS consistency.

### Build &amp; Development

[](#build--development)

- **`vite.config.ts`** - Vite build configuration that handles:

    - Asset bundling and optimization
    - Development server setup with hot module replacement
    - Integration with Tailwind CSS, Svelte, and custom plugins
    - Path aliases for easier imports
    - Production build optimization with code splitting
- **`tsconfig.json`** - TypeScript configuration defining:

    - Compilation targets and module resolution
    - Path mappings for project aliases (`$lib`, `$css`, `$img`, etc.)
    - Strict type checking rules
    - Include/exclude patterns for source files
- **`package.json`** - Node.js package configuration containing:

    - Development and production dependencies
    - Vite scripts (`dev`, `build`)
    - Quality scripts (`fmt`, `fmt:check`, `lint`, `check`, `test`)
    - Project metadata and type module declaration

### Development Workflow

[](#development-workflow)

These configuration files work together to provide:

- Consistent code formatting and style enforcement
- Modern JavaScript/TypeScript development with Svelte support
- Optimized asset bundling and processing
- Hot module replacement for rapid development
- Production-ready builds with code splitting and optimization

###  Health Score

45

↑

FairBetter than 91% of packages

Maintenance95

Actively maintained with recent releases

Popularity10

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~8 days

Recently: every ~39 days

Total

42

Last Release

21d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/551414?v=4)[Mostly Serious](/maintainers/mostlyserious)[@mostlyserious](https://github.com/mostlyserious)

---

Top Contributors

[![corneliusio](https://avatars.githubusercontent.com/u/4140885?v=4)](https://github.com/corneliusio "corneliusio (145 commits)")

###  Code Quality

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/mostlyserious-craftcms/health.svg)

```
[![Health](https://phpackages.com/badges/mostlyserious-craftcms/health.svg)](https://phpackages.com/packages/mostlyserious-craftcms)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.8k543.8M20.1k](/packages/laravel-framework)[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k15](/packages/tempest-framework)[alleyinteractive/mantle-framework

A framework for powerful WordPress development

28325.2k2](/packages/alleyinteractive-mantle-framework)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
