├── .env.example
├── .github
└── workflows
│ └── ci.yml
├── .gitignore
├── Dockerfile
├── README.md
├── cli
└── create-cert.sh
├── config
├── php.ini
└── phpmyadmin.ini
├── docker-compose.yml
├── nginx
└── default.conf.conf
└── src
├── .env.example
├── .github
└── workflows
│ └── issues.yml
├── .gitignore
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── composer.json
├── composer.lock
├── config
├── application.php
└── environments
│ ├── development.php
│ └── staging.php
├── phpcs.xml
├── web
├── app
│ ├── mu-plugins
│ │ ├── bedrock-autoloader.php
│ │ ├── disallow-indexing.php
│ │ └── register-theme-directory.php
│ ├── plugins
│ │ └── .gitkeep
│ ├── themes
│ │ ├── .gitkeep
│ │ └── twentytwentyone
│ │ │ ├── 404.php
│ │ │ ├── archive.php
│ │ │ ├── assets
│ │ │ ├── css
│ │ │ │ ├── custom-color-overrides.css
│ │ │ │ ├── ie-editor.css
│ │ │ │ ├── ie-editor.css.map
│ │ │ │ ├── ie.css
│ │ │ │ ├── ie.css.map
│ │ │ │ ├── print.css
│ │ │ │ ├── print.css.map
│ │ │ │ ├── style-dark-mode-rtl.css
│ │ │ │ ├── style-dark-mode.css
│ │ │ │ ├── style-dark-mode.css.map
│ │ │ │ ├── style-editor-customizer.css
│ │ │ │ ├── style-editor.css
│ │ │ │ └── style-editor.css.map
│ │ │ ├── images
│ │ │ │ ├── Daffodils.jpg
│ │ │ │ ├── Reading.jpg
│ │ │ │ ├── in-the-bois-de-boulogne.jpg
│ │ │ │ ├── playing-in-the-sand.jpg
│ │ │ │ ├── roses-tremieres-hollyhocks-1884.jpg
│ │ │ │ ├── self-portrait-1885.jpg
│ │ │ │ ├── the-garden-at-bougival-1884.jpg
│ │ │ │ ├── villa-with-orange-trees-nice.jpg
│ │ │ │ └── young-woman-in-mauve.jpg
│ │ │ ├── js
│ │ │ │ ├── customize-helpers.js
│ │ │ │ ├── customize-preview.js
│ │ │ │ ├── customize.js
│ │ │ │ ├── dark-mode-toggler.js
│ │ │ │ ├── editor-dark-mode-support.js
│ │ │ │ ├── editor.js
│ │ │ │ ├── palette-colorpicker.js
│ │ │ │ ├── polyfills.js
│ │ │ │ ├── primary-navigation.js
│ │ │ │ ├── responsive-embeds.js
│ │ │ │ └── skip-link-focus-fix.js
│ │ │ └── sass
│ │ │ │ ├── 01-settings
│ │ │ │ ├── file-header.scss
│ │ │ │ ├── fonts.scss
│ │ │ │ └── global.scss
│ │ │ │ ├── 02-tools
│ │ │ │ ├── functions.scss
│ │ │ │ └── mixins.scss
│ │ │ │ ├── 03-generic
│ │ │ │ ├── breakpoints.scss
│ │ │ │ ├── clearings.scss
│ │ │ │ ├── normalize.scss
│ │ │ │ ├── reset.scss
│ │ │ │ └── vertical-margins.scss
│ │ │ │ ├── 04-elements
│ │ │ │ ├── blockquote.scss
│ │ │ │ ├── forms-editor.scss
│ │ │ │ ├── forms.scss
│ │ │ │ ├── links.scss
│ │ │ │ ├── media.scss
│ │ │ │ └── misc.scss
│ │ │ │ ├── 05-blocks
│ │ │ │ ├── _config.scss
│ │ │ │ ├── audio
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── blocks-editor.scss
│ │ │ │ ├── blocks.scss
│ │ │ │ ├── button
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── code
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── columns
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── cover
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── file
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── gallery
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── group
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── heading
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── html
│ │ │ │ │ └── _editor.scss
│ │ │ │ ├── image
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── latest-comments
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── latest-posts
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── legacy
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── list
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── media-text
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── navigation
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── paragraph
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── preformatted
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── pullquote
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── query-loop
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── quote
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── rss
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── search
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── separator
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── social-icons
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── table
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── tag-clould
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── utilities
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ ├── _font-sizes.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── verse
│ │ │ │ │ ├── _editor.scss
│ │ │ │ │ └── _style.scss
│ │ │ │ └── video
│ │ │ │ │ └── _style.scss
│ │ │ │ ├── 06-components
│ │ │ │ ├── 404.scss
│ │ │ │ ├── archives.scss
│ │ │ │ ├── comments.scss
│ │ │ │ ├── editor.scss
│ │ │ │ ├── entry.scss
│ │ │ │ ├── footer-navigation.scss
│ │ │ │ ├── footer.scss
│ │ │ │ ├── header.scss
│ │ │ │ ├── navigation.scss
│ │ │ │ ├── pagination.scss
│ │ │ │ ├── posts-and-pages.scss
│ │ │ │ ├── search.scss
│ │ │ │ ├── single.scss
│ │ │ │ └── widgets.scss
│ │ │ │ ├── 07-utilities
│ │ │ │ ├── a11y.scss
│ │ │ │ ├── color-palette.scss
│ │ │ │ ├── ie.scss
│ │ │ │ ├── measure.scss
│ │ │ │ └── print.scss
│ │ │ │ ├── style-dark-mode.scss
│ │ │ │ ├── style-editor.scss
│ │ │ │ └── style.scss
│ │ │ ├── classes
│ │ │ ├── class-twenty-twenty-one-custom-colors.php
│ │ │ ├── class-twenty-twenty-one-customize-color-control.php
│ │ │ ├── class-twenty-twenty-one-customize-notice-control.php
│ │ │ ├── class-twenty-twenty-one-customize.php
│ │ │ ├── class-twenty-twenty-one-dark-mode.php
│ │ │ └── class-twenty-twenty-one-svg-icons.php
│ │ │ ├── comments.php
│ │ │ ├── footer.php
│ │ │ ├── functions.php
│ │ │ ├── header.php
│ │ │ ├── image.php
│ │ │ ├── inc
│ │ │ ├── back-compat.php
│ │ │ ├── block-patterns.php
│ │ │ ├── block-styles.php
│ │ │ ├── custom-css.php
│ │ │ ├── menu-functions.php
│ │ │ ├── starter-content.php
│ │ │ ├── template-functions.php
│ │ │ └── template-tags.php
│ │ │ ├── index.php
│ │ │ ├── package-lock.json
│ │ │ ├── package.json
│ │ │ ├── page.php
│ │ │ ├── postcss.config.js
│ │ │ ├── readme.txt
│ │ │ ├── screenshot.png
│ │ │ ├── search.php
│ │ │ ├── searchform.php
│ │ │ ├── single.php
│ │ │ ├── style-rtl.css
│ │ │ ├── style.css
│ │ │ ├── style.css.map
│ │ │ └── template-parts
│ │ │ ├── content
│ │ │ ├── content-excerpt.php
│ │ │ ├── content-none.php
│ │ │ ├── content-page.php
│ │ │ ├── content-single.php
│ │ │ └── content.php
│ │ │ ├── excerpt
│ │ │ ├── excerpt-aside.php
│ │ │ ├── excerpt-audio.php
│ │ │ ├── excerpt-chat.php
│ │ │ ├── excerpt-gallery.php
│ │ │ ├── excerpt-image.php
│ │ │ ├── excerpt-link.php
│ │ │ ├── excerpt-quote.php
│ │ │ ├── excerpt-status.php
│ │ │ ├── excerpt-video.php
│ │ │ └── excerpt.php
│ │ │ ├── footer
│ │ │ └── footer-widgets.php
│ │ │ ├── header
│ │ │ ├── entry-header.php
│ │ │ ├── excerpt-header.php
│ │ │ ├── site-branding.php
│ │ │ ├── site-header.php
│ │ │ └── site-nav.php
│ │ │ └── post
│ │ │ └── author-bio.php
│ └── uploads
│ │ └── .gitkeep
├── index.php
└── wp-config.php
└── wp-cli.yml
/.env.example:
--------------------------------------------------------------------------------
1 | IP=127.0.0.1
2 | APP_NAME=myapp
3 | DOMAIN=myapp.local
4 | DB_HOST=mysql
5 | DB_NAME=myapp
6 | DB_ROOT_PASSWORD=password
7 | DB_TABLE_PREFIX=wp_
8 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: CI Build
2 | on: [push]
3 |
4 | jobs:
5 | build:
6 | name: Build
7 | runs-on: ubuntu-latest
8 | steps:
9 | - name: Checkout Repository
10 | uses: actions/checkout@v1
11 |
12 | - name: Run composer install
13 | working-directory: src
14 | run: |
15 | composer install --prefer-dist
16 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Application
2 | src/web/app/plugins/*
3 | !src/web/app/plugins/.gitkeep
4 | src/web/app/mu-plugins/*/
5 | src/web/app/upgrade
6 | src/web/app/uploads/*
7 | !src/web/app/uploads/.gitkeep
8 |
9 | # WordPress
10 | src/web/wp
11 | src/web/.htaccess
12 |
13 | # WP-CLI
14 | db-sync
15 | sql-dump-*.sql
16 |
17 | # Dotenv
18 | .env
19 | .env.*
20 | !.env.example
21 |
22 | # Vendor (e.g. Composer)
23 | src/vendor/*
24 | !src/vendor/.gitkeep
25 |
26 | # Database volume
27 | data
28 |
29 | # Node Package Manager
30 | node_modules
31 |
32 | # Certs
33 | certs/
34 |
35 | # Logs
36 | logs/
37 |
38 | # Vagrant
39 | bin
40 | .vagrant
41 |
42 | # Custom
43 | .DS_Store
44 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM urre/wordpress-nginx-docker-compose-image:1.4.0
2 |
3 | # Install wp-cli
4 | RUN apt-get update && apt-get install -y sudo less mariadb-client
5 | RUN curl -o /bin/wp-cli.phar https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
6 | RUN chmod +x /bin/wp-cli.phar
7 | RUN cd /bin && mv wp-cli.phar wp
8 | RUN mkdir -p /var/www/.wp-cli/cache && chown www-data:www-data /var/www/.wp-cli/cache
9 |
10 | # Forward Message to mailhog
11 | RUN curl --location --output /usr/local/bin/mhsendmail https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 && \
12 | chmod +x /usr/local/bin/mhsendmail
13 | RUN echo 'sendmail_path="/usr/local/bin/mhsendmail --smtp-addr=mailhog:1025 --from=no-reply@gbp.lo"' > /usr/local/etc/php/conf.d/mailhog.ini
14 |
15 | # Note: Use docker-compose up -d --force-recreate --build when Dockerfile has changed.
16 |
--------------------------------------------------------------------------------
/cli/create-cert.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -e
4 |
5 | source "../.env"
6 |
7 | DOMAIN=$(echo "$DOMAIN")
8 |
9 | mkcert -install "${DOMAIN}"
10 |
11 | mkdir -p ../certs
12 |
13 | find . -type f -name "*.pem" -exec mv {} ../certs \;
14 |
--------------------------------------------------------------------------------
/config/php.ini:
--------------------------------------------------------------------------------
1 | file_uploads = On
2 | memory_limit = 512M
3 | upload_max_filesize = 128M
4 | post_max_size = 128M
5 | max_execution_time = 600
6 | client_max_body_size = 128M
7 |
--------------------------------------------------------------------------------
/config/phpmyadmin.ini:
--------------------------------------------------------------------------------
1 | upload_max_filesize = 128M
2 | post_max_size = 128M
3 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3.6'
2 | services:
3 | nginx:
4 | image: nginx:latest
5 | container_name: ${APP_NAME}-nginx
6 | ports:
7 | - '80:80'
8 | - '443:443'
9 | volumes:
10 | - "./nginx/:/etc/nginx/templates/"
11 | - ./src:/var/www/html:rw,cached
12 | - ./certs:/etc/certs
13 | environment:
14 | - "NGINX_ENVSUBST_TEMPLATE_SUFFIX=.conf"
15 | - "DOMAIN=${DOMAIN}"
16 | depends_on:
17 | - wordpress
18 | restart: always
19 |
20 | mysql:
21 | image: mariadb:10.7
22 | container_name: ${APP_NAME}-mysql
23 | command: --lower_case_table_names=2
24 | volumes:
25 | - './data/db:/var/lib/mysql:delegated'
26 | environment:
27 | - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
28 | - MYSQL_DATABASE=${DB_NAME}
29 | restart: always
30 | ports:
31 | - '3306:3306'
32 |
33 | wordpress:
34 | build:
35 | context: .
36 | dockerfile: Dockerfile
37 | container_name: ${APP_NAME}-wordpress
38 | volumes:
39 | - ./src:/var/www/html:rw,cached
40 | - ./config/php.ini:/usr/local/etc/php/conf.d/php.ini
41 | depends_on:
42 | - mysql
43 | restart: always
44 |
45 | phpmyadmin:
46 | image: phpmyadmin/phpmyadmin
47 | container_name: ${APP_NAME}-phpmyadmin
48 | volumes:
49 | - ./config/phpmyadmin.ini:/usr/local/etc/php/conf.d/phpmyadmin.ini
50 | environment:
51 | PMA_HOST: "${DB_HOST}"
52 | PMA_PORT: 3306
53 | MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
54 | ports:
55 | - '8082:80'
56 | links:
57 | - mysql:mysql
58 |
59 | mailhog:
60 | container_name: ${APP_NAME}-mailhog
61 | image: mailhog/mailhog
62 | ports:
63 | - "8025:8025"
64 | - "1025:1025"
65 |
66 | composer:
67 | image: composer
68 | container_name: ${APP_NAME}-composer
69 | working_dir: /var/www/html
70 | restart: 'no'
71 | volumes:
72 | - ./src:/var/www/html:rw,cached
73 |
--------------------------------------------------------------------------------
/nginx/default.conf.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80;
3 | server_name ${DOMAIN};
4 | return 301 https://$host$request_uri;
5 | }
6 |
7 | server {
8 | listen 443 ssl http2;
9 | server_name ${DOMAIN} www.${DOMAIN};
10 |
11 | ssl_certificate /etc/certs/${DOMAIN}.pem;
12 | ssl_certificate_key /etc/certs/${DOMAIN}-key.pem;
13 |
14 | add_header Strict-Transport-Security "max-age=31536000" always;
15 |
16 | ssl_session_cache shared:SSL:20m;
17 | ssl_session_timeout 10m;
18 |
19 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
20 | ssl_prefer_server_ciphers on;
21 | ssl_ciphers "ECDH+AESGCM:ECDH+AES256:ECDH+AES128:!ADH:!AECDH:!MD5;";
22 |
23 | root /var/www/html/web;
24 | index index.php;
25 |
26 | access_log /var/log/nginx/access.log;
27 | error_log /var/log/nginx/error.log;
28 |
29 | gzip on;
30 | gzip_disable "msie6";
31 |
32 | gzip_vary on;
33 | gzip_proxied any;
34 | gzip_comp_level 6;
35 | gzip_buffers 16 8k;
36 | gzip_http_version 1.1;
37 | gzip_min_length 0;
38 | gzip_types text/plain application/javascript text/css text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype;
39 |
40 | client_max_body_size 100M;
41 |
42 | location ~ /.well-known/acme-challenge {
43 | allow all;
44 | root /var/www/html;
45 | }
46 |
47 | location / {
48 | try_files $uri $uri/ /index.php$is_args$args;
49 | }
50 |
51 | location ~ \.php$ {
52 | try_files $uri =404;
53 | fastcgi_buffers 8 16k;
54 | fastcgi_buffer_size 32k;
55 | fastcgi_connect_timeout 60;
56 | fastcgi_read_timeout 300;
57 | fastcgi_split_path_info ^(.+\.php)(/.+)$;
58 | fastcgi_pass wordpress:9000;
59 | fastcgi_index index.php;
60 | include fastcgi_params;
61 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
62 | fastcgi_param PATH_INFO $fastcgi_path_info;
63 | }
64 |
65 | location ~ /\.ht {
66 | deny all;
67 | }
68 |
69 | location = /favicon.ico {
70 | log_not_found off; access_log off;
71 | }
72 | location = /robots.txt {
73 | log_not_found off; access_log off; allow all;
74 | }
75 | location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
76 | expires max;
77 | log_not_found off;
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/.env.example:
--------------------------------------------------------------------------------
1 | DB_NAME='myapp'
2 | DB_USER='root'
3 | DB_PASSWORD='password'
4 |
5 | # Optionally, you can use a data source name (DSN)
6 | # When using a DSN, you can remove the DB_NAME, DB_USER, DB_PASSWORD, and DB_HOST variables
7 | # DATABASE_URL='mysql://database_user:database_password@database_host:database_port/database_name'
8 |
9 | # Optional variables
10 | DB_HOST='mysql'
11 | # DB_PREFIX='wp_'
12 |
13 | WP_ENV='development'
14 | WP_HOME='https://myapp.local'
15 | WP_SITEURL="${WP_HOME}/wp"
16 | WP_DEBUG_LOG=/path/to/debug.log
17 |
18 | # Generate your keys here: https://roots.io/salts.html
19 | AUTH_KEY='generateme'
20 | SECURE_AUTH_KEY='generateme'
21 | LOGGED_IN_KEY='generateme'
22 | NONCE_KEY='generateme'
23 | AUTH_SALT='generateme'
24 | SECURE_AUTH_SALT='generateme'
25 | LOGGED_IN_SALT='generateme'
26 | NONCE_SALT='generateme'
27 |
--------------------------------------------------------------------------------
/src/.github/workflows/issues.yml:
--------------------------------------------------------------------------------
1 | name: Issue closer
2 | on: [issues]
3 | jobs:
4 | autoclose:
5 | runs-on: ubuntu-latest
6 | steps:
7 | - name: Autoclose issues that did not follow issue template
8 | uses: roots/issue-closer@v1.1
9 | with:
10 | repo-token: ${{ secrets.GITHUB_TOKEN }}
11 | issue-close-message: "Hi @${issue.user.login},
12 | It looks like the issue template is missing from this issue. Please take a look at the [Contribution Guidelines](https://github.com/roots/guidelines/blob/master/CONTRIBUTING.md), which will tell you **exactly** what your ticket has to contain in order to be processable.
13 | Please **do not** use the issue tracker for personal support requests. Use [Roots Discourse](https://discourse.roots.io/) to ask the Roots community for help, or [hire someone from the community](https://discourse.roots.io/c/jobs)."
14 | issue-pattern: ".*guidelines for Contributing.*"
15 |
--------------------------------------------------------------------------------
/src/.gitignore:
--------------------------------------------------------------------------------
1 | # Application
2 | web/app/plugins/*
3 | !web/app/plugins/.gitkeep
4 | web/app/mu-plugins/*/
5 | web/app/upgrade
6 | web/app/uploads/*
7 | !web/app/uploads/.gitkeep
8 |
9 | # WordPress
10 | web/wp
11 | web/.htaccess
12 |
13 | # Logs
14 | *.log
15 |
16 | # Dotenv
17 | .env
18 | .env.*
19 | !.env.example
20 |
21 | # Composer
22 | /vendor
23 |
24 | # WP-CLI
25 | wp-cli.local.yml
26 |
--------------------------------------------------------------------------------
/src/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright (c) Roots
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of
4 | this software and associated documentation files (the "Software"), to deal in
5 | the Software without restriction, including without limitation the rights to
6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7 | of the Software, and to permit persons to whom the Software is furnished to do
8 | so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19 | SOFTWARE.
20 |
--------------------------------------------------------------------------------
/src/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "roots/bedrock",
3 | "type": "project",
4 | "license": "MIT",
5 | "description": "WordPress boilerplate with modern development tools, easier configuration, and an improved folder structure",
6 | "homepage": "https://roots.io/bedrock/",
7 | "authors": [
8 | {
9 | "name": "Scott Walkinshaw",
10 | "email": "scott.walkinshaw@gmail.com",
11 | "homepage": "https://github.com/swalkinshaw"
12 | },
13 | {
14 | "name": "Ben Word",
15 | "email": "ben@benword.com",
16 | "homepage": "https://github.com/retlehs"
17 | }
18 | ],
19 | "keywords": [
20 | "bedrock", "composer", "roots", "wordpress", "wp", "wp-config"
21 | ],
22 | "support": {
23 | "issues": "https://github.com/roots/bedrock/issues",
24 | "forum": "https://discourse.roots.io/category/bedrock"
25 | },
26 | "repositories": [
27 | {
28 | "type": "composer",
29 | "url": "https://wpackagist.org",
30 | "only": ["wpackagist-plugin/*", "wpackagist-theme/*"]
31 | }
32 | ],
33 | "require": {
34 | "php": ">=8.1",
35 | "composer/installers": "^1.8",
36 | "vlucas/phpdotenv": "^5.4.1",
37 | "oscarotero/env": "^2.1",
38 | "roots/bedrock-autoloader": "^1.0",
39 | "roots/wordpress": "^6.0.0",
40 | "roots/wp-config": "1.0.0",
41 | "roots/wp-password-bcrypt": "1.0.0",
42 | "wpackagist-theme/twentytwentyone": "^1.6"
43 | },
44 | "require-dev": {
45 | "squizlabs/php_codesniffer": "^3.5.6",
46 | "roave/security-advisories": "dev-master"
47 | },
48 | "config": {
49 | "optimize-autoloader": true,
50 | "preferred-install": "dist",
51 | "allow-plugins": {
52 | "composer/installers": true,
53 | "roots/wordpress-core-installer": true
54 | }
55 | },
56 | "minimum-stability": "dev",
57 | "prefer-stable": true,
58 | "extra": {
59 | "installer-paths": {
60 | "web/app/mu-plugins/{$name}/": ["type:wordpress-muplugin"],
61 | "web/app/plugins/{$name}/": ["type:wordpress-plugin"],
62 | "web/app/themes/{$name}/": ["type:wordpress-theme"]
63 | },
64 | "wordpress-install-dir": "web/wp"
65 | },
66 | "scripts": {
67 | "post-root-package-install": [
68 | "php -r \"copy('.env.example', '.env');\""
69 | ],
70 | "test": [
71 | "phpcs"
72 | ]
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/src/config/environments/development.php:
--------------------------------------------------------------------------------
1 |
2 |