{"id":13805411,"url":"https://github.com/perchlabs/webird","last_synced_at":"2025-05-13T19:31:01.368Z","repository":{"id":21156381,"uuid":"24458912","full_name":"perchlabs/webird","owner":"perchlabs","description":"Webird","archived":true,"fork":false,"pushed_at":"2020-07-16T04:34:44.000Z","size":1484,"stargazers_count":99,"open_issues_count":12,"forks_count":23,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-08-04T01:04:56.213Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/perchlabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-09-25T13:24:29.000Z","updated_at":"2023-03-17T14:35:54.000Z","dependencies_parsed_at":"2022-07-29T18:39:55.024Z","dependency_job_id":null,"html_url":"https://github.com/perchlabs/webird","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perchlabs%2Fwebird","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perchlabs%2Fwebird/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perchlabs%2Fwebird/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perchlabs%2Fwebird/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/perchlabs","download_url":"https://codeload.github.com/perchlabs/webird/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225254329,"owners_count":17445163,"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":[],"created_at":"2024-08-04T01:01:00.870Z","updated_at":"2024-11-18T21:31:11.012Z","avatar_url":"https://github.com/perchlabs.png","language":"PHP","funding_links":[],"categories":["Application Skeleton"],"sub_categories":[],"readme":"## Webird full application stack\n\nWebird was created to merge the latest PHP and Node.js innovations into a single application stack.\n\nThe PHP foundation is comprised of Phalcon and Composer, which are used to create a HMVC foundation that offers everything that is expected of a modern PHP server side framework.\nThe Javascript foundation is built with Webpack 4, Vue 2 and NPM, which when used together are able to produce highly efficient single page applications.\nNode.js is required for development only and is not required once a project has been built.\n\n#### Key technologies of Webird:\n* PHP 7.2\n* [Phalcon](http://phalconphp.com/en/) 3\n* [Webpack](http://webpack.github.io/) 4\n* [Vue](https://vuejs.org/) 2\n* [Babel](https://babeljs.io/) 7\n* [PostCSS](https://github.com/postcss/postcss)\n* [nginx](http://nginx.org/)\n* [Composer](https://getcomposer.org/)\n* [Nodejs](https://nodejs.org)\n* [Ratchet](http://socketo.me/)\n* [gettext](http://www.gnu.org/software/gettext/gettext.html)\n* [MariaDB](https://mariadb.org/) 10.4\n* [Docker](https://www.docker.com/)\n\n#### Notable aspects of Webird:\n* PHP CLI utilities for many tasks\n* Manage all third party dependencies with Composer and NPM\n* Bash provisioning and local installation scripts for configuring system (based on [setupify](https://github.com/perchlabs/setupify))\n* A single PHP command that starts development processes across PHP and Nodejs\n* Live reloading ES6 module front end environment\n* Google OAuth2 login\n* Integrate gettext .po environment for both PHP and Webpack\n* Vue 2 example integration\n* Includes Dockerfile skeleton\n\n### Install Requirements:\n* PHP \u003e= 7.2\n* Phalcon \u003e= 3.4.0\n* MariaDB \u003e= 10.4\n* Node.js \u003e= 10.2\n\n**Installation Instructions:**\n```\n# Ubuntu 18.04 Bionic\n\n# System provisioning\nsudo ./setup/install ubuntu1804\n\n# mariadb setup\nsudo mysqladmin --protocol=socket create webird\nsudo mysql --protocol=socket webird \u003c ./etc/schema.sql\n\n# Create a Webird user. You can use this user to create more users via the web interface.\n./dev/run useradd --activate --password 'openopen' 'Your Name' 'yourname@gmail.com' Administrators\n```\n\n### Poedit Localization editor:\nIn order to modify the localization messages you will need to configure the [Poedit](http://poedit.net/) GNU gettext frontend since it does not come with the tools necessary to parse Volt and Vue templates.  The provision script will have installed a node script called xgettext-template.\n\n##### Poedit Configuration Instructions:\nGo to File - Preferences... in Poedit and add a new parser in the Parsers tab:\n\n* **Volt**\n  * Language: `Volt`\n  * List of extensions...: `*.volt`\n  * Parser Command: `xgettext-template -L Volt --force-po -o %o %C %K %F`\n  * An item in keywords list: `-k %k`\n  * An item in input files list: `%f`\n  * Source code charset: `--from-code=%c`\n* **Vue**\n  * TODO\n\n## Development Usage:\n1. Run server processes: `./dev/run [server]` and wait until webpack-dev-server has finished building\n2. Visit http://dev.webird.io\n\nIf you see the local host file not configured page then add `127.0.0.1 dev.webird.io` to your `/etc/hosts` file.\n\n## Production Usage:\n\n#### Create prod (production) environment:\n1. Configure `./etc/prod.json` to override settings from `./etc/prod_defaults.json`.  These two files will be merged to form `./build/etc/config.json`.\n2. Create the prod environment: `./dev/run build`\n3. Enter into prod directory `cd ./prod`\n4. `./run nginx | sudo tee /etc/nginx/sites-available/prod.webird.io 1\u003e /dev/null`\n5. `sudo ln -fs /etc/nginx/sites-available/prod.webird.io /etc/nginx/sites-enabled/prod.webird.io`\n\n#### Run final prod environment:\n\n**Attention**: At this point it will be assumed that you are inside of the portable `prod` directory wherever it is now located (or named).\n\n1. Import database schema located at `./etc/schema.sql`\n2. Run server processes: `./run` (for websockets, beanstalkd loop, etc)\n3. Visit https://prod.webird.io\n\nThe nginx configuration must be rebuilt if the production environment directory is moved or renamed.  It is recommended to use the `./run nginx` command to rebuild the configuration instead of manually editing the generated nginx configuration.  If more advanced custom settings are required it is recommended to first modify the source `./app/phalcon/common/views/simple/nginx/prod.volt` file and then rebuild the prod environment.\n\n**Note**: Node.js is no longer a dependency at this point since it is only used to build the browser facing content into static bundles.\n\n## Project Structure:\n\n```\n./setup\n├── install (takes a parameter $osName to provision system)\n└── menu (provides a lightbar menu interface to installation)\n```\n\n```\n./app\n├── locale/ (contains the gettext locale .po files uses by Phalcon and Webpack)\n├── theme/ (theme files to be read as-is and also processed by Webpack)\n├── phalcon\n│   ├── bootstrap_cli.php\n│   ├── bootstrap_web.php\n│   ├── common/\n│   ├── config/\n│   └── modules/\n└── webpack\n    ├── config.json (you can make this .json or .js)\n    ├── entries (code entry points)\n    └── modules (application ES6 modules)\n        └── commons (common code to be run by multiple entry points)\n```\n\n```\n./dev\n├── run (CLI entry for dev environment)\n├── public/\n│   └── index.php (Web entry for dev environment)\n├── cmd_overrides/ (dev specific command overrides for CLI interface)\n└── webpack.js (Webpack script)\n```\n\n```\n./prod\n├── run (CLI entry for built system)\n├── public/\n│   ├── index.php (Web entry for built system)\n│   └── static resources copied from app directory\n├── etc/\n├── cache-static/\n│   ├── locale/ (localization files in machine readable .mo format)\n│   └── volt/ (compiled Volt templates)\n├── phalcon/\n└── vendor/ (Composer packages)\n```\n\nCompare the `./app` directory to a built `./prod` directory to notice the differences between the app code and dev environment and the built system.\n\nYou may also view the build system routine at `app/phalcon/modules/cli/tasks/DevTask.php`\n\n**Note**: The `./prod` directory contains only optimized and uglified JS resources and if Ion Cube has been enabled then the build process will use it to protect the PHP code.\n\n**Note**: A Vue template and single file component gettext extractor does not current exist as it has yet to be made.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperchlabs%2Fwebird","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fperchlabs%2Fwebird","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperchlabs%2Fwebird/lists"}