# Awesome CakePHP

A curated list of amazingly awesome CakePHP 4.x+ plugins, resources and shiny things.

Plugins with the “🍰” icon have CakePHP 5 compatible release too (minimum “beta”).

If you are looking for previous CakePHP resources please visit: - the CakePHP 2.x version of this awesome list - the CakePHP 3.x version of this awesome list - this wiki with a list of not-yet upgraded plugins

Additional lists you might find useful: - CakePHP Plugins - Awesome PHP - Awesome Awesomeness

> For those wondering; this list differs from plugins.cakephp.org by supporting plugin subparts (instead of only the whole plugin/repo), more granular grouping and the primary focus on task-specific functionality.

## Table of Contents

- Plugins
  - APM
  - Architecture
  - Asset Management
  - Auditing / Logging
  - Authentication and Authorization
  - Caching
  - Code Analysis
  - Debugging
  - Dependency Injection
  - E-commerce
  - Email
  - File Manipulation
  - Filtering and Validation
  - Geolocation
  - HTTP
  - I18n
  - Imagery
  - Libs
  - Markup
  - Migration
  - Miscellaneous
  - Navigation
  - NoSQL
  - Notifications
  - ORM / Database / Datamapping
  - PDF
  - Queue
  - REST and API
  - Search
  - Security
  - SEO
  - Skeleton
  - Social
  - Templating
  - Testing
  - Third Party APIs
- Software
  - Development Environment
- Web Applications
  - CMS and applications built on CakePHP
  - Demo
- Resources
  - Help
  - CakePHP Websites
  - CakePHP Books and Articles
  - CakePHP Videos
  - CakePHP Tutorials
  - CakePHP Reading and Listening
  - CakePHP Internals Reading
- Conferences
- Contributing

# Plugins

## APM

Plugins for Application Performance Monitoring.

## Architecture

- 🍰 Burzum/CakeServiceLayer plugin - Service layer and domain/business model implementation.

## Asset Management

Tools for managing, compressing and minifying website assets.

- 🍰 AssetCompress plugin - A complete asset manager for CakePHP.
- 🍰 AssetMix plugin - Provides integration with Laravel Mix asset compilation.

## Auditing / Logging

Plugins for auditing and logging.

- 🍰 AuditStash plugin - Flexible and rock solid audit log tracking.
- 🍰 DatabaseLog plugin - Simple and stand-alone logging to database instead of files.
- 🍰 Muffin/Footprint plugin - Plugin to allow passing currently logged in user to model layer.
- 🍰 Version plugin - A plugin that facilitates versioned database entities.

## Authentication and Authorization

Plugins and libraries for implementing authentication and authorization.

- Acl plugin - Managing ACL as database approach.
- ADmad/JwtAuth plugin - A plugin for authenticating using JSON Web Tokens.
- 🍰 ADmad/SocialAuth plugin - A plugin which allows you to authenticate using social providers like Facebook/Google/Twitter etc. using SocialConnect/auth social sign on library.
- 🍰 ApiTokenAuthenticator plugin - A simple token authentication plugin for CakePHP REST APIs.
- 🍰 Authentication plugin - Official CakePHP authentication middleware plugin.
- 🍰 Authorization plugin - Official CakePHP authorization stack.
- 🍰 CakeDC/Users plugin - Complete user management (admin panel, remember me, etc), Social login (FB, Twitter, LinkedIn, Google, Instagram), RBAC, API and more.
- Muffin/Tokenize plugin - Event driven behavior for easily generating single-use security tokens.
- 🍰 TinyAuth plugin - Authentication and role-based (single/multi) authorization as very light-weight approach.
- 🍰 Tools:Passwordable - Containing Passwordable behavior for a DRY approach on password hashing.
- 🍰 TwoFactorAuth plugin - Allows two factor authentication using Google Authenticator or similar app to generate one-time codes. Based on RobThree/TwoFactorAuth library.

