# TypiCMS for Laravel: A Modular Multilingual CMS Review

> TypiCMS is a Laravel-based CMS for developers who need editable pages, news, events, files, menus, translations, and role-based administration in a multilingual site. Its modular structure is useful for custom editorial projects, but the project requires PHP 8.4, a supported database, and additional setup for assets, locales, and modules.

**typicms/typicms** — A modular multilingual CMS built with Laravel, enabling developers to manage structured content like pages, news, events, and more.

- Repository: https://github.com/typicms/typicms
- Stars: 1,620 · Forks: 484
- Language: PHP
- License: MIT
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/typicms-typicms

## What TypiCMS Manages Beyond Ordinary Blog Posts

TypiCMS addresses the needs of developers building content-driven websites where editors need more control than a collection of standalone posts. It is built on Laravel and organizes content into modules, including pages, events, news, places, menus, translations, contacts, partners, files, users, roles, blocks, settings, and sitemap-related features. The intended audience is therefore a development team that wants a shared editorial system while retaining control over the Laravel application, templates, and module code.

The system treats pages as a primary content type rather than limiting the site to dated entries. Pages can be nested, translated, linked to modules, and divided into multiple sections with separate templates. Menus are also nestable, while events include start and end dates. Files are managed as images, documents, and folders. This range makes the CMS more suitable for institutional sites, multilingual publications, event sites, and content structures that do not fit a simple article model.

The boundaries are equally important. TypiCMS does not document a hosted control panel, a general-purpose application marketplace, or a complete turnkey deployment service. Its documented workflow is developer-led: create a Laravel project, configure locales, install modules, publish assets, and register custom module service providers.

## Locale-Prefixed Routes and Modular Content Flow

The documented URL design makes multilingual routing visible at the application level. Module routes use a locale prefix and translated slugs, such as `/en/events/slug-in-english` and `/fr/evenements/slug-en-francais`. Pages follow the same general approach with nested parent and child slugs. The first key in the `config/typicms.php` locale array is the main locale and must match the locale defined in `config/app.php`. `main_locale_in_url` controls whether the main locale appears in URLs.

Content is translated at the module level. The README states that each translation of a page has its own route, and page URIs are regenerated and saved when nestable pages are reordered through drag and drop. Menus can link to pages, URLs, or a specific page section. Tags use polymorphic many-to-many relations, which allows the same tag concept to connect to different modules.

The public presentation layer is based on Vue.js 3, TypeScript, and Vite, while the application foundation is Laravel. TipTap supplies rich-text editing, including floating images, tables, YouTube embeds, iframes, and an HTML source view. The repository also contains routes, Blade-oriented components, database migrations, and separate module directories under `Modules/`. Based on that layout, content management is integrated into a normal Laravel application rather than exposed as a separate service.

## Installation, Assets, and the First News Module

The README gives a Composer-based starting point. It creates a project named `mywebsite`, after which the reader is directed to the `/admin` path and told to log in using a password. The stated runtime requirements are PHP 8.4 or later and MySQL, MariaDB, or PostgreSQL. Laravel deployment documentation is the referenced source for general server requirements.

After creating the project, install Bun as the asset tool described by the README, install JavaScript dependencies, and start the Vite development server:

```bash
composer create-project typicms/typicms mywebsite
bun install
bun run dev
```

The first command creates the Laravel-based project. The second installs the package dependencies described by the repository's asset workflow. The third starts Vite for frontend development. For a production asset build, the README specifies:

```bash
bun run prod
```

A first content module can be added through Composer. The documented News module sequence publishes its views and migrations, then runs the database migration:

```bash
composer require typicms/news
php artisan vendor:publish
php artisan migrate
```

After the migration, the README says the News module appears in the admin sidebar. Module installation therefore changes both the Composer dependency set and the application database. Each published module can then be tracked in Git and customized locally.

## Custom Modules, Pages, Menus, and Administrative Control

TypiCMS includes a command for generating a custom module named Cats. The generated code is placed in `/Modules/Cats`, where a developer can customize it. The module service provider must then be registered in `bootstrap/providers.php` under the TypiCMS Modules Service Providers section, followed by a migration:

```bash
php artisan typicms:create cats
php artisan migrate
```

This workflow makes TypiCMS extensible, but it also places responsibility on the developer. A custom module is not just a content type added through the admin interface. It requires code generation, service-provider registration, database migration, and likely application-specific templates and routes.

The built-in Pages module provides drag-and-drop nesting, searchable page trees, keyboard-accessible expand and collapse controls, regenerated URIs, translated routes, and section templates. Menus can be rendered from a Blade file with `@menu('menuname')`. The editor can reorder entries, but the resulting hierarchy remains data that the front end must render correctly.

