{"id":13476955,"url":"https://github.com/phcode-dev/phoenix","last_synced_at":"2025-05-14T01:07:31.814Z","repository":{"id":37009120,"uuid":"393428601","full_name":"phcode-dev/phoenix","owner":"phcode-dev","description":"The text editor designed to make coding as simple and fun as playing a video game","archived":false,"fork":false,"pushed_at":"2025-04-02T14:15:40.000Z","size":193412,"stargazers_count":2085,"open_issues_count":202,"forks_count":139,"subscribers_count":30,"default_branch":"main","last_synced_at":"2025-04-03T09:39:31.690Z","etag":null,"topics":["brackets","code","css","editor","html","ide","javascript","phoenix","preview","web"],"latest_commit_sha":null,"homepage":"https://phcode.io","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phcode-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["phcode-dev"],"patreon":null,"open_collective":"phoenix-ide","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2021-08-06T16:00:45.000Z","updated_at":"2025-04-03T05:28:23.000Z","dependencies_parsed_at":"2023-02-17T18:15:36.739Z","dependency_job_id":"b5f21000-e3a1-4a5a-bd07-2fb1f8e54cbf","html_url":"https://github.com/phcode-dev/phoenix","commit_stats":{"total_commits":14871,"total_committers":469,"mean_commits":"31.707889125799575","dds":0.8164212225136172,"last_synced_commit":"1926300fb86e0365c8c6661ccceab6c9c6362128"},"previous_names":[],"tags_count":130,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phcode-dev%2Fphoenix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phcode-dev%2Fphoenix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phcode-dev%2Fphoenix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phcode-dev%2Fphoenix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phcode-dev","download_url":"https://codeload.github.com/phcode-dev/phoenix/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247432349,"owners_count":20938140,"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":["brackets","code","css","editor","html","ide","javascript","phoenix","preview","web"],"created_at":"2024-07-31T16:01:36.578Z","updated_at":"2025-04-10T13:53:25.813Z","avatar_url":"https://github.com/phcode-dev.png","language":"JavaScript","readme":"# Welcome to Phoenix!\n\n**Website: https://phcode.io**\n\nPhoenix is a modern open-source and [free software](https://www.gnu.org/philosophy/free-sw.en.html) text editor\ndesigned to make coding as simple and fun as playing a video game.\n\n#### Code Guardian\n[![Phoenix build verification](https://github.com/phcode-dev/phoenix/actions/workflows/build_verify.yml/badge.svg)](https://github.com/phcode-dev/phoenix/actions/workflows/build_verify.yml)\n\n\u003ca href=\"https://sonarcloud.io/summary/new_code?id=phcode-dev_phoenix\"\u003e\n  \u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=phcode-dev_phoenix\u0026metric=alert_status\" alt=\"Sonar code quality check\" /\u003e\n  \u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=phcode-dev_phoenix\u0026metric=security_rating\" alt=\"Security rating\" /\u003e\n  \u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=phcode-dev_phoenix\u0026metric=vulnerabilities\" alt=\"vulnerabilities\" /\u003e\n  \u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=phcode-dev_phoenix\u0026metric=coverage\" alt=\"Code Coverage\" /\u003e\n  \u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=phcode-dev_phoenix\u0026metric=bugs\" alt=\"Code Bugs\" /\u003e\n  \u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=phcode-dev_phoenix\u0026metric=reliability_rating\" alt=\"Reliability Rating\" /\u003e\n  \u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=phcode-dev_phoenix\u0026metric=sqale_rating\" alt=\"Maintainability Rating\" /\u003e\n  \u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=phcode-dev_phoenix\u0026metric=ncloc\" alt=\"Lines of Code\" /\u003e\n  \u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=phcode-dev_phoenix\u0026metric=sqale_index\" alt=\"Technical debt\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://www.npmjs.com/package/git-commit-msg-linter\"\u003e\n  \u003cimg src=\"https://badgen.net/badge/git-commit-msg-linter/3.0.0/green\" alt=\"commit msg linted by git-commit-msg-linter\" /\u003e\n\u003c/a\u003e\n\n##### Error and App stability monitoring powered by\n\u003ca href=\"https://www.bugsnag.com/\"\u003e\n\u003cimg src=\"https://assets-global.website-files.com/607f4f6df411bd01527dc7d5/63bc40cd9d502eda8ea74ce7_Bugsnag%20Full%20Color.svg\" alt=\"bugsnag\" style=\"width:200px;\"/\u003e\n\u003c/a\u003e\n\n#### Development status:  Stable/Active.\n\n![Screenshot from 2022-09-20 13-35-03](https://user-images.githubusercontent.com/5336369/191202975-6069d270-526a-443d-bd76-903353ae1222.png)\n\n## Tenets\n1. Targeted for web development. Js, html and CSS enjoy special status.\n2. Game UX - Approach code editing like a game that a school kid would play after skipping the tutorial.\n2. Light-weight editor.\n3. Extension support maintaining full compatibility with Brackets extensions (except brackets-node extensions).\n4. Uncompromised local development experience.\n5. Support for pluggable remote back-ends.\n6. Phoenix core will work from a static web server.\n7. Source code in release builds will always be auditable and readable from dev-tools.\n\nAGPL/Libre license guards your right to audit and change code that handles your data.\nPhoenix usually loads up in under one second and loading it faster at the expense of making it hard\nto read and develop is a noop. We prioritize simplicity and eaze of development. \n\n## Contributing/ Feedback\n* [Get in touch with our community](https://github.com/phcode-dev/phoenix/discussions).\n* [Request a new feature](https://github.com/phcode-dev/phoenix/discussions/categories/ideas)\n* [Join our Discord community](https://discord.com/invite/rBpTBPttca)\n* [Raise issues](https://github.com/phcode-dev/phoenix/issues)\n* [Contribute](https://github.com/phcode-dev/phoenix)\n\n## Building Phoenix\n[Source Repository](https://github.com/phcode-dev/phoenix) \n\n* Install gulp globally once. \n  * In Mac/Linux: `sudo npm install -g gulp-cli`\n  * In Windows: `npm install -g gulp-cli`\n* run `npm install`\n* To build after npm install: \n  * `npm run build` - generate builds close to release builds locally.\n  * or `npm run build:debug` to build debug builds for development with more debug symbols.\n\n## Running phoenix\n* run `npm run serve` in the terminal.\n* Use chrome/edge browser to navigate to [http://localhost:8000/src](http://localhost:8000/src)\n\n## IDE Setup\nSonarLint static code analysis checker is not yet available as a Brackets\nextension. Use sonarLint plugin for webstorm or any of the available\nIDEs from this link before raising a pull request: https://www.sonarlint.org/\n\n## Building Release artifacts\n\n* run `npm install`\n* To build the release artifacts, run one of the following commands depending on what build you want:\n  * `npm run release:dev`, `npm run release:staging`, `npm run release:prod`\n* The release artifacts to host will be in `dist` folder.\n\n## Running and debugging tests in browser\nThis is the easiest and preferred way to run Phoenix tests.\n* run `npm run build` in the terminal.\n  * NB: this will setup all the required files for test \n* Use chrome/edge browser to navigate to Phoenix[http://localhost:8000/src/index.html](http://localhost:8000/src/index.html)\n* In Phoenix Menu, select `Debug \u003e Phoenix Code Diagnostic Tools \u003e Run Phoenix Code Tests` To open the test runner.\n* Run tests as required. \n  * NB: To reset test data files, click on `reset and reload tests` option in the test runner.\n* You can use the browser dev tools to debug. \n\n## Running and debugging tests in playwright headless mode or in GitHub Actions\nWe use [Playwright](https://playwright.dev/) to run the headless version of our tests.\nPlease note that we do not use Playwright as our actual test framework, but as a headless browser(chrome and firefox)\nto run our tests written in Jasmine/Mocha.\n* run `npm run test\u003c*\u003e` in the terminal to run the unit tests run in GitHub actions. Eg. `npm run testChromium`.\n* To debug the tests, `npm run test\u003c*\u003eDebug`. Eg. `npm run testFirefoxDebug`. However, we recommend using the\nabove `Running tests in browser` section to actually fix/debug tests that are failing in the pipeline.\nIt has much better debug UX and fixing it directly in the browser will almost certainly fix it in playwright.\n* To run integration tests use command: `npx cross-env TEST_ENV=\u003cintegration suite name\u003e npm run test\u003c*\u003e`\n  * The allowed integration test suite names are: `integration, LegacyInteg, mainview, livepreview`.\n    You can get these suite names from the test runner.\n  * Eg: `npx cross-env TEST_ENV=integration npm run testChromium`\n* To debug integration tests use command: ` npx cross-env TEST_ENV=\u003cintegration suite name\u003e npm run test\u003c*\u003eDebug`\n  * Eg: `npx cross-env TEST_ENV=mainview npm run testChromiumDebug` \n\n### Running tests in dev staging and prod stacks in playwright\n#### To run tests against these stacks locally, follow these steps:\n1. Build the release using `npm run release:\u003cstage\u003e`. Eg: `npm run release:dev`\n2. Run the unit tests using format: `npm run test\u003c*\u003eDist`. Eg. `npm run testChromiumDist`.\n3. Run the integration tests using the format: `npx cross-env TEST_ENV=\u003cintegration suite name\u003e npm run test\u003c*\u003eDist`. Eg. `npx cross-env TEST_ENV=mainview npm run testChromiumDist`.\n \n#### To run tests against these stacks go to the following url: \n* dev: https://dev.phcode.dev/test/SpecRunner.html\n* staging: https://staging.phcode.dev/test/SpecRunner.html\n* prod: https://phcode.dev/test/SpecRunner.html\n\n## Browsing the virtual file system\nTo view/edit the files in the browser virtual file system in Phoenix:\n`debug menu\u003e Open Virtual File System`\n\n## Clean and reset builds\n* clean builds only: `npm run clean`\n\n## Previewing changes in dev and staging\nOne a pull request is merged, it will be automatically deployed to dev.phcode.dev . To view the changes:\n1. goto https://dev.phcode.dev/devEnable.html and click `enable dev.phcode.dev` . only needs to be done once.\n2. goto https://dev.phcode.dev to preview your changes. If it is a recent change, you might need to wait for\nup to 15 minutes before the changes are deployed to the dev stage. Reload page a few times to get the latest\ndev build and reset cached content.\n\nThe process is the same for `staging.phcode.dev`. Builds that are verified in development will be pushed\nperiodically to staging. To view staging:\n1. goto https://staging.phcode.dev/devEnable.html and click `enable staging.phcode.dev` . only needs to be done once.\n2. goto https://staging.phcode.dev to preview your changes.  If it is a recent change, you might need to wait for\n   up to 15 minutes before the changes are deployed to the dev stage. Reload page a few times to get the latest\n   dev build and reset cached content.\n\n## Deployment to phcode.dev\n* All changes pushed to the main branch are automatically published to https://dev.phcode.dev \n* To publish the changes to https://staging.phcode.dev , push changes to the `staging` branch in this repo with a pull request.\n* Once the changes are validated and tested, trigger a prod deployment by pushing to the `prod` branch.\n\n## Acknowledgements\n* Phoenix is based on the Brackets code editor by Adobe. Find out more on [Adobe Brackets here](https://github.com/adobe/brackets/).\n* Our main code editor library https://codemirror.net/\n* Inspired by previous work from the [Mozilla Thimble](https://github.com/mozilla/thimble.mozilla.org) project to port brackets to the web. https://github.com/mozilla/brackets\n* In browser server based on [nohost](https://github.com/humphd/nohost) by https://github.com/humphd/\n\n\n## License\nDiscussion: https://github.com/phcode-dev/phoenix/issues/184\n\nGNU AGPL-3.0 License\n\nCopyright (c) 2021 - present Core.ai\n\nBased on Backets, Copyright (c) 2012 Adobe Systems Incorporated and the brackets.io community\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU Affero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public License\nalong with this program.  If not, see https://opensource.org/licenses/AGPL-3.0.\n\n","funding_links":["https://github.com/sponsors/phcode-dev","https://opencollective.com/phoenix-ide"],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphcode-dev%2Fphoenix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphcode-dev%2Fphoenix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphcode-dev%2Fphoenix/lists"}