## Caching

Plugins for caching data.

- 🍰 Cache plugin - For caching views (HTML, CSV, JSON, XML, …) as static cache files.
- 🍰 CakeDC/CachedRouting plugin - Provides a cached version of the RoutingMiddleware to improve the load time of routes.

## Code Analysis

Plugins for analyzing, parsing and manipulation codebases.

- 🍰 cakedc/cakephp-phpstan - A PHPStan extension to resolve CakePHP magic around getter return types for the static analyzer.
- 🍰 IdeHelper plugin - Helps to make IDE support better by adding annotations to your existing code similar to what baking does to new code.
- 🍰 IdeHelperExtra plugin - Useful IdeHelper addons for other plugins or custom use cases.
- 🍰 lordsimal/cakephp-psalm - A Psalm extension to resolve CakePHP magic around getter return types for the static analyzer.
- 🍰 TestHelper plugin - Provides testing enhancements and TDD support as browser backend.

## Debugging

Plugins for debugging and local development.

- AssociationsDebugger plugin - A plugin that draws your model associations as diagram.
- 🍰 CakephpWhoops plugin - PHP errors and exceptions for cool kids with filp/whoops.
- 🍰 DebugKit plugin - The de-facto standard for debugging.
- Execution order - A demo app to display the execution order of files, methods and callbacks.
- 🍰 Sentry plugin A plugin to seamlessly integrate Sentry for errors and exceptions.
- 🍰 Setup plugin - A lightweight setup plugin containing debugging and maintenance tools.

## Dependency Injection

Plugins that implement the dependency injection design pattern.

## E-commerce

Plugins and applications for taking payments and building online e-commerce stores.

## Email

Plugins for sending and parsing email.

- EmailQueue plugin - Email queue plugin with a preview and sender shell.
- Mailgun plugin - Email transport plugin for sending email via Mailgun.
- 🍰 Queue plugin - A dependency-free queue-based mail solution using Mailer/Email class, allowing re-queue on (network) failure.

## File Manipulation

Plugins for file manipulation.

- 🍰 FileStorage plugin - Flexible file storage and upload plugin.
- Josbeir/Filesystem plugin - Abstract Flysystem + file entity based upload plugin.
- 🍰 Josegonzalez/Upload plugin - A customisable plugin that uses Flysystem to write to multiple backends (Dropbox, FTP, S3, Local, etc.).

## Filtering and Validation

Plugins for filtering and validating data.

- see Cake/Localized below.

## Geolocation

Plugins for geocoding addresses and working with latitudes and longitudes.

- 🍰 Geo plugin - Containing Geocoder behavior and GoogleMaps helper.

## HTTP

Plugins for HTTP and client abstraction

- Http/Adapter/Cake library - Adapter for HTTPlug HTTP client abstraction.

## I18n

Plugins for I18n (Internationalization) and L10n (Localization).

- 🍰 ADmad/I18n plugin - A plugin with I18n related tools.
- 🍰 Cake/Localized plugin - Localized validation and ready-to-use translation PO files.
- Translate plugin - Manage translations of your static content the easy way via web backend, incl. import from POT files, auto-suggest and auto-translate via API.

## Imagery

Plugins for manipulating images.

- 🍰 ADmad/Glide plugin - A plugin for using Glide image manipulation library.
- 🍰 QrCodePlugin - Easily render SVG/PNG QR Codes for your app.

## Libs

Useful libraries or tools that don’t fit in any of the other categories.

- Capcake - Deploy CakePHP applications using Capistrano.
- Chronos - A simple standalone DateTime API extension (successor of Carbon).
- Composer Installers - A multi framework Composer library installer.
- Composer/Packagist - A package and dependency manager.
- Graphviz - A Graphviz library.
- Rocketeer - PHP task runner and deployment package.
- 🍰 makallio85/YamlRoute plugin - Configure routes with simple YAML files.

