getpop/site

Create a component-based website

1.0.6 2023-09-07 09:19 UTC

README

Create a component-based website

Install

Via Composer

composer require getpop/site

Development

The source code is hosted on the GatoGraphQL monorepo, under SiteBuilder/packages/site.

Usage

Initialize the component:

\PoP\Root\App::stockAndInitializeModuleClasses([([
    \PoP\Site\Module::class,
]);

Architecture foundations

Layouts are rendered through custom-built reactivity, based on observing a unique JavaScript object (which contains database and configuration data).

The view is implemented through Handlebars templates, which can be loaded both in the client (through the Handlebars runtime) and in the server (through PHP library LightnCandy). This approach is isomorphic: the same code works on both environments.

Implementation coming soon.

Main Concepts

Rendering through JavaScript templates

Will be added soon...

Isomorphic Server-Side Rendering

Will be added soon...

Reactivity

Will be added soon...

Architecture Design and Implementation

Dataloading

Dataloading Modules

Handlebars

Will be added soon...

LightnCandy

Will be added soon...

Code Splitting

Will be added soon...

Progressive-Web App

Will be added soon...

Single-Page Application

Will be added soon...

Content CDN

Will be added soon...

A/B Testing

Will be added soon...

Form Input Modules

Will be added soon...

Client-side Rendering

Will be added soon...

JavaScript templates through Handlebars

Will be added soon...

Executing JavaScript functions

Will be added soon...

Resources

Will be added soon...

Asset-bundling

Will be added soon...

Progressive Booting

Will be added soon...

Links in body

Will be added soon...

State Management

Will be added soon...

Data Cache, Configuration Cache and Replication

Will be added soon...

Reactivity

Will be added soon...

Server-Side Rendering

Will be added soon...

Isomorphism

Will be added soon...

JavaScript templates into PHP through LightnCandy

Will be added soon...

Rendering a Webpage as a Transactional Email

Will be added soon...

PHP versions

Requirements:

  • PHP 8.1+ for development
  • PHP 7.2+ for production

Supported PHP features

Check the list of Supported PHP features in GatoGraphQL/GatoGraphQL

Preview downgrade to PHP 7.2

Via Rector (dry-run mode):

composer preview-code-downgrade

Standards

PSR-1, PSR-4 and PSR-12.

To check the coding standards via PHP CodeSniffer, run:

composer check-style

To automatically fix issues, run:

composer fix-style

Change log

Please see CHANGELOG for more information on what has changed recently.

Testing

To execute PHPUnit, run:

composer test

Static Analysis

To execute PHPStan, run:

composer analyse

Report issues

To report a bug or request a new feature please do it on the GatoGraphQL monorepo issue tracker.

Contributing

We welcome contributions for this package on the GatoGraphQL monorepo (where the source code for this package is hosted).

Please see CONTRIBUTING and CODE_OF_CONDUCT for details.

Security

If you discover any security related issues, please email leo@getpop.org instead of using the issue tracker.

Credits

License

GNU General Public License v2 (or later). Please see License File for more information.