• Stars
    star
    289
  • Rank 143,419 (Top 3 %)
  • Language Twig
  • License
    BSD Zero Clause L...
  • Created about 7 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

nystudio107 Craft 3 CMS scaffolding project

nystudio107

About nystudio107/craft

This is an alternate scaffolding package for Craft 3 CMS projects to Pixel & Tonic's canonical craftcms/craft package.

Vite buildchain

This project uses a Vite.js for the build system as per Vite.js Next Generation Frontend Tooling + Craft CMS, as opposed to the usual webpack buildchain.

Vite is fast ⚑

The project

The project is based on Craft CMS using a unique templates/_boilerplate system for web/AJAX/AMP pages, and implements a number of technologies/techniques:

...and probably a bunch of other stuff too.

The following Craft CMS plugins are used on this site:

  • FastCGI Cache Bust - to bust the FastCGI cache whenever entries are modified
  • ImageOptimize - for the optimized images and srcsets used on the site
  • Minify - to minify the HTML and inline JS/CSS
  • Retour - for setting up 404 redirects
  • SEOmatic - for handling site-side SEO
  • Vite - for loading Vite-generated manifest.json resources in a modern way
  • Typogrify - for smart quotes and other typographic ligatures
  • Webperf - for monitoring web performance

You can read more about it in the Setting up a New Craft 3 CMS Project article.

Using nystudio107/craft

This project package works exactly the way Pixel & Tonic's craftcms/craft package works; you create a new project by first creating & installing the project:

composer create-project nystudio107/craft PATH --no-install

Make sure that PATH is the path to your project, including the name you want for the project, e.g.:

composer create-project nystudio107/craft craft3 --no-install

We use --no-install so that the composer packages for the root project are not installed.

Setting Up Local Dev

You'll need Docker desktop for your platform installed to run devMode in local development

Ensure no other local development environments are running that might have port conflicts, then:

  • Start up the site by typing make dev in terminal in the project's root directory (the first build will be somewhat lengthy)
  • Navigate to http://localhost:8000 to use the site; the vite-dev-server runs off of http://localhost:3000

Wait until you see the following to indicate that the PHP container is ready:

php_1         | Craft is installed.
php_1         | Applying changes from your project config files ... done
php_1         | [01-Dec-2020 18:38:46] NOTICE: fpm is running, pid 22
php_1         | [01-Dec-2020 18:38:46] NOTICE: ready to handle connections

...and the following to indicate that the Vite container is ready:

vite_1        |   vite v2.3.2 dev server running at:
vite_1        |
vite_1        |   > Local:    http://localhost:3000/
vite_1        |   > Network:  http://172.22.0.5:3000/
vite_1        |
vite_1        |   ready in 1573ms.

The CP login credentials are initially set as follows:

Login: [email protected]
Password: letmein

Obviously change these to whatever you like as needed.

Build the production assets by typing make build to build the critical CSS, fonts, and other production assets. They will appear in cms/web/dist/ (just double-click on the report-legacy.html and report-modern.html files to view them).

N.B.: Without authorization & credentials (which are private), the make pulldb will not work (it just runs scripts/docker_pull_db.sh). It's provided here for instructional purposes.

Makefile Project Commands

This project uses Docker to shrink-wrap the devops it needs to run around the project.

To make using it easier, we're using a Makefile and the built-in make utility to create local aliases. You can run the following from terminal in the project directory:

  • make dev - starts up the local dev server listening on http://localhost:8000/
  • make build - builds the static assets via the Vite buildchain
  • make clean - removes the cms/composer.lock & the entire cms/vendor/ directory as well as the buildchain/package-lock.json & the entire buildchain/node_modules/ directory
  • make composer xxx - runs the composer command passed in, e.g. make composer install
  • make craft xxx - runs the craft console command passed in, e.g. make craft project-config/apply in the php container
  • make npm xxx - runs the npm command passed in, e.g. make npm install
  • make nuke - restarts the project from scratch by running make clean (above), then shuts down the Docker containers, removes any mounted volumes (including the database), and then rebuilds the containers from scratch
  • make pulldb - runs the scripts/docker_pull_db.sh script to pull a remote database into the database container; the scripts/.env.sh must be set up first
  • make restoredb xxx - runs the scripts/docker_restore_db.sh script to restore a local database dump into the database container; the scripts/.env.sh must be set up first
  • make ssh - opens up a Unix shell inside the PHP container for the project