## Markup

Plugins for working with markup.

- 🍰 Markup plugin - Allows to use PHP or JS based syntax highlighting.

## Migration

Plugins and resources around migration and upgrading.

- 🍰 Migrations plugin - (DB) Migration plugin.
- 🍰 Upgrade app - Official upgrade app for 3.x=>4.x and 4.x=>5.x.
- 🍰 Upgrade app (extended) - An extended upgrade app for 3.x=>4.x and some 5.x snippets.
- 🍰 Upgrade/Migration Guide - Official migration guide.

## Miscellaneous

Misc plugins and libraries.

- 🍰 Ajax plugin - A plugin to ease handling AJAX requests.
- 🍰 CakeDC/Enum plugin - A plugin to add enumeration list support to your app.
- 🍰 CakeDto plugin - Quickly generate useful data transfer objects for your app (mutable/immutable), replacing messy arrays and leveraging your IDE through typehinting and autocomplete.
- CakeImpersonate plugin - A component that stores the current authentication session and creates new session for impersonating Users. User can revert back to original authentication sessions without the need to re-login.
- 🍰 Calendar plugin - For generating basic calendars. Includes IcalView for ICS calendar file generation.
- 🍰 Feedback plugin - Allow visitors to send quick and easy feedback incl. a screenshot via sidebar form.
- 🍰 Flash plugin - More powerful flash messages for your application.
- 🍰 OPCache Preloader - An OPCache Preloader for CakePHP applications.
- 🍰 Setup:Maintenance - Maintenance shell to go into maintenance mode for all requests with optional IP whitelisting.
- 🍰 Shim plugin - A plugin containing useful shims and improvements as basis for your application.
- 🍰 Tools plugin - Containing lots of useful libs, helpers, behaviors, components, shells and more.

## Navigation

Tools for building navigation structures.

- 🍰 Icings/Menu plugin - A KnpMenu seasoned menu plugin for CakePHP.

## NoSQL

Plugins for working with “NoSQL” backends.

## Notifications

Plugins for working with notification software.

## ORM / Database / Datamapping

Plugins that implement object-relational mapping or data-mapping techniques.

- 🍰 ADmad/Sequence plugin - Behavior for maintaining ordered list of records.
- 🍰 CakeDecimal plugin - A value object approach on handling decimals.
- 🍰 Duplicatable plugin - Behavior for duplicating entities including related data.
- Lampager/Cake plugin - Rapid pagination without using OFFSET.
- 🍰 Muffin/Orderly plugin - Allows setting default order for your tables.
- Muffin/Sti plugin - Single Table Inheritance for CakePHP.
- 🍰 Muffin/Trash plugin - Soft-delete behavior for CakePHP.
- Robotusers/TableInheritance plugin - Singe Table Inheritance (STI) plugin.
- RowLocker plugin - Exclusive locks for rows in your tables.
- Muffin/Webservices ORM plugin - An ORM like interface for webservices.
- Connehito/CakephpMasterReplica plugin - Switch master/replica database connections.
- 🍰 Itosho/EasyQuery plugin - Behavior for easily generating some complicated queries like (bulk) insert/upsert etc.
- 🍰 Icings/Partitionable plugin - Partitionable associations allowing for basic limiting per group.

## PDF

Plugins and software for working with PDF files.

- 🍰 CakePdf plugin - A plugin around PDF generation.

## Queue

Plugins for working with event and task queues.

- CakeQueuesadilla plugin - A plugin that provides queueing integration with a variety of backends (BeanstalkD, MySQL, Redis, etc.).
- 🍰 Queue plugin - CakePHP core queue system for the php-queue queue library.
- 🍰 Queue plugin - A minimal and dependency-free queue solution.
- 🍰 QueueScheduler plugin - A dependency-free crontab-like scheduler as DB driven solution and addon to Queue plugin.

## REST and API

Plugins and web tools for developing REST-ful APIs.

