We are in the process of preparing our framework to be used by other developers than us, but we haven't finished yet. If you want to start working with it, please send us an email to hello@frontity.com and we'll help you set up a local environment.
» Frontity is a framework for building WordPress themes made with React.
It is based in a fully-decoupled approach. This means it uses NodeJS (and not PHP) to create the final server-side-rendered html.
It uses the WP REST API to fetch content from WordPress and a small PHP plugin (our Frontity WP Plugin) to inject Frontity in WordPress.
Apart from React, state is managed with MobxStateTree and CSS with StyledComponents.
Frontity is also extensible. Right now we have extensions like Disqus comments, OneSignal notifications, Adsense, Doubleclick, SmartAds, Google Analytics, Google Tag Manager, Custom CSS or Custom HTML. This means, your Frontity Theme won't have to reinvent the wheel each time including stuff than can be outsourced to extensions.
The Frontity's render engine also supports AMP html. This means you can reuse your React and CSS code to create your AMP pages.
First, clone this repo:
git clone https://github.com/frontity/frontity
Then clone the extensions you want to use in the packages folder:
cd frontity/packages
git clone https://github.com/frontity/wp-org-connection
git clone https://github.com/frontity/saturn-theme
Install the packages:
cd ..
npm install
And run the project!
npm run start:pwa
Run npm run start:pwa to start the project in development mode.
Run npm run build:pwa -- -p && npm run serve:pwa -- -p to start the project in production mode.
Server starts in http://localhost:3000 by default.
This sets MODE to pwa:
npm run start:pwa
And this sets MODE to amp:
npm run start:amp
You can also pass --pwa or --amp to npm run start:
npm run start -- --pwa or npm run start -- --amp
You can also set MODE=amp or MODE=pwa in the environment variables.
Default NODE_ENV is development.
This sets NODE_ENV to production:
npm run start:pwa -- --prod or npm run start:pwa -- -p
Default Express server is http://localhost:3000.
This starts Express server on https://localhost:3000:
npm run start:pwa -- --https or npm run start:pwa -- -s
This starts node in debug mode:
npm run start:pwa -- --debug or npm run start:pwa -- -d
Default Express port is 3000.
This starts the server in a different port:
npm run start:pwa -- --port XXXX
This setting is for HMR only. You should use the static query to set the public path dynamically.
This sets Webpack's HMR path (__webpack_hmr) to http://localhost:3000 or https://localhost:3000 (depending on your http/https configuration):
npm run start:pwa -- --wp or npm run start:pwa -- -w
This setting is for HMR only. You should use the static query to set the public path dynamically.
This sets Webpack's HMR path (__webpack_hmr) to a custom path:
npm run start:pwa -- --hmr https://ngrok.io/xxx
If you want to analyze the bundles, you can pass:
npm run start:pwa -- --analyze or npm run start:pwa -- -a
The output html files will be located in the .build/pwa/(client|server)/analyze folders.
You can pass some queries to configure the server.
Use http://localhost:3000?siteId=XXX to specify the site.
Use http://localhost:3000?ssrUrl=http://domain.com to specify the SSR server.
Use http://localhost:3000?staticUrl=http://domain-static.com to specify the Static server.
Use http://localhost:3000?server=http://domain.com to specify both the SSR and the Static servers.
If you don't pass any server, a dynamic path ('/') will be used.
Use http://localhost:3000?env=prod to specify a prod (production) environment. If you don't pass it, then pre is used.
This project adheres to Semantic Versioning and Angular Conventional Changelog. Every release is documented on the Github Releases page.
This project is licensed under the terms of the Apache 2.0 license.
Please take a look at our Contribution Guide.