Administration also includes a history log for create, update, delete, online, and offline events. Authentication options listed in the README include standard passwords, passkeys, and one-time passwords. User registration can be enabled in the settings panel at `/admin/settings`. Roles and permissions use `spatie/laravel-permission`, while the configured authentication model is `TypiCMS\Modules\Core\Models\User`.

## Files, Rich Text, SEO, and Markdown Delivery

The Files module handles uploads through Uppy, including drag-and-drop selection and a compression step before upload. Images can be cropped with Cropper.js, and SVG files are sanitized on upload. This is relevant for editorial sites that accept media from non-technical users, because file handling is part of the CMS rather than an assumed external service. The README also documents replacing images in place from the file manager.

Storage can be separated by purpose. For example, `FILESYSTEM_DRIVER=s3` can place original images on Amazon S3 while cropped images are served from local disk, provided that `croppa.php` is configured accordingly. The environment example also defines `FILESYSTEM_DISK=public`, `MAX_FILE_UPLOAD_SIZE=60000`, Redis-backed sessions and caches, and database queueing. These settings show that deployment includes infrastructure decisions beyond the CMS editor itself.

For public delivery, the README lists automatic `sitemap.xml`, locale-aware `llms.txt`, and a reusable `<x-json-ld>` Blade component for structured data. Every public page can be returned as Markdown by appending `.md` to its URL or sending an `Accept: text/markdown` header. Markdown output may suit documentation, content feeds, or machine-readable delivery, but the README does not document custom Markdown conversion rules. The exact response shape would need verification in the application routes and rendering code.

## Constraints, Alternatives, and Upgrade Cost

The first constraint is platform scope. TypiCMS requires PHP 8.4 and a supported relational database, so an existing Laravel application on an older PHP version cannot adopt it without changing its runtime or using a different release line. The project is also not a minimal blog package. Its module, asset, file, authentication, and locale settings create several integration points.

A real alternative is to build content management directly with Laravel, using a package such as a generic permission system only where required. That approach avoids a CMS-specific module model, but it leaves the developer responsible for content schemas, admin screens, translations, file workflows, history, SEO output, and editor UX. TypiCMS moves more of those concerns into an existing application structure. The trade-off is acceptance of TypiCMS conventions and the need to inspect each installed module.

Maintenance information is limited to repository activity. The repository is not archived, and the last push was on 2026-10-13. Releases listed include 17.0.22 on 2026-10-02, 17.0.21 on 2026-08-25, and 17.0.20 on 2026-07-17. The MIT license permits use and modification under its terms, but this review does not provide legal advice. Upgrade cost is not quantified by the README. A team should inspect `CHANGELOG.md`, published module migrations, configuration changes, and frontend build requirements before moving between versions. The README does not document a rollback command or upgrade procedure.

## Conclusion

TypiCMS suits developers who want a Laravel-native, multilingual editorial foundation and are prepared to work with modules, Vite assets, and database-backed administration. It is less suitable for teams that need a ready-made hosted service, a documented rollback process, or a minimal CMS without custom integration work. Evaluate PHP 8.4 compatibility, locale configuration, module publishing, storage, authentication, and the generated front-end URLs first; the project uses the MIT license, and the last push was on 2026-10-13.

## FAQ

### What does TypiCMS provide for multilingual websites?

TypiCMS manages locale-prefixed URLs, translated module slugs, translated page routes, menus, and content modules. Locales are configured in `config/typicms.php`, and `main_locale_in_url` controls whether the main locale appears in the URL.

### How do you install the News module in TypiCMS?

The README documents installing `typicms/news` with Composer, publishing package views and migrations, and running `php artisan migrate`. The News module then appears in the admin sidebar according to the documented workflow.

### What are TypiCMS's main technical requirements?

TypiCMS requires PHP 8.4 or later and MySQL, MariaDB, or PostgreSQL. Its frontend assets use Bun and Vite, while the application is built with Laravel, Vue.js 3, and TypeScript.

### Can TypiCMS return public pages as Markdown?

Yes. The README states that every public page can be served as Markdown by appending `.md` to the URL or sending an `Accept: text/markdown` header. It does not document custom Markdown conversion rules.

## Sources

- [Issues](https://github.com/typicms/typicms/issues)
- [License: MIT](https://github.com/typicms/typicms/blob/main/LICENSE)
- [README](https://github.com/typicms/typicms/blob/main/README.md)
- [Releases](https://github.com/typicms/typicms/releases)
- [typicms/typicms on GitHub](https://github.com/typicms/typicms)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/typicms-typicms