- 🍰 CRUD plugin - CakePHP Application development on steroids - rapid prototyping / scaffolding & production-ready code.
- Alt3/Swagger plugin - Swagger 2.0 documentation for your CakePHP APIs using swagger-php and swagger-ui.
- 🍰 CakeDC/Api plugin - All-in-one solution to provide a complete API. It includes versioning, renderers, CRUD, authentication, extensions (paginate, filter, HATEOAS), and much more.
- 🍰 FractalTransformerView plugin - A plugin which allows using Fractal transformers for your API output.
- 🍰 MixerApi - Streamline development of modern RESTful APIs for your team’s CakePHP project.
- 🍰 SwaggerBake plugin - This plugin automatically builds OpenAPI from your existing models and routes for display in Swagger and Redoc.

## Search

Plugins and software for indexing and performing search queries on data.

- 🍰 Cake/ElasticSearch plugin - Alternative ORM using Elasticsearch as its backend.
- 🍰 PlumSearch plugin - Implements custom, flexible and extendable search strategies. Implements PRG pattern.
- 🍰 Search plugin - Provides easy searching/filtering for paginated views using PRG pattern.
- 🍰 Tags plugin - For tagging and finding tagged records.

## Security

Plugins and information around security, preventing vulnerabilities and protection against XSS and alike.

- Bruteforce - Simple way to add Brute Force Protection to your installation without involving database.
- 🍰 Captcha plugin - Simple, unobtrusive and extendable captcha solution providing by default an image based math captcha.
- 🍰 Expose plugin - Expose entities through additional UUIDs instead of their AIID primary keys to obfuscate those IDs and data associated with these numerically ordered values.
- 🍰 Muffin/Obfuscate plugin - Primary key obfuscation/shortening using UUIDs, HashIds, Optimus, Tiny and/or custom obfuscation strategies.
- 🍰 Muffin/Throttle plugin - A plugin for rate limiting (API) requests.
- 🍰 Recaptcha plugin - Simple, lightweight Google Recaptcha v2.

## SEO

Search Engine Optimization.

- 🍰 Muffin/Slug plugin - A plugin for generating slugs and finding records by slug. Uses a pluggable architecture which allows using your own slug generator class.
- 🍰 Tools:Slugged - Containing Slugged behavior to auto-generate URL-compatible slugs from titles.

## Skeleton

Plugins and repositories around app skeletons.

- App template - An empty CakePHP project for use with composer.

## Social

Plugins around social features.

- 🍰 Comments plugin - Allows users to comment records, supporting different formats.
- 🍰 Favorites plugin - Allows users to star/like/favor records.
- 🍰 Ratings plugin - Allows users to rate records and displays ratings.

## Templating

Plugins for templating and lexing.

- 🍰 Bake plugin - Provides code generation functionality.
- 🍰 BootstrapUI plugin - Bootstrap 4/5 integration.
- 🍰 CsvView plugin - A view class to easily generate CSV.
- 🍰 Feed plugin - Containing an RssView class to easily generate (complex) RSS feeds.
- 🍰 Meta plugin - Makes handling meta tags and SEO-relevant HTML markup DRY and easy.
- 🍰 Templating - HTML snippets as value objects, (Font) icons, and templating topics.
- 🍰 Tools:Tree - Tree helper to work with Core Tree behavior and handle tree structure output.
- 🍰 TwigView plugin - A plugin to use the Twig Templating Language for views.

## Testing

Plugins/Tools for testing codebases and generating test data.

- CakePHP Codeception module - The official CakePHP integration with Codeception.
- CakePHP CodeSniffer rules - The official CakePHP CS rules.
- 🍰 CakephpFixtureFactories plugin - Create your fixtures dynamically on a test basis, accelerate the writing and maintenance of your tests.
- Faker plugin - Faker support for CakePHP fixtures.
- Fixtures plugin - Fixtures plugin to read existing fixtures and create table/insert data for quick start with app.
- 🍰 FriendsOfCake/Fixturize plugin - More efficient inserting fixtures when running test suites by decreasing amount of inserts (mysql only).

## Third Party APIs

Plugins for accessing third party APIs.

# Software

Software for creating a development environment.

## Development Environment

Software and tools for creating a sandboxed development environment.

- 🍰 CakePHP Docker - A cakephp/app template for docker.
- CakePHP Vagrant Setup - Tool for spinning up multiple CakePHP vanilla dev environments.
- Devilbox - A docker development environment for (CakePHP) apps to be auto-setup including a lot of tools.
- Docker - CakePHP in a docker container environment.
- 🍰 Galley - A small Docker dev environment for CakePHP development which includes a simple command line utility.
- NetBeans - This package provides support for CakePHP in NetBeans 8.1+.
- Oven - Setup your favorite framework with 1 file and 1 click.
- Puppet - A server automation framework and application.
- Vagrant - A portable development environment utility.

IDE specific compatibility information and tips can be found here.

## Web Applications

## CMS and applications built on CakePHP

- baserCMS - This is a website development framework with RESTful APIs. Installable as a plugin for CakePHP 4.x.
- Croogo - CMS software (see 5.0 branch).

## Demo

Web-based (demo) applications and tools.

- BlogMVC - A simple Blog example with CakePHP based on BlogMVC Project.
- Bookmarkr A bookmarking application built with the CRUD plugin.
- CakeFest - Demo application around the annual CakePHP Conference “CakeFest”.
- Fluentd + Grafana Loki demo application - A demo application to send CakePHP docker container logs to Grafana Loki via Fluentd.
- RealWorld - Example CakePHP codebase containing real world examples (CRUD, auth, advanced patterns and more) that adheres to the RealWorld spec and API.
- Sandbox - A sandbox CakePHP application with lots of demos and plugin showcasings.
- Query Examples Advanced query building examples.
- Xeta - A resource to help people starting with CakePHP.
- Vue.js Demo App - A CakePHP + VueJS single page application skeleton.

# Resources

Various resources, such as books, websites and articles, for improving your CakePHP development skills and knowledge.

## Help

Where to get help.

- CakePHP-FR.org - The french community website.
- Official CakePHP Forum - This is for generic questions and alike.
- IRC Channel - Live chat/discussion with other devs and core devs.
- stackoverflow.com/questions/tagged/cakephp - This is for specific questions, ideally along with some example code.

## CakePHP Websites

Useful and current CakePHP-related websites and blogs.

- CakeDC - Articles around CakePHP.
- dereuromark.de - An extensive CakePHP core dev blog.
- jedistirfry.co.uk - A CakePHP related dev blog.
- josediazgonzalez.com - A mainly CakePHP related core dev blog.
- mark-story.com - CakePHP lead dev blog.

## CakePHP Books and Articles

Fantastic CakePHP-related (e)books and other reading material.

## CakePHP Videos

Fantastic CakePHP-related videos.

- CakePHP - Channel about CakePHP videos.

## CakePHP Tutorials

Must-do tutorials.

- Official Blog tutorial
- Official Content Management Tutorial

## CakePHP Reading and Listening

Documentation and CakePHP-related reading and listening materials.

- CakePHP Cookbook(!) - The official CakePHP documentation.

## CakePHP Internals Reading

Reading materials related to the CakePHP internals and decisions.

- Top 10 (and more) core contributors - Give ’em a hand.

# Conferences

## Official

International conference.

- cakefest.org - Annual CakePHP Conference.

## MeetUps

Regional meet-ups.

- CakePHP-DE - MeetUps in Germany.

# Contributing

Please see CONTRIBUTING for details.

## Credits

awesome-cakephp has been created by dereuromark and is currently maintained by him and the FriendsOfCake group. Thank you to all contributors, too.