AspireCloud is an API server for WordPress, partially implementing the api.wp.org specifications, and proxying the rest
Find a file
2025-06-30 09:07:41 -06:00
.github build(deps): bump shivammathur/setup-php from 2.34.0 to 2.34.1 2025-06-13 17:22:11 +00:00
app add and use JSON::tryToAssoc to catch json decode errors (#296) 2025-06-30 09:07:41 -06:00
bin Determine asset content-type from extension (#163) 2025-02-12 15:26:12 -07:00
bootstrap Make API token optional for user api routes (#159) 2025-02-06 13:10:32 -07:00
bruno fix: replace downloadurl_placeholder with download_link (#162) 2025-02-11 18:36:34 -07:00
config Serve downloads directly from S3 and not local filesystem (#291) 2025-06-25 18:43:28 -06:00
database Use contributors metadata on plugins to enable author search (#286) 2025-06-19 16:07:15 -06:00
docker Merge pull request #274 from aspirepress/dependabot/docker/docker/cli/php-cd5542d 2025-06-12 18:51:23 +00:00
meta/bin Improve test coverage (#217) 2025-03-31 12:53:25 -06:00
public Improve test coverage (#217) 2025-03-31 12:53:25 -06:00
resources feat(ui): add stability warning banner on non-prod systems (#144) 2025-01-24 13:21:57 -07:00
routes support /plugins/info/1.0/<slug>.json (#293) 2025-06-25 22:28:53 -06:00
storage Merging Laravel into main (#27) 2024-10-19 07:32:17 -06:00
tests add and use JSON::tryToAssoc to catch json decode errors (#296) 2025-06-30 09:07:41 -06:00
.dockerignore add all dotfiles to dockerignore (#271) 2025-06-11 16:32:27 -06:00
.editorconfig Merging Laravel into main (#27) 2024-10-19 07:32:17 -06:00
.env.example Make API token optional for user api routes (#159) 2025-02-06 13:10:32 -07:00
.gitattributes Merging Laravel into main (#27) 2024-10-19 07:32:17 -06:00
.gitignore Convert Resource Request/Response classes to Bag (#225) 2025-04-02 20:40:32 -06:00
.pre-commit-config.yaml [StepSecurity] Apply security best practices (#178) 2025-03-15 12:39:11 -06:00
artisan Merging Laravel into main (#27) 2024-10-19 07:32:17 -06:00
CHANGELOG.md Adding a changelog 2024-10-07 05:01:12 -04:00
composer.json make downloads redirect to local file (#276) 2025-06-13 14:48:12 -06:00
composer.lock build(deps): bump league/commonmark from 2.6.1 to 2.7.0 2025-05-06 01:46:54 +00:00
docker-compose.override.yml.dist Security hardening, upgrade php to 8.4 (#177) 2025-03-15 12:32:22 -06:00
docker-compose.yml Security hardening, upgrade php to 8.4 (#177) 2025-03-15 12:32:22 -06:00
jsconfig.json User Management and API Keys (#84) 2024-11-01 18:30:03 -06:00
LICENSE Updating license file 2024-10-06 06:28:22 -04:00
Makefile Add normalizing and weighting to search (#259) 2025-06-05 10:04:57 -06:00
package.json build(deps-dev): bump @vitejs/plugin-vue from 5.2.1 to 5.2.3 2025-03-17 18:59:07 +00:00
phpstan.dist.neon fix multiple issues with PassThroughController (#261) 2025-06-07 21:16:13 -06:00
phpunit.xml Stream downloads instead of redirecting (#145) 2025-01-27 15:52:44 -07:00
pint.json Drop GrumPHP, switch house style to PER-CS, and use Pint (#135) 2025-01-19 20:18:34 -07:00
postcss.config.js Merging Laravel into main (#27) 2024-10-19 07:32:17 -06:00
README.md Repo Admin API (#123) 2024-12-28 15:57:51 -07:00
tailwind.config.js User Management and API Keys (#84) 2024-11-01 18:30:03 -06:00
vite.config.js User Management and API Keys (#84) 2024-11-01 18:30:03 -06:00
yarn.lock build(deps-dev): bump the default-group group with 2 updates 2025-06-16 19:42:47 +00:00

AspireCloud

This project is designed to function as a CDN/API endpoint system for distributing WordPress assets (themes, plugins, core) to users of the AspirePress Updater.

Setup

Quick Start

make init

Next configure WordPress to use your local version of AspireCloud, and you're good to go!

Note: you'll have to add api.aspiredev.org to your /etc/hosts file to point to 127.0.0.1.

Importing Plugins and Themes from AspireSync

  • Create a user with the RepoAdmin role (or use the built-in admin@aspirecloud.io admin user)
  • Create an API key for that user through the Jetstream UI.
  • Check out and build AspireSync
  • Set ASPIRECLOUD_ADMIN_API_URL and ASPIRECLOUD_ADMIN_API_KEY in your local environment
    • note: putting them only in .env.local will not work!
  • Run the following:
bin/console sync:meta:fetch:plugins -vvv
bin/console sync:meta:fetch:themes -vvv

bin/console sync:meta:dump:plugins | meta/bin/push-to-aspirecloud  
bin/console sync:meta:dump:themes | meta/bin/push-to-aspirecloud  

XDebug Instructions for PHPStorm

  1. Go to Settings > PHP > Debug and check "Break at first line of PHP scripts."
  2. Go to Settings > PHP > Servers and create a server with your desired hostname.
  3. Edit the docker-compose.override.yml.dist file so that the server name matches the one you entered in Step #2.
  4. Copy docker-compose.override.yml.dist to docker-compose.override.yml to include it in Docker. Then run make down up to restart Docker.
  5. Go to Run > Edit Configurations. Add a PHP Remote Debug configuration. Select your server and enter the PHPSTORM IDE key.
  6. Click the debug icon to start listening for debug connections.
  7. Refresh the page. It should stop at the first line of execution. If not, repeat the steps and use xdebug_info() to verify XDebugs activity.
  8. Once debugging works, remove the "Break at first line..." setting from Step #1 to allow the program to progress until it hits breakpoints.

Using https://api.aspiredev.org instead of localhost

The local dev instance can be reached this way by enabling a Traefik proxy server:

make traefik-up

Next, add an entry to your /etc/hosts file (C:\Windows\System32\drivers\etc\hosts on Windows).

127.0.0.1 api.aspiredev.org
::1       api.aspiredev.org

Note about SSL/TLS (https:// urls)

Because the proxy generates self-signed certs, you will get security warnings the first time you access the container after it is rebuilt. Any other access will also need to disable certificate validation.

Also note that plain old http://api.aspiredev.org always works.

Notes

AspireCloud operates as an API and a pseudo pull-through cache against WordPress.org. This means that if AspireCloud provides the requested endpoint, it attempts to deliver the resource; otherwise, it passes the request through to WordPress.org and returns their response to the end user.

The long-term goal is to gradually implement WordPress.org APIs to reduce reliance on their website and endpoints.

Important: Please do not use this project to flood or harass the WordPress.org website. We don't want to get banned from using their resources!

License

This project is licensed under the MIT License. You may exercise all rights granted by the MIT license, including using this project for commercial purposes.