Tip: If you try a command like make craft project-config/apply --force you’ll see an error, because the shell thinks the --force flag should be applied to the make command. To side-step this, use the -- (double-dash) to disable further option processing, like this: make -- craft project-config/apply --force

Other notes

To use Xdebug with VSCode install the PHP Debug extension and use the following configuration in your .vscode/launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "log": true,
            "externalConsole": false,
            "pathMappings": {
                "/var/www/project/cms": "${workspaceRoot}/cms"
            },
            "ignore": ["**/vendor/**/*.php"]
        }
    ]
}

Below is the entire intact, unmodified README.md from Pixel & Tonic's craftcms/craft:

Roadmap

  • Update to Tailwind CSS ^3.0.0

.....

Craft CMS

About Craft CMS

Craft is a flexible and scalable CMS for creating bespoke digital experiences on the web and beyond.

It features:

Learn more about it at craftcms.com.

Tech Specs

Craft is written in PHP (7+), and built on the Yii 2 framework. It can connect to MySQL (5.5+) and PostgreSQL (9.5+) for content storage.

Installation

See the following documentation pages for help installing Craft 3:

Popular Resources

More Repositories

1

annotated-webpack-config

This is the companion github repo for the "An Annotated webpack 4 Config for Frontend Web Development" article.
JavaScript
434
star
2

craft-scripts

Shell scripts to manage database backups, asset backups, file permissions, asset syncing, cache clearing, and database syncing between Craft CMS environments
Shell
364
star
3

seomatic

DEPRECATED A turnkey SEO implementation for Craft CMS 2.x that is comprehensive, powerful, and flexible
PHP
357
star
4

nginx-craft

An Nginx virtual host configuration for Craft CMS that implements a number of best-practices.
307
star
5

craft-imageoptimize

Automatically create & optimize responsive image transforms, using either native Craft transforms or a service like Imgix, with zero template changes.
PHP
235
star
6

retour

DEPRECATED Retour allows you to intelligently redirect legacy URLs, so that you don't lose SEO value when rebuilding & restructuring a website.
PHP
168
star
7

craft-seomatic

SEOmatic facilitates modern SEO best practices & implementation for Craft CMS 3. It is a turnkey SEO system that is comprehensive, powerful, and flexible.
PHP
163
star
8

minify

DEPRECATED A simple plugin that allows you to minify blocks of HTML, CSS, and JS inline in Craft CMS templates
PHP
107
star
9

instantanalytics

DEPRECATED Instant Analytics brings full Google Analytics support to your Twig templates and automatic Craft Commerce integration with Google Enhanced Ecommerce.
PHP
101
star
10

craft-twigpack

Twigpack is a bridge between Twig and webpack, with manifest.json & webpack-dev-server HMR support
PHP
97
star
11

rollup-plugin-critical

Vite.js & Rollup plugin for generating critical CSS
TypeScript
88
star
12

devmode

Website for the devMode.fm podcast
Twig
85
star
13

craft-multi-environment

Efficient and flexible multi-environment config for Craft CMS
PHP
83
star
14

vitejs-docker-dev

Local development environment for developing vite.js via Docker container
Makefile
80
star
15

generator-craftplugin

generator-craftplugin is a Yeoman generator for Craft CMS plugins
PHP
73
star
16

craft3-multi-environment

DEPRECATED Efficient and flexible multi-environment config for Craft CMS
72
star
17

craft-typogrify

Typogrify prettifies your web typography by preventing ugly quotes and 'widows' and more
PHP
70
star
18

cookies

DEPRECATED Secure Cookies for Twig Templates in Craft CMS
PHP
68
star
19

generator-craftinstall

DEPRECATED generator-craftinstall is a Yeoman generator for Craft CMS installs
JavaScript
57
star
20

craft-vite

Allows the use of the Vite.js next generation frontend tooling with Craft CMS
PHP
50
star
21

buffer

DEPRECATED Send social updates to Twitter, Facebook, etc. through Buffer.com via Twig templates, URLs, and plugins.
PHP
44
star
22

richvariables

DEPRECATED Allows you to easily use Craft Globals as variables in Rich Text fields
PHP
44
star
23

craft-transcoder

