{"id":24030239,"url":"https://github.com/getpop/site","last_synced_at":"2025-02-26T03:35:20.235Z","repository":{"id":62510348,"uuid":"203104409","full_name":"getpop/site","owner":"getpop","description":"[READ ONLY] Create a component-based website","archived":false,"fork":false,"pushed_at":"2023-09-07T09:27:26.000Z","size":174,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-08T17:32:10.262Z","etag":null,"topics":["pop","site-builder","website"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/getpop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2019-08-19T05:30:38.000Z","updated_at":"2023-01-19T16:17:38.000Z","dependencies_parsed_at":"2025-01-08T17:31:19.176Z","dependency_job_id":"f22822d0-2f85-4804-8dff-21f102ba66d8","html_url":"https://github.com/getpop/site","commit_stats":null,"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getpop%2Fsite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getpop%2Fsite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getpop%2Fsite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getpop%2Fsite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getpop","download_url":"https://codeload.github.com/getpop/site/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240788637,"owners_count":19857691,"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":["pop","site-builder","website"],"created_at":"2025-01-08T17:30:30.873Z","updated_at":"2025-02-26T03:35:20.206Z","avatar_url":"https://github.com/getpop.png","language":"PHP","readme":"# Site\n\n\u003c!--\n[![Build Status][ico-travis]][link-travis]\n[![Quality Score][ico-code-quality]][link-code-quality]\n[![Software License][ico-license]](LICENSE.md)\n[![Latest Version on Packagist][ico-version]][link-packagist]\n[![Coverage Status][ico-scrutinizer]][link-scrutinizer]\n[![Total Downloads][ico-downloads]][link-downloads]\n--\u003e\n\nCreate a component-based website\n\n## Install\n\nVia Composer\n\n``` bash\ncomposer require getpop/site\n```\n\n## Development\n\nThe source code is hosted on the [GatoGraphQL monorepo](https://github.com/GatoGraphQL/GatoGraphQL), under [`SiteBuilder/packages/site`](https://github.com/GatoGraphQL/GatoGraphQL/tree/master/layers/SiteBuilder/packages/site).\n\n## Usage\n\nInitialize the component:\n\n``` php\n\\PoP\\Root\\App::stockAndInitializeModuleClasses([([\n    \\PoP\\Site\\Module::class,\n]);\n```\n\n## Architecture foundations\n\nLayouts are rendered through custom-built reactivity, based on observing a unique JavaScript object (which contains database and configuration data).\n\nThe view is implemented through [Handlebars](https://handlebarsjs.com/) templates, which can be loaded both in the client (through the Handlebars runtime) and in the server (through PHP library [LightnCandy](https://github.com/zordius/lightncandy)). This approach is isomorphic: the same code works on both environments.\n\nImplementation coming soon.\n\n## Main Concepts\n\n### Rendering through JavaScript templates\n\nWill be added soon...\n\n### Isomorphic Server-Side Rendering\n\nWill be added soon...\n\n### Reactivity\n\nWill be added soon...\n\n## Architecture Design and Implementation\n\n#### Dataloading\n\n#### Dataloading Modules\n\n### Handlebars\n\nWill be added soon...\n\n### LightnCandy\n\nWill be added soon...\n\n### Code Splitting\n\nWill be added soon...\n\n### Progressive-Web App\n\nWill be added soon...\n\n### Single-Page Application\n\nWill be added soon...\n\n### Content CDN\n\nWill be added soon...\n\n### A/B Testing\n\nWill be added soon...\n\n### Form Input Modules\n\nWill be added soon...\n\n### Client-side Rendering\n\nWill be added soon...\n\n### JavaScript templates through Handlebars\n\nWill be added soon...\n\n### Executing JavaScript functions\n\nWill be added soon...\n\n### Resources\n\nWill be added soon...\n\n### Asset-bundling\n\nWill be added soon...\n\n### Progressive Booting\n\nWill be added soon...\n\n### Links in body\n\nWill be added soon...\n\n### State Management\n\nWill be added soon...\n\n### Data Cache, Configuration Cache and Replication\n\nWill be added soon...\n\n### Reactivity\n\nWill be added soon...\n\n## Server-Side Rendering\n\nWill be added soon...\n\n### Isomorphism\n\nWill be added soon...\n\n### JavaScript templates into PHP through LightnCandy\n\nWill be added soon...\n\n### Rendering a Webpage as a Transactional Email\n\nWill be added soon...\n\n\u003c!-- ## Examples\n\n### Application extending from the API\n\n\u003e Note: The examples below are currently not deployed... Will do so soon...\n\nThe native API can be extended by adding the other layers (configuration, view) to create the application:\n\n- [The homepage](https://nextapi.getpop.org/?output=json\u0026mangled=none\u0026dataoutputmode=combined), [a single post](https://nextapi.getpop.org/posts/a-lovely-tango/?output=json\u0026mangled=none\u0026dataoutputmode=combined), [an author](https://nextapi.getpop.org/u/leo/?output=json\u0026mangled=none\u0026dataoutputmode=combined), [a list of posts](https://nextapi.getpop.org/posts/?output=json\u0026mangled=none\u0026dataoutputmode=combined) and [a list of users](https://nextapi.getpop.org/users/?output=json\u0026mangled=none\u0026dataoutputmode=combined)\n- [An event, filtering from a specific module](https://nextapi.getpop.org/events/coldplay-in-london/?output=json\u0026mangled=none\u0026componentFilter=componentPaths\u0026componentPaths[]=pagesectiongroup.pagesection-body.block-singlepost.block-single-content\u0026dataoutputmode=combined)\n- A tag, [filtering modules which require user state](https://nextapi.getpop.org/tags/internet/?output=json\u0026mangled=none\u0026componentFilter=userstate\u0026dataoutputmode=combined) and [filtering to bring only a page from a Single-Page Application](https://nextapi.getpop.org/tags/internet/?output=json\u0026mangled=none\u0026componentFilter=page\u0026dataoutputmode=combined)\n- [An array of locations, to feed into a typeahead](https://nextapi.getpop.org/locations/?output=json\u0026mangled=none\u0026componentFilter=mainContentComponent\u0026dataoutputmode=combined\u0026datastructure=results)\n- Alternative models for the \"Who we are\" page: [Normal](https://nextapi.getpop.org/who-we-are/?output=json\u0026mangled=none\u0026dataoutputmode=combined), [Printable](https://nextapi.getpop.org/who-we-are/?output=json\u0026mangled=none\u0026thememode=print\u0026dataoutputmode=combined), [Embeddable](https://nextapi.getpop.org/who-we-are/?output=json\u0026mangled=none\u0026thememode=embed\u0026dataoutputmode=combined)\n- Changing the module names: [original](https://nextapi.getpop.org/?output=json\u0026mangled=none\u0026dataoutputmode=combined) vs [mangled](https://nextapi.getpop.org/?output=json\u0026dataoutputmode=combined)\n- Filtering information: [only module settings](https://nextapi.getpop.org/?output=json\u0026dataoutputitems[]=componentsettings\u0026dataoutputmode=combined\u0026mangled=none), [module data plus database data](https://nextapi.getpop.org/?output=json\u0026dataoutputitems[]=databases\u0026dataoutputitems[]=componentdata\u0026dataoutputmode=combined\u0026mangled=none)\n\n---\n---\n--- --\u003e\n\n## PHP versions\n\nRequirements:\n\n- PHP 8.1+ for development\n- PHP 7.2+ for production\n\n### Supported PHP features\n\nCheck the list of [Supported PHP features in `GatoGraphQL/GatoGraphQL`](https://github.com/GatoGraphQL/GatoGraphQL/blob/master/docs/supported-php-features.md)\n\n### Preview downgrade to PHP 7.2\n\nVia [Rector](https://github.com/rectorphp/rector) (dry-run mode):\n\n```bash\ncomposer preview-code-downgrade\n```\n\n## Standards\n\n[PSR-1](https://www.php-fig.org/psr/psr-1), [PSR-4](https://www.php-fig.org/psr/psr-4) and [PSR-12](https://www.php-fig.org/psr/psr-12).\n\nTo check the coding standards via [PHP CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer), run:\n\n``` bash\ncomposer check-style\n```\n\nTo automatically fix issues, run:\n\n``` bash\ncomposer fix-style\n```\n\n## Change log\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.\n\n## Testing\n\nTo execute [PHPUnit](https://phpunit.de/), run:\n\n``` bash\ncomposer test\n```\n\n## Static Analysis\n\nTo execute [PHPStan](https://github.com/phpstan/phpstan), run:\n\n``` bash\ncomposer analyse\n```\n\n## Report issues\n\nTo report a bug or request a new feature please do it on the [GatoGraphQL monorepo issue tracker](https://github.com/GatoGraphQL/GatoGraphQL/issues).\n\n## Contributing\n\nWe welcome contributions for this package on the [GatoGraphQL monorepo](https://github.com/GatoGraphQL/GatoGraphQL) (where the source code for this package is hosted).\n\nPlease see [CONTRIBUTING](CONTRIBUTING.md) and [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md) for details.\n\n## Security\n\nIf you discover any security related issues, please email leo@getpop.org instead of using the issue tracker.\n\n## Credits\n\n- [Leonardo Losoviz][link-author]\n- [All Contributors][link-contributors]\n\n## License\n\nGNU General Public License v2 (or later). Please see [License File](LICENSE.md) for more information.\n\n[ico-version]: https://img.shields.io/packagist/v/getpop/site.svg?style=flat-square\n[ico-license]: https://img.shields.io/badge/license-GPLv2-brightgreen.svg?style=flat-square\n[ico-travis]: https://img.shields.io/travis/getpop/site/master.svg?style=flat-square\n[ico-scrutinizer]: https://img.shields.io/scrutinizer/coverage/g/getpop/site.svg?style=flat-square\n[ico-code-quality]: https://img.shields.io/scrutinizer/g/getpop/site.svg?style=flat-square\n[ico-downloads]: https://img.shields.io/packagist/dt/getpop/site.svg?style=flat-square\n\n[link-packagist]: https://packagist.org/packages/getpop/site\n[link-travis]: https://travis-ci.org/getpop/site\n[link-scrutinizer]: https://scrutinizer-ci.com/g/getpop/site/code-structure\n[link-code-quality]: https://scrutinizer-ci.com/g/getpop/site\n[link-downloads]: https://packagist.org/packages/getpop/site\n[link-author]: https://github.com/leoloso\n[link-contributors]: ../../../../../../contributors\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetpop%2Fsite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetpop%2Fsite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetpop%2Fsite/lists"}