{"id":13408940,"url":"https://github.com/enricodeleo/wpacked","last_synced_at":"2025-10-31T09:30:27.168Z","repository":{"id":32324989,"uuid":"35900271","full_name":"enricodeleo/wpacked","owner":"enricodeleo","description":":package: WPacked is a WordPress development starter kit with portability and immediate local development in mind.","archived":false,"fork":false,"pushed_at":"2023-06-02T17:45:50.000Z","size":1227,"stargazers_count":80,"open_issues_count":0,"forks_count":17,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-01-29T08:33:42.785Z","etag":null,"topics":["composer","dokku","heroku","local-development","php","wordpress","wordpress-development"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/enricodeleo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"patreon":"enricodeleo","custom":["https://paypal.me/enricodeleo"]}},"created_at":"2015-05-19T18:21:06.000Z","updated_at":"2024-10-31T19:03:24.000Z","dependencies_parsed_at":"2024-09-21T22:01:24.167Z","dependency_job_id":"96f1cfb5-d73a-4e69-b11b-d29ed4bb9fad","html_url":"https://github.com/enricodeleo/wpacked","commit_stats":{"total_commits":89,"total_committers":6,"mean_commits":"14.833333333333334","dds":0.4157303370786517,"last_synced_commit":"29bfa11f8c53a95dc858ced320e3e692ba6b9c74"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enricodeleo%2Fwpacked","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enricodeleo%2Fwpacked/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enricodeleo%2Fwpacked/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enricodeleo%2Fwpacked/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/enricodeleo","download_url":"https://codeload.github.com/enricodeleo/wpacked/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238821460,"owners_count":19536223,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["composer","dokku","heroku","local-development","php","wordpress","wordpress-development"],"created_at":"2024-07-30T20:00:56.733Z","updated_at":"2025-10-31T09:30:26.799Z","avatar_url":"https://github.com/enricodeleo.png","language":"PHP","readme":"![WPacked Logo](logo.png)\n\n_Thanks to everyone who has starred my repo! If you like this project, please consider giving it a star._\n\n[![Stargazers repo roster for @enricodeleo/wpacked](https://reporoster.com/stars/enricodeleo/wpacked)](https://github.com/enricodeleo/wpacked/stargazers)\n\n# WPacked\n\n**WPacked** aims to provide an easy-to-maintain and deployable development starter kit, **within a clean pure local environment**. Just like you usually do with npm.\n\nNo more XAMP/MAMP or virtual machines, or other (often conflicting) software on your local machines.\n**You just need PHP**.\n\nClean, versionable, quick.\n\n## Breaking Change Announcement: Dropping SQLite Support\n\nAfter careful consideration and thorough evaluation, we've decided to **drop the SQLite support**. The reasons behind this change:\n\n- **Development stall:** The plugin enabling SQLite support in WordPress is no longer actively maintained. As a community that values security, stability, and cutting-edge practices, depending on stalled plugins should go against our principles.\n- **No significant advantage for quickstart:** One of the main reasons for initially including SQLite support was to enable users to quickly set up a new WordPress project. However, with the advent and widespread adoption of Docker, creating a robust local stack has become a matter of seconds. Docker not only simplifies the setup process but also provides a more realistic environment that mirrors production setups.\n\n## Heroku/Dokku ready\n\nThis project will be automatically built and ready to go just pushing the repository itself to Heroku or Heroku-like environments like Dokku. It will be ran under nginx (slightly optimized with gzip and assets caching).\n\n## Background\n\nI really enjoy developing using the Node.js ecosystem. I love to make my projects modular with npm and bower, I adore the easy dependency management.\nThe thing I like the most is that I can start working immediately on my local machine without a full-fledged web server.\n\nOf course there are tools that give you quickly(sh) a development server within your machine, (I'm personally a big fan of [roots/bedrock](https://github.com/roots/bedrock), that inspired this project) but all of them need a Vagrant virtual machine. Quite an overkill for most projects.\n\nI also like the idea of just dropping a project on a webserver when I'm done (almost impossible with MySQL).\n\nI tried to create a lovely and easy development flow with my favorite CMS, so here we are: my attempt to make WordPress as a self contained, _packaged application_ as possible. Hope you enjoy it ;)\n\n![Sample Video](sample.gif)\n\n## Slideshare presentation\n\nCheckout the presentation published during August Wordpress Meetup in Rome http://www.slideshare.net/EnricoDeleo/modern-gentlemens-wordpress\n\n## Key features\n\n* Git-friendly\n* Dependency management via [Composer](https://getcomposer.org/)\n* Containerizable\n\n## Requirements\n\n* A Unix-like OS\n* PHP \u003e= 7.4\n* Composer\n* MySQL/MariDB\n\n## Requirements installation\n\n### OS X\n\nThe best way to manage packages and installations on your Mac is _Homebrew_.\nIf you haven't it yet, well you should. Follow the instructions [on the Homebrew's official website](http://brew.sh/).\n\nSuggested to update homebrew to the latest version\n\n```bash\n$ brew update \u0026\u0026 brew upgrade\n```\n\nThen install the php version of your choice with\n\n```bash\n$ brew install php\n```\n\nYou'll need also Composer, so let install it:\n\n```bash\nbrew install composer\n```\n\nFor a local database:\n\n```bash\nbrew install mariadb\n```\n\n#### Optional\n\nOptional but suggested [wp-cli](https://github.com/wp-cli/wp-cli). It'll speed up several operations giving you the possibility to issue commands to WordPress via terminal.\nThis repo has a wp-cli.yml that automatically will point wp-cli to the actual wordpress directory, you just need to use the `wp` command inside the project directory.\n\n```bash\nbrew install wp-cli\n```\n\n### Linux\n\n- todo, feel free to make a pull request -\n\n## Usage\n\nThe goal of this project is instant development. It requires just two commands.\n\nClone this repo and run\n\n```bash\ncomposer install\n```\n\nin order to install all the dependencies of the project.\n\n**You are already done**, just launch the built-in web server with\n\n```bash\ncomposer run serve --timeout=0\n```\n\nand visit the default location [http://127.0.0.1:8000](http://127.0.0.1:8000) :rocket:\n\n## Adding WordPress plugins\n\nIn a proper composer/git-driven workflow you want to add 3rd parties plugins via composer. You can find all the free plugins available in the WP ecosystem on [WordPress Packagist](https://wpackagist.org/).\n\nExample of plugin installation (digit in your shell):\n\n```bash\ncomposer require \"wpackagist-plugin/jetpack\":\"8.5\"\n```\n\n## WP Configuration\n\nThanks to phpdotenv you can store your configurations outside the public directory in a `.env` file. You'll find the file `.env.example` that you need to copy to `.env` within the root directory of the project with the following variables:\n\n|**variable name** |**role**|\n|------------------|--------|\n| ENVIRNOMENT      | the environment where the app lives in (development, staging, production) |\n| WP_HOME          | the url of the website|\n| WP_SITEURL       | the url of the wordpress directory, here is urlofthesite.ltd/wordpress|\n| DB_NAME          | name of the MySQL DB|\n| DB_USER          | user of the MySQL DB|\n| DB_PASSWORD      | password of the MySQL DB|\n| DB_HOST          | host of the MySQL DB|\n| FORCE_SSL        | `1` in order to force SSL (redirects all requests to https://)|\n| DISABLE_WP_CRON  | whether or not the app should use the WP cron system (false requires setting up cron manually on your server)|\n\n**For security purposes, don't forget to set AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY, AUTH_SALT, SECURE_AUTH_SALT, LOGGED_IN_SALT, NONCE_SALT to different (long) random strings on production.**\n\n**NOTE**\nDon't commit the `.env` file, it's very likely that you want sapearate settings for each copy of the project. e.g. different URLs for each environment like website.dev, staging.website.com and website.com. Just set those domains on each respective .env and you're ready to go :)\n\n## Development custom php.ini\n\nYou can customize all php configurations without touching your default/system's php.ini *while using the built-in web server*.\n\nJust edit the [`./php-server.ini`](php-server.ini) file under the [ini] section.\n\n## Deploy :zap:\n\nYou can just upload it to your server and point the webserver of your choice to `/path/to/project/app` or build and deploy your docker image.\n\n\n## How to add WordPress Plugins\n\nAll PHP dependencies are managed by Composer, the same happens for WordPress plugins (of course if they are commodities and not custom ones). You can find all the packagist entries for WordPress plugins on the [WPackagist official website](http://wpackagist.org/).\n\nFor example, searching for buddypress would return something like `\"wpackagist-plugin/buddypress\":\"4.2.0\"`, you just need to drop this line inside the `composer.json`'s `require` section and type\n\n```bash\ncomposer update\n```\n\nThe whole plugins directory is under `.gitignore`, so if you add custom plugins you need to exclude them (you'll find an example within the .gitignore file) and add them to Git.\n\n_________________________________________\n\n## Docker 🆕\n\nA docker file and docker-compose are now included for building and local development with MariaDB and Nginx included.\n\n### Local development\n\nRun `docker compose up` in order to bring up the entire local stack. It will start all the containers needed for a great experience. The same docker-compose could also be seen as a starting point for your production configuration if you're using e.g. *docker swarm*.\n\nThe local development stack features:\n- A WordPress container powered by PHP 8, Nginx, Composer\n- MariaDB\n- Adminer for database operations through the browser\n- An nginx reverse proxy so that you can access your new website via domain not localhost\n\nThanks to the reverse proxy you'll access the website at `http://wordpress.local` and adminer at `http://adminer.local`.\n\n#### Accessing local domains\n\nYou need to add these lines in your `hosts` file:\n\n```\n127.0.0.1 wordpress.local\n127.0.0.1 adminer.local\n```\n\n#### Run commands inside the Wordpress container\n\n```bash\ndocker compose run --rm wordpress /bin/sh\n```\n\n### Building\n\nFrom the root of this project, run `docker build .` in order to build a docker image.\n\n_________________________________________\n\n## Author\n[Enrico Deleo](https://enricodeleo.com)\n\n# Are you looking for a modern super-developer-oriented starter theme?\n[Look no further, try my Vueird starter theme powered by WebPack, Vue, SCSS](https://github.com/enricodeleo/vueird/)\n\n","funding_links":["https://patreon.com/enricodeleo","https://paypal.me/enricodeleo"],"categories":["Blogs"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenricodeleo%2Fwpacked","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fenricodeleo%2Fwpacked","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenricodeleo%2Fwpacked/lists"}