Transcode video & audio files to various formats, and provide video thumbnails
PHP
43
star
24

craft-autocomplete

Provides Twig template IDE autocomplete of Craft CMS & plugin variables
PHP
41
star
25

recipe

DEPRECATED A comprehensive recipe FieldType for Craft CMS that includes metric/imperial conversion, portion calculation, and JSON-LD microdata support
PHP
38
star
26

craft-cookies

A simple plugin for setting and getting cookies from within Craft CMS templates.
PHP
37
star
27

craft-retour

Retour allows you to intelligently redirect legacy URLs, so that you don't lose SEO value when rebuilding & restructuring a website
PHP
36
star
28

craft-minify

A simple plugin that allows you to minify blocks of HTML, CSS, and JS inline in Craft CMS templates
PHP
36
star
29

twig-bundle-installer

Install, update, and manage Twig template bundles via Composer
PHP
35
star
30

dotenvy

Speed up your production sites by ditching .env for key/value variable pairs as Apache, Nginx, and shell equivalents
PHP
32
star
31

spin-up-craft

Spin up a working Craft CMS instance quickly & easily with Docker
Dockerfile
31
star
32

craft-routemap

Returns a list of Craft/Vue/React route rules and element URLs for ServiceWorkers from Craft entries
PHP
31
star
33

craft-recipe

A comprehensive recipe FieldType for Craft CMS that includes metric/imperial conversion, portion calculation, and JSON-LD microdata support
PHP
28
star
34

routemap

DEPRECATED Returns a list of Craft/Vue/React route rules and entry & asset URLs for ServiceWorkers from Craft entries
PHP
28
star
35

craft-similar

Similar for Craft lets you find elements, Entries, Categories, Commerce Products, etc, that are similar, based on... other related elements.
PHP
26
star
36

disqus

DEPRECATED Integrate the Disqus commenting system into Craft CMS websites, including Single Sign On (SSO) and custom login/logout URLs.
PHP
26
star
37

craft-emptycoalesce

Empty Coalesce adds the ??? operator to Twig that will return the first thing that is defined, not null, and not empty
PHP
26
star
38

eagerbeaver

DEPRECATED Allows you to eager load elements from auto-injected Entry elements on demand from your templates.
PHP
25
star
39

transcoder

DEPRECATED Transcode videos to various formats, and provide thumbnails of the video
PHP
25
star
40

craft-richvariables

Allows you to easily use Craft Globals as variables in Rich Text fields
PHP
25
star
41

craft-webperf

Webperf helps you build & maintain high quality websites through Real User Measurement of your website's performance
PHP
25
star
42

plugindev

nystudio107 Craft CMS plugin development environment scaffolding
PHP
23
star
43

fastcgicachebust

DEPRECATED Bust the Nginx FastCGI Cache when entries are saved or created.
PHP
22
star
44

craft-closure

Allows you to use arrow function closures in Twig
PHP
22
star
45

craft-twigprofiler

Twig Profiler allows you to profile sections of your Twig templates, and see the resulting timings in the Yii2 Debug Toolbar
PHP
21
star
46

craft-templatecomments

Adds a HTML comment with performance timings to demarcate `{% block %}`s and each Twig template that is included or extended.
PHP
20
star
47

craft-instantanalytics

Instant Analytics brings full Google Analytics support to your Twig templates and automatic Craft Commerce integration with Google Enhanced Ecommerce.
PHP
20
star
48

pathtools

DEPRECATED This twig plugin for the Craft CMS brings convenient path & url manipulation functions & filters to your Twig templates.
PHP
20
star
49

craft-fastcgicachebust

Bust the Nginx FastCGI Cache when entries are saved or created.
PHP
20
star
50

spin-up-statamic

Spin up a working Statamic instance quickly & easily with Docker
PHP
18
star
51

site-module

An example module for Craft CMS 3 that lets you enhance your websites with a custom site module
PHP
18
star
52

save-remote-file-webpack-plugin

webpack 4 plugin to download remote files, and save them locally
JavaScript
17
star
53

craft-youtubeliveembed

This plugin allows you to embed a YouTube live stream and/or live chat on your webpage
PHP
17
star
54

craft-connect

Allows you to connect to external databases and perform db queries
PHP
16
star
55

craft-twigfield

DEPRECATED: Provides a twig editor field with Twig & Craft API autocomplete
PHP
15
star
56

craft-eagerbeaver

DEPRECATED: Allows you to eager load elements from auto-injected Entry elements on demand from your templates.
PHP
14
star
57

tailwind-css-performance

Small repo to demonstrate the slow building of Tailwind CSS using `webpack-dev-server` HMR & PostCSS
JavaScript
13
star
58

docker-images

Docker image source files
Dockerfile
13
star
59

disclosedassets

DEPRECATED Allow your clients to find asset sub-folders by disclosing them by default
PHP
13
star
60

craft-disqus

Integrates the Disqus commenting system into Craft 3 websites, including Single Sign On (SSO) and custom login/logout URLs
PHP
12
star
61

vanillaforums

DEPRECATED Single Sign On plugin for VanillaForums/jsConnect and CraftCMS
PHP
11
star
62

craft-pathtools

This twig plugin for the Craft CMS brings convenient path & url manipulation functions & filters to your Twig templates.
PHP
11
star
63

craft-plugin-vite

Plugin Vite is the conduit between Craft CMS plugins and Vite, with manifest.json & HMR support
PHP
10
star
64

craft-units

Units is a plugin that can convert between any units of measure, and comes with a Field for content authors to use
PHP
9
star
65

craft-icalendar

Tools for parsing & formatting the RFC 2445 iCalendar (.ics) specification
PHP
8
star
66

gatsby-concurrent-mode

Enable Concurrent Mode in in React for Gatsby projects.
JavaScript
8
star
67

charcuterie-vue-vitest

charcuterie-vue-vitest
TypeScript
6
star
68

get-webpack-config

Utilities to help you modularize your webpack configs
JavaScript
6
star
69

craft-plugin-vite-buildchain

A drop-in buildchain for using Vite in your Craft CMS plugins or modules
TypeScript
6
star
70

create-symlink-webpack-plugin

webpack 4 plugin to generate symlinks
JavaScript
5
star
71

spin-up-statamic-starter

Starter kit to add Spin Up Statamic to your existing Statamic project
PHP
4
star
72

craft-code-field

Provides a Code Field that has a full-featured code editor with syntax highlighting & autocomplete
PHP
4
star
73

craft-code-editor

Provides a code editor field with Twig & Craft API autocomplete
PHP
4
star
74

craft-plugin-manifest

Plugin Manifest is the conduit between Craft CMS plugins and webpack, with manifest.json & webpack-dev-server HMR support
PHP
4
star
75

matrixfacades

This is a project demonstrates how to improve authoring experience Matrix Façades
PHP
4
star
76

.github

3
star
77

craft-vanillaforums

Single Sign On plugin for Vanilla Forums/jsConnect and CraftCMS
PHP
3
star
78

vitepress-starter

Starter repository for VitePress documenation
3
star
79

craft-twig-sandbox

Allows you to easily create a sandboxed Twig environment where you can control what tags, filters, functions, and object methods/properties are allowed
PHP
3
star
80

craft-twig-base-templates

Craft CMS Twig base templates
Twig
3
star
81

craft-instantanalytics-ga4

Instant Analytics brings full Google GA4 server-side analytics support to your Twig templates and automatic Craft Commerce integration
PHP
3
star
82

craft-imageoptimize-thumbor

Provides an Thumbor image transform type for the ImageOptimize plugin
PHP
2
star
83

craft-imageoptimize-imgix

Provides an Imgix image transform type for the ImageOptimize plugin.
PHP
2
star
84

docker-yeoman

node yeoman Docker images
Dockerfile
2
star
85

craft-imageoptimize-sharp

Provides an Sharp image transform type for the ImageOptimize plugin
PHP
2
star
86

fwt

Website for the Friends of Webster Trails website http://webstertrails.org/
Twig
2
star
87

test-twig-bundle

Test bundle of Twig templates for Bundle Installer
Twig
2
star
88

schemagen

Generates PHP models representing schema.org JSON-LD types
PHP
2
star
89

entitydecode

DEPRECATED Decodes HTML Entities
PHP
1
star
90

spin-up-statamic-peak

Spin up a working Statamic Peak quickly & easily with Docker
PHP
1
star
91

srcsetdev

TypeScript
1
star
92

craft-twig-base-components

Craft CMS Twig base components
Twig
1
star