├── .build └── check-broken-links.sh ├── .github ├── pull_request_template.md └── workflows │ ├── build.yml │ ├── deploy-preview.yml │ └── deploy.yml ├── .gitignore ├── .markdownlint-cli2.mjs ├── .parcelrc ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── config └── site.toml ├── content ├── api │ └── hub │ │ ├── ab_cookie_sample.md │ │ ├── ab_keyvalue_sample.md │ │ ├── ab_user_agent_sample.md │ │ ├── aggregate_json_sample.md │ │ ├── alter_response_headers_sample.md │ │ ├── architecture_cqrs_go.md │ │ ├── architecture_cqrs_rust.md │ │ ├── architecture_crud_go_sqlite.md │ │ ├── architecture_crud_js_pg.md │ │ ├── architecture_crud_js_sqlite.md │ │ ├── architecture_pub_sub.md │ │ ├── architecture_signed_webhooks.md │ │ ├── architecture_transparent_cache_rust.md │ │ ├── autocomplete_sample.md │ │ ├── bulk_redirects_sample.md │ │ ├── contributing.md │ │ ├── early_hint_sample.md │ │ ├── get_list.md │ │ ├── key_value_tutorial.md │ │ ├── library_spin_contrib_http.md │ │ ├── limit_access_sample.md │ │ ├── mysql_tutorial.md │ │ ├── object_storage_streaming_sample.md │ │ ├── pattern_aggregates.md │ │ ├── pattern_content_negotiation.md │ │ ├── pattern_cors.md │ │ ├── pattern_long_running_jobs_over_http.md │ │ ├── plugin_check_for_update.md │ │ ├── plugin_js2wasm.md │ │ ├── plugin_spin_cloud_gpu.md │ │ ├── plugin_spin_cron_trigger.md │ │ ├── plugin_spin_kinesis_trigger.md │ │ ├── plugin_spin_message_trigger.md │ │ ├── plugin_spin_otel.md │ │ ├── plugin_spin_pluginify.md │ │ ├── plugin_spinlet.md │ │ ├── plugin_sqs_trigger.md │ │ ├── read_post_sample.md │ │ ├── relational_db_tutorial.md │ │ ├── respond_with_other_site_sample.md │ │ ├── sample_11ty.md │ │ ├── sample_bookmarker.md │ │ ├── sample_bts_golang.md │ │ ├── sample_checklist.md │ │ ├── sample_code_pls.md │ │ ├── sample_coffee_shop_in_dapr_k3d.md │ │ ├── sample_crossword_helper.md │ │ ├── sample_dioxus.md │ │ ├── sample_embedding_component.md │ │ ├── sample_feed_dog.md │ │ ├── sample_http_auth_middleware.md │ │ ├── sample_hugo.md │ │ ├── sample_jinja2.md │ │ ├── sample_kv_in_python.md │ │ ├── sample_kv_in_typescript.md │ │ ├── sample_like_button.md │ │ ├── sample_load_testing_spin_apps_with_k6.md │ │ ├── sample_newsreader_ai.md │ │ ├── sample_ollama.md │ │ ├── sample_openaichat_ts.md │ │ ├── sample_redirect.md │ │ ├── sample_release_bot_golang.md │ │ ├── sample_router.md │ │ ├── sample_sentiment_analysis.md │ │ ├── sample_silly_walk_ai.md │ │ ├── sample_spin_wordle.md │ │ ├── sample_tera.md │ │ ├── sample_tests_dashboard_golang.md │ │ ├── sample_todo.md │ │ ├── sample_ts_router_post.md │ │ ├── sample_view_counter.md │ │ ├── supabase_proxy_tutorial.md │ │ ├── template_angular.md │ │ ├── template_docusaurus.md │ │ ├── template_http_empty.md │ │ ├── template_http_go.md │ │ ├── template_http_js.md │ │ ├── template_http_python.md │ │ ├── template_http_rust.md │ │ ├── template_http_ts.md │ │ ├── template_jekyll.md │ │ ├── template_kv_explorer.md │ │ ├── template_nextjs.md │ │ ├── template_nuxt.md │ │ ├── template_qwik_frontend.md │ │ ├── template_redis_go.md │ │ ├── template_redis_rust.md │ │ ├── template_spin_fileserver.md │ │ ├── template_sqlite_explorer.md │ │ └── template_zola_ssg.md ├── bartholomew │ ├── configuration.md │ ├── contributing-bartholomew.md │ ├── contributing-docs.md │ ├── index.md │ ├── markdown.md │ ├── quickstart.md │ ├── scripting.md │ ├── seo.md │ ├── shortcodes.md │ ├── templates.md │ └── themes.md ├── cloud │ ├── changelog.md │ ├── changelog │ │ ├── cloud-config.md │ │ ├── cloud-custom-domains.md │ │ ├── cloud-key-value.md │ │ ├── cloud-noops-sql-db.md │ │ ├── custom-fermyon-subdomain.md │ │ ├── gh-actions-spin-deploy.md │ │ ├── request-metrics-in-cloud.md │ │ ├── serverless-ai-open-beta.md │ │ ├── serverless-ai.md │ │ ├── spin-cloud-v0-4-0.md │ │ ├── spin-cloud-v0-5-0.md │ │ ├── spin-cloud-v0-5-1.md │ │ └── spin-cloud-v0-7-0.md │ ├── cloud-command-reference.md │ ├── contributing-docs.md │ ├── custom-domain.md │ ├── custom-domains-tutorial.md │ ├── custom-fermyon-subdomain.md │ ├── data-postgres.md │ ├── data-redis.md │ ├── delete.md │ ├── deploy.md │ ├── deployment-concepts.md │ ├── develop.md │ ├── faq.md │ ├── fermyon-cloud.md │ ├── github-actions.md │ ├── index.md │ ├── kv-cloud-tutorial.md │ ├── linking-applications-to-resources-using-labels.md │ ├── noops-sql-db.md │ ├── pricing-and-billing.md │ ├── quickstart.md │ ├── rest-api.md │ ├── support.md │ ├── upgrade.md │ ├── user-settings.md │ └── variables.md ├── common │ └── contributing-docs.md ├── events │ ├── 2024-kubecon-cloudbrew.md │ ├── 2025-cloud-rejekts.md │ ├── 2025-google-cloud-next.md │ ├── 2025-kubecon-eu-25.md │ ├── 2025-nab-show.md │ └── 2025-wasmio-barcelona.md ├── googleea373cbb8f1dde18.md ├── index.md ├── robots.md ├── sitemap.md ├── wasm-functions │ ├── aka-command-reference.md │ ├── app-linking.md │ ├── changelog.md │ ├── changelog │ │ └── changelog-aka-plugin-v04.md │ ├── contributing-docs.md │ ├── delete.md │ ├── deploy.md │ ├── faq.md │ ├── get-logs.md │ ├── github-actions.md │ ├── index.md │ ├── jwt-scenario.md │ ├── list-and-inspect.md │ ├── old-api-orchestration.md │ ├── old-data-redis.md │ ├── old-deployment-concepts.md │ ├── old-develop.md │ ├── pricing-and-billing.md │ ├── property-manager-integration.md │ ├── querying-linode-mysql.md │ ├── querying-postgresql.md │ ├── quickstart.md │ ├── stream-data-from-linode-object-store.md │ ├── supabase-cache-proxy.md │ ├── support.md │ ├── upgrade.md │ ├── using-cron-jobs.md │ └── using-key-value-store.md └── wasm-languages │ ├── CONTRIBUTING.md │ ├── about-examples.md │ ├── assemblyscript.md │ ├── c-lang.md │ ├── c-sharp.md │ ├── clojure.md │ ├── cobol.md │ ├── cpp.md │ ├── dart.md │ ├── erlang-beam.md │ ├── go-lang.md │ ├── grain.md │ ├── haskell.md │ ├── index.md │ ├── java.md │ ├── javascript.md │ ├── kotlin.md │ ├── lisp.md │ ├── lua.md │ ├── motoko.md │ ├── objective-c.md │ ├── perl.md │ ├── php.md │ ├── powershell.md │ ├── prolog.md │ ├── python.md │ ├── r-lang.md │ ├── ruby.md │ ├── rust.md │ ├── scala.md │ ├── shell.md │ ├── standards.md │ ├── swift.md │ ├── tpl.md │ ├── typescript.md │ ├── webassembly-language-support.md │ └── zig.md ├── deploy ├── README.md └── fermyon-developer.nomad ├── dist ├── main.js └── main.js.map ├── downloads ├── fwf_install.sh └── install.sh ├── hub_index_generator.mjs ├── md_parser.mjs ├── modules ├── bartholomew.wasm ├── redirect.wasm └── spin_static_fs.wasm ├── package-lock.json ├── package.json ├── scripts ├── active_content.rhai ├── active_project.rhai ├── cloud.rhai ├── content_filter.rhai ├── events.rhai ├── replace.rhai ├── sitemap.rhai ├── timed_publish.rhai └── truncate_post.rhai ├── shortcodes ├── alert.rhai ├── blockEnd.rhai ├── card_element.rhai ├── details.rhai ├── startTab.rhai ├── suh_cards.rhai └── tabs.rhai ├── spin-up-hub ├── .env.development ├── .env.production ├── README.md ├── index.html ├── package-lock.json ├── package.json ├── public │ ├── image │ │ ├── avatar.png │ │ └── spin-vector.png │ ├── static │ │ └── image │ │ │ ├── deploy-to-cloud.svg │ │ │ ├── gradient-blue-dark.jpg │ │ │ ├── gradient-blue-green.jpg │ │ │ ├── gradient-green-dark.jpg │ │ │ ├── gradient-pink-blue.jpg │ │ │ ├── gradient-pink-purple.jpg │ │ │ ├── gradient-purple-dark.jpg │ │ │ ├── icon-back-copy.svg │ │ │ ├── icon-back.svg │ │ │ ├── icon-close.svg │ │ │ ├── icon-code.svg │ │ │ ├── icon-external.svg │ │ │ ├── icon-github.svg │ │ │ ├── icon-search-dark.svg │ │ │ ├── icon-search.svg │ │ │ ├── icon │ │ │ ├── deploy-to-cloud-icon.svg │ │ │ └── favicon.png │ │ │ ├── logo-badge.png │ │ │ ├── spin.svg │ │ │ ├── to-cloud.png │ │ │ ├── to-kubernetes.png │ │ │ ├── to-terminal.png │ │ │ ├── to-ui.png │ │ │ └── wasm.png │ └── vite.svg ├── src │ ├── App.vue │ ├── components │ │ ├── Card.vue │ │ ├── ContentFilter.vue │ │ ├── ContentListing.vue │ │ ├── ContentSpace.vue │ │ ├── DeployPreview.vue │ │ ├── FermyonCloudModal.vue │ │ ├── HubIntro.vue │ │ └── PreviewModal.vue │ ├── main.js │ ├── router.js │ ├── store.js │ └── view │ │ ├── Contributing.vue │ │ └── Home.vue └── vite.config.js ├── spin.toml ├── static ├── css │ ├── arrow-right.b9889f0e.png │ ├── arrowexternal-dark.ac3a9a36.svg │ ├── arrowexternal-dark.bf51616e.svg │ ├── arrowexternal-dark.da7f65db.svg │ ├── arrowexternal.23a23f5d.svg │ ├── arrowexternal.2e79a5e6.svg │ ├── arrowexternal.aa97a7b7.svg │ ├── avatar.5fada8f8.png │ ├── avatar.63e1d6e5.png │ ├── avatar.a979e1d6.png │ ├── cncf.aeacfafb.svg │ ├── discord-banner.59f2afdb.jpg │ ├── grid-dark.83123bac.png │ ├── grid.74907336.png │ ├── search-white.1eb5f902.svg │ ├── search-white.8e5bc66c.svg │ ├── search-white.e7b007cd.svg │ ├── search.2af741de.svg │ ├── search.7b5b262e.svg │ ├── search.b7fb4c6a.svg │ ├── styles.css │ ├── styles.js │ ├── styles.js.map │ ├── wasm-lang-card-dark.48999352.png │ └── wasm-lang-card.a3744d5d.png ├── image │ ├── akamai-property-behaviors.png │ ├── akamai-property-match-criteria.png │ ├── akamai-property-new-rule.png │ ├── app-panel-view-w-edit-subdomain-button.png │ ├── apps.png │ ├── arrow-right.png │ ├── arrowexternal-dark.svg │ ├── arrowexternal.svg │ ├── avatar.png │ ├── bartholomew-screenshot.png │ ├── changelog │ │ ├── fermyon-severless-ai-twitter-card.jpg │ │ ├── metrics-request-count.gif │ │ ├── spin-cloud-0.4.0.jpg │ │ ├── spin-cloud-0.5.0.jpg │ │ ├── spin-cloud-0.7.0.jpg │ │ ├── spin-gh-actions.png │ │ ├── twc-custom-subdomains-in-cloud.jpg │ │ └── twc-introducing-fermyon-cloud-key-value-store.jpeg │ ├── clone_developer_repo.png │ ├── cloud-dash-w-quickstart-app.png │ ├── cloud-dashboard.png │ ├── cloud-video.png │ ├── cncf.svg │ ├── community-dodeploy.svg │ ├── community-hashitalk.svg │ ├── community-qanda.svg │ ├── compare_and_pull_request.png │ ├── create-token-confirmation.png │ ├── create-token.png │ ├── custom-domains │ │ ├── Step-1.png │ │ ├── Step-2.png │ │ ├── Step-3.png │ │ ├── Step-4.1.png │ │ ├── Step-4.png │ │ ├── Step-5.png │ │ └── app-panel-view.png │ ├── custom-subdomain-app-panel-view.png │ ├── custom-subdomain-panel-original.png │ ├── custom-subdomain-panel-renamed.png │ ├── dashboard.png │ ├── delete-account-confirmation.png │ ├── delete-account-view.png │ ├── delete-app.png │ ├── delete-token-confirmation-2.png │ ├── delete-token-confirmation.png │ ├── delete.png │ ├── devx-workflow-fermyon-on-akamai.png │ ├── discord-banner.jpg │ ├── docs │ │ ├── bart-new-post.png │ │ ├── clone-bartholomew.png │ │ ├── cloud-develop-example-2.png │ │ ├── cloud-develop-example.png │ │ ├── fork-bartholomew.png │ │ ├── merged.png │ │ ├── pull-request-I.png │ │ ├── sentiment-analysis-ui-blank.png │ │ ├── sentiment-analysis-ui-positive.png │ │ └── use-template.png │ ├── drawer.png │ ├── edit-on-github.png │ ├── env-explorer_1.png │ ├── env-explorer_2.png │ ├── events │ │ ├── developerweek.jpg │ │ ├── kubeconeu.png │ │ └── wasm-io.jpg │ ├── favicon.png │ ├── fermyon-badge.png │ ├── fermyon-wasm-functions.svg │ ├── fermyon.png │ ├── fermyon.svg │ ├── fork_developer_repo.png │ ├── fwf-banner.png │ ├── fwf-marketechture-sm.png │ ├── github-action-app-deployed-gh.png │ ├── github-action-app-deployed.png │ ├── github-reg-secret-success.png │ ├── global-key-value-store.png │ ├── grid-dark.png │ ├── grid.png │ ├── homing.png │ ├── icon-cloud.png │ ├── icon-fp4k.png │ ├── icon-functions.png │ ├── icon-spin.png │ ├── icon-spinkube.png │ ├── icon │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon.png │ │ ├── browserconfig.xml │ │ ├── deploy-to-cloud.svg │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon.ico │ │ ├── favicon.png │ │ ├── icon-github.svg │ │ ├── mstile-150x150.png │ │ ├── safari-pinned-tab.svg │ │ └── site.webmanifest │ ├── jaeger-traces.png │ ├── kubecon.png │ ├── labels-diagram.png │ ├── light.svg │ ├── linode-mysql-sample-data.png │ ├── linode-mysql-server-settings.png │ ├── linode-mysql-server-summary.png │ ├── login.png │ ├── logo-badge.png │ ├── logo-badge.svg │ ├── logo.svg │ ├── neon-create-project.png │ ├── neon-verify-database.png │ ├── no-copy-source-code-example.png │ ├── product-cloud.png │ ├── product-platformk8s.png │ ├── product-spin.png │ ├── product-spinkube.png │ ├── project-left-bart-dark.png │ ├── project-left-bart-light.png │ ├── project-left-cloud-dark.png │ ├── project-left-cloud-light.png │ ├── project-left-spin-dark.png │ ├── project-left-spin-light.png │ ├── project-left-spinkube-dark.png │ ├── project-left-spinkube-light.png │ ├── project-left-wasm-dark.png │ ├── project-left-wasm-light.png │ ├── quickstart-custom-subdomain.png │ ├── rich-results-01.png │ ├── rich-results-02.png │ ├── screenshot.png │ ├── search-white.svg │ ├── search.svg │ ├── sidecar_git.png │ ├── sidecar_result.png │ ├── stream-data-from-linode-object-store.png │ ├── supabase-connection-information.png │ ├── supabase-create-table.png │ ├── supabase-enable-db-webhooks.png │ ├── supabase-project-setup.png │ ├── thumbs-down.svg │ ├── thumbs-up.svg │ ├── twc-custom-subdomains-in-cloud.jpg │ ├── twc-fermyon-wasm-functions.jpg │ ├── twc-open-beta-serverlesss-ai.jpg │ ├── twitter_card_summary.png │ ├── twitter_card_website.png │ ├── user-setting-view.png │ ├── user-setting.png │ ├── user-settings-with-token.png │ ├── wasm-lang-card-dark.png │ └── wasm-lang-card.png ├── js │ ├── flickity.min.js │ ├── headroom.min.js │ ├── highlight.min.js │ ├── lunr.min.js │ ├── main.js │ ├── redom.min.js │ └── src │ │ ├── main.js │ │ └── modules │ │ ├── feedback.js │ │ ├── multiTab.js │ │ ├── search.js │ │ └── utils.js └── sass │ ├── developer-color-dark.scss │ ├── developer-color-light.scss │ ├── developer-color.scss │ ├── developer-content-home.scss │ ├── developer-include-feedback.scss │ ├── developer-include-footer.scss │ ├── developer-include-search.scss │ ├── developer-include-sidebar.scss │ ├── developer-include-topbar.scss │ ├── developer-responsive.scss │ ├── example-card.scss │ └── styles.scss └── templates ├── 404.hbs ├── bartholomew_main.hbs ├── bartholomew_sidebar.hbs ├── changelog.hbs ├── changelog_fwf.hbs ├── changelog_fwf_item.hbs ├── changelog_item.hbs ├── cloud_main.hbs ├── cloud_sidebar.hbs ├── common_main.hbs ├── common_sidebar.hbs ├── content_bottom.hbs ├── content_footer.hbs ├── content_navbar.hbs ├── content_top.hbs ├── doc_feedback.hbs ├── functions_home.hbs ├── functions_main.hbs ├── functions_sidebar.hbs ├── google_verification.hbs ├── home.hbs ├── hub_list_api.hbs ├── main.hbs ├── page.hbs ├── page_lang.hbs ├── render_hub_content_body.hbs ├── robots.hbs └── sitemap.hbs /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | Content must go through a pre-merge checklist. 2 | 3 | ## Pre-Merge Content Checklist 4 | 5 | This documentation has been checked to ensure that: 6 | 7 | - [ ] The `title`, `template`, and `date` are all set 8 | - [ ] Does this PR have a new menu item (anywhere in `templates/*.hbs` files) that points to a document `.md` that is set to publish in the future? If so please only publish the `.md` and `.hbs` changes in real-time (otherwise there will be a menu item pointing to a `.md` file that does not exist) 9 | - [ ] File does not use CRLF, but uses plain LF (hint: use `cat -ve | grep $'\r' | wc -l` and expect 0 as a result) 10 | - [ ] Has passed [`bart check`](https://developer.fermyon.com/bartholomew/quickstart) 11 | - [ ] Has been manually tested by running in Spin/Bartholomew (hint: use `PREVIEW_MODE=1` and run `npm run styles` to update styling) 12 | - [ ] Headings are using Title Case 13 | - [ ] Code blocks have the programming language set to properly highlight syntax and the proper copy directive 14 | - [ ] Have tested with `npm run test` and resolved all errors 15 | - [ ] Relates to an existing (potentially outdated) blog article? If so please add URL in blog to point to this content. 16 | -------------------------------------------------------------------------------- /.github/workflows/deploy-preview.yml: -------------------------------------------------------------------------------- 1 | name: deploy docs preview 2 | on: 3 | pull_request: 4 | branches: "main" 5 | types: ['opened', 'synchronize', 'reopened', 'closed'] 6 | 7 | jobs: 8 | deploy-preview: 9 | runs-on: ubuntu-latest 10 | if: ${{ !github.event.pull_request.head.repo.fork }} 11 | name: Build and deploy 12 | steps: 13 | - uses: actions/checkout@v3 14 | 15 | - name: Setup `spin` 16 | uses: fermyon/actions/spin/setup@v1 17 | with: 18 | github_token: ${{ secrets.GITHUB_TOKEN }} 19 | 20 | - name: Install npm packages 21 | run: | 22 | npm ci 23 | npm ci --prefix ./spin-up-hub 24 | 25 | - name: Build app 26 | run: | 27 | spin build 28 | 29 | - name: build and deploy preview 30 | uses: fermyon/actions/spin/preview@v1 31 | with: 32 | fermyon_token: ${{ secrets.FERMYON_CLOUD_TOKEN }} 33 | github_token: ${{ secrets.GITHUB_TOKEN }} 34 | undeploy: ${{ github.event.pull_request && github.event.action == 'closed' }} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignoring node modules and parcel cache 2 | .parcel-cache 3 | node_modules 4 | .vscode 5 | .DS_Store 6 | *.css.map 7 | broken_links 8 | final_broken 9 | .spin 10 | # The search index is generated at time of deploy 11 | static/data.json 12 | static/hub-index-data.json 13 | # The build version of spin up hub 14 | spin-up-hub/dist/ 15 | -------------------------------------------------------------------------------- /.markdownlint-cli2.mjs: -------------------------------------------------------------------------------- 1 | const options = { 2 | "config": { 3 | "default": false, 4 | "extends": null, 5 | // Headings can increment by only one step (h1 -> h2) and not (h1 -> h3) 6 | "heading-increment": true, 7 | // Multiple blank lines will throw an error 8 | "no-multiple-blanks": true, 9 | // Headings should be surrounded by new lines 10 | "blanks-around-headings": true, 11 | // Headings always start on new lines 12 | "heading-start-left": true, 13 | // Code blocks must have an empty line above and below them 14 | "blanks-around-fences": true, 15 | // There can not be empty spaces in links 16 | "no-space-in-links": true, 17 | // Links must always contain url or "#" 18 | "no-empty-links": true, 19 | // Images must contain alt texts 20 | "no-alt-text": true, 21 | // Enforce consistent style for code blocks 22 | "code-block-style": { 23 | "style": "fenced" 24 | }, 25 | // Enforce consistent fence style for code blocks 26 | "code-fence-style": { 27 | "style": "backtick" 28 | }, 29 | "titlecase-rule": true 30 | }, 31 | "customRules": ["markdownlint-rule-titlecase"] 32 | } 33 | 34 | export default options; -------------------------------------------------------------------------------- /.parcelrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@parcel/config-default", 3 | "optimizers": { 4 | "*.{jpg,jpeg,png}": [] 5 | } 6 | } -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | This project subscribes to the Fermyon [Code of Conduct](https://www.fermyon.com/code-of-conduct). -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # The Fermyon developer website 2 | 3 | Prerequisites to run the website locally: 4 | 5 | - [npm and node](https://docs.npmjs.com/cli/v8/configuring-npm/install) 6 | - [Spin](https://spinframework.dev/quickstart) 7 | 8 | Build and run the website locally: 9 | 10 | 1. Run the following commands: 11 | 12 | ```bash 13 | cd spin-up-hub 14 | npm ci 15 | cd ../ 16 | npm ci 17 | spin build 18 | spin watch # Uses spin watch to run the website and reload when content changes. 19 | ``` 20 | 21 | 2. View the website at `http://localhost:3000`. 22 | 23 | If you would like to edit the contents of the [developer.fermyon.com](https://developer.fermyon.com/) website and contribute your changes, please visit the [Contributing to Docs](https://developer.fermyon.com/common/contributing-docs) page. -------------------------------------------------------------------------------- /config/site.toml: -------------------------------------------------------------------------------- 1 | title = "Fermyon Developer" 2 | base_url = "" 3 | about = "Fermyon Developer — the home for you as a developer using Fermyon projects and products." 4 | index_site_pages = [ 5 | "sitemap", 6 | "home", 7 | "changelog", 8 | "changelog_fwf", 9 | "hub_list_api", 10 | ] 11 | prepend_route_info = true 12 | 13 | [extra] 14 | copyright = "Fermyon" 15 | github = "https://github.com/fermyon/developer" 16 | twitter = "https://twitter.com/fermyontech" 17 | 18 | # Static assets that we need to provide 19 | favicon = "/static/image/icon/favicon.png" 20 | twitter_card_type = "summary" 21 | twitter_card = "/static/image/twitter_card_summary.png" 22 | -------------------------------------------------------------------------------- /content/api/hub/ab_cookie_sample.md: -------------------------------------------------------------------------------- 1 | title = "Cookie based A/B Testing" 2 | template = "render_hub_content_body" 3 | date = "2025-01-24T00:00:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "Rust"] 6 | 7 | [extra] 8 | author = "Thorsten Hans" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Rust" 12 | created_at = "2025-01-21T13:50:00Z" 13 | last_updated = "2025-01-21T13:50:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "A Spin application showcasing how to implement A/B testing based on a cookie." 16 | url = "https://github.com/fermyon/fwf-examples/tree/main/samples/ab-testing-cookie" 17 | keywords = "Rust, HTTP" 18 | 19 | --- 20 | 21 | This sample application shows how you can use a Spin application to implement A/B testing based on a cookie. 22 | 23 | ## Prerequisites 24 | 25 | You need the following tools on your machine, to build, run and deploy the application to _Fermyon Wasm Functions_: 26 | 27 | - The `spin` CLI 28 | - Rust tools and the `wasm32-wasip1` target 29 | - The `aka` plugin for `spin` CLI 30 | - Access to _Fermyon Wasm Functions_ 31 | -------------------------------------------------------------------------------- /content/api/hub/ab_keyvalue_sample.md: -------------------------------------------------------------------------------- 1 | title = "KeyValue based A/B Testing" 2 | template = "render_hub_content_body" 3 | date = "2025-01-24T00:00:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "Rust", "key value"] 6 | 7 | [extra] 8 | author = "Thorsten Hans" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Rust" 12 | created_at = "2025-01-21T13:50:00Z" 13 | last_updated = "2025-01-21T13:50:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "A Spin application showcasing how to implement A/B testing based on data in a Key Value store." 16 | url = "https://github.com/fermyon/fwf-examples/tree/main/samples/ab-testing-kv" 17 | keywords = "Rust, HTTP, Key Value" 18 | 19 | --- 20 | 21 | This sample application shows how you can use a Spin application to implement A/B testing based on a cookie. 22 | 23 | ## Prerequisites 24 | 25 | You need the following tools on your machine, to build, run and deploy the application to _Fermyon Wasm Functions_: 26 | 27 | - The `spin` CLI 28 | - Rust tools and the `wasm32-wasip1` target 29 | - The `aka` plugin for `spin` CLI 30 | - Access to _Fermyon Wasm Functions_ 31 | -------------------------------------------------------------------------------- /content/api/hub/ab_user_agent_sample.md: -------------------------------------------------------------------------------- 1 | title = "User Agent based A/B Testing" 2 | template = "render_hub_content_body" 3 | date = "2025-01-24T00:00:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "Rust"] 6 | 7 | [extra] 8 | author = "Thorsten Hans" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Rust" 12 | created_at = "2025-01-21T13:50:00Z" 13 | last_updated = "2025-01-21T13:50:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "A Spin application showcasing how to implement A/B testing based on the user agent." 16 | url = "https://github.com/fermyon/fwf-examples/tree/main/samples/ab-testing-user-agent" 17 | keywords = "Rust, HTTP" 18 | 19 | --- 20 | 21 | This sample application shows how you can use a Spin application to implement A/B testing based on a cookie. 22 | 23 | ## Prerequisites 24 | 25 | You need the following tools on your machine, to build, run and deploy the application to _Fermyon Wasm Functions_: 26 | 27 | - The `spin` CLI 28 | - Rust tools and the `wasm32-wasip1` target 29 | - The `aka` plugin for `spin` CLI 30 | - Access to _Fermyon Wasm Functions_ 31 | -------------------------------------------------------------------------------- /content/api/hub/aggregate_json_sample.md: -------------------------------------------------------------------------------- 1 | title = "Aggregate JSON" 2 | template = "render_hub_content_body" 3 | date = "2025-01-20T00:00:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "typescript"] 6 | 7 | [extra] 8 | author = "Fermyon" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2025-01-20T00:00:00Z" 13 | last_updated = "2025-01-20T00:00:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "Shows how to make concurrent outgoing requests and aggregate the responses." 16 | url = "https://github.com/fermyon/fwf-examples/tree/main/samples/aggregate-json" 17 | keywords = "TypeScript, HTTP" 18 | 19 | --- 20 | 21 | This sample shows how to make concurrent outgoing HTTP requests and combine the results. 22 | 23 | ## Prerequisites 24 | 25 | You need the following tools on your machine, to build, run and deploy the application to _Fermyon Wasm Functions_: 26 | 27 | - The `spin` CLI 28 | - A recent version of `npm` 29 | - The `aka` plugin for `spin` CLI 30 | - Access to _Fermyon Wasm Functions_ 31 | -------------------------------------------------------------------------------- /content/api/hub/alter_response_headers_sample.md: -------------------------------------------------------------------------------- 1 | title = "Altering Response Headers" 2 | template = "render_hub_content_body" 3 | date = "2025-01-20T00:00:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "typescript"] 6 | 7 | [extra] 8 | author = "Fermyon" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2025-01-20T00:00:00Z" 13 | last_updated = "2025-01-20T00:00:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "Shows how to alter response headers." 16 | url = "https://github.com/fermyon/fwf-examples/tree/main/samples/alter-headers" 17 | keywords = "TypeScript, HTTP" 18 | 19 | --- 20 | 21 | This sample application shows how to alter the headers as you stream a response from an origin 22 | server back to a client. 23 | 24 | ## Prerequisites 25 | 26 | You need the following tools on your machine, to build, run and deploy the application to _Fermyon Wasm Functions_: 27 | 28 | - The `spin` CLI 29 | - A recent version of `npm` 30 | - The `aka` plugin for `spin` CLI 31 | - Access to _Fermyon Wasm Functions_ 32 | -------------------------------------------------------------------------------- /content/api/hub/architecture_crud_go_sqlite.md: -------------------------------------------------------------------------------- 1 | title = "CRUD APIs With Go and SQLite" 2 | template = "render_hub_content_body" 3 | date = "2024-04-03T13:50:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "Go", "architecture"] 6 | 7 | [extra] 8 | author = "Thorsten Hans" 9 | type = "hub_document" 10 | category = "Architecture" 11 | language = "Go" 12 | created_at = "2024-04-03T13:50:00Z" 13 | last_updated = "2024-04-03T13:50:00Z" 14 | spin_version = ">=v2.4.0" 15 | summary = "A full-fledged CRUD API with SQLite backend written in Go" 16 | url = "https://github.com/fermyon/enterprise-architectures-and-patterns/tree/main/http-crud-go-sqlite" 17 | keywords = "Architecture, HTTP, CRUD" 18 | 19 | --- 20 | 21 | This is a sample implementation of CRUD (Create, Read, Update, Delete) in Go. The sample is using SQLite for persistence and provides the following API endpoints via HTTP: 22 | 23 | - `GET /items` - To retrieve a list of all items 24 | - `GET /items/:id` - To retrieve a item using its identifier 25 | - `POST /items` - To create a new item 26 | - `PUT /items/:id` - To update an existing item using its identifier 27 | - `DELETE /items` - To delete multiple items providing an array of identifiers as payload (`{ "ids": []}`) 28 | - `DELETE /items/:id` - To delete an existing item using its identifier 29 | 30 | Send data to `POST /items` and `PUT /items/:id` using the following structure: 31 | 32 | ```jsonc 33 | { 34 | "name": "item name", 35 | // boolean (either true or false) 36 | "active": true 37 | } 38 | ``` -------------------------------------------------------------------------------- /content/api/hub/architecture_transparent_cache_rust.md: -------------------------------------------------------------------------------- 1 | title = "Transparent Cache with Rust" 2 | template = "render_hub_content_body" 3 | date = "2024-04-03T13:50:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "key-value", "rust", "architecture"] 6 | 7 | [extra] 8 | author = "Thorsten Hans" 9 | type = "hub_document" 10 | category = "Architecture" 11 | language = "Rust" 12 | created_at = "2024-04-03T13:50:00Z" 13 | last_updated = "2024-04-03T13:50:00Z" 14 | spin_version = ">=v2.4.0" 15 | summary = "A transparent cache implementation using key-value store" 16 | url = "https://github.com/fermyon/enterprise-architectures-and-patterns/tree/main/caching-rust" 17 | keywords = "Architecture, HTTP" 18 | 19 | --- 20 | 21 | This example illustrates how to implement caching when building HTTP APIs. 22 | 23 | ### What Is a Transparent Cache 24 | 25 | A transparent cache is a caching mechanism that operates without the explicit involvement or awareness of the end user or client application. In other words, users interacting with a system are unaware that caching is taking place behind the scenes. From the perspective of the user or client application, the caching process is invisible and does not impact the functionality or behavior of the system. Transparent caching is commonly employed in systems where performance optimization is crucial, such as web applications or content delivery networks (CDNs), to reduce latency and server load without affecting user experience. 26 | -------------------------------------------------------------------------------- /content/api/hub/autocomplete_sample.md: -------------------------------------------------------------------------------- 1 | title = "Autocomplete API" 2 | template = "render_hub_content_body" 3 | date = "2025-01-24T00:00:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "Rust"] 6 | 7 | [extra] 8 | author = "Thorsten Hans" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Rust" 12 | created_at = "2025-01-21T13:50:00Z" 13 | last_updated = "2025-01-21T13:50:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "Implement an autocomplete API using Spin and Rust." 16 | url = "https://github.com/fermyon/fwf-examples/tree/main/samples/auto-complete/autocomplete" 17 | keywords = "Rust, HTTP" 18 | 19 | --- 20 | 21 | This sample application shows how you can use a Spin application to implement an autocomplete API. 22 | 23 | ## Prerequisites 24 | 25 | You need the following tools on your machine, to build, run and deploy the application to _Fermyon Wasm Functions_: 26 | 27 | - The `spin` CLI 28 | - Rust tools and the `wasm32-wasip1` target 29 | - The `aka` plugin for `spin` CLI 30 | - Access to _Fermyon Wasm Functions_ 31 | -------------------------------------------------------------------------------- /content/api/hub/bulk_redirects_sample.md: -------------------------------------------------------------------------------- 1 | title = "Bulk Redirects" 2 | template = "render_hub_content_body" 3 | date = "2025-01-20T00:00:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "typescript"] 6 | 7 | [extra] 8 | author = "Fermyon" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2025-01-20T00:00:00Z" 13 | last_updated = "2025-01-20T00:00:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "Shows how to redirect requests." 16 | url = "https://github.com/fermyon/fwf-examples/tree/main/samples/bulk-redirects" 17 | keywords = "TypeScript, HTTP" 18 | 19 | --- 20 | 21 | This application shows how you can bulk-redirect requests using a JavaScript object to map inbound routes 22 | to their new locations. 23 | 24 | ## Prerequisites 25 | 26 | You need the following tools on your machine, to build, run and deploy the application to _Fermyon Wasm Functions_: 27 | 28 | - The `spin` CLI 29 | - A recent version of `npm` 30 | - The `aka` plugin for `spin` CLI 31 | - Access to _Fermyon Wasm Functions_ 32 | -------------------------------------------------------------------------------- /content/api/hub/early_hint_sample.md: -------------------------------------------------------------------------------- 1 | title = "HarperDB and 103 Early Hints in Rust" 2 | template = "render_hub_content_body" 3 | date = "2025-01-29T00:00:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "Rust"] 6 | 7 | [extra] 8 | author = "Radu Matei" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Rust" 12 | created_at = "2025-01-29T13:50:00Z" 13 | last_updated = "2025-01-29T13:50:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "This sample showcases using using Fermyon Wasm Functions to query HarperDB for early hints." 16 | url = "https://github.com/fermyon/fwf-examples/tree/main/samples/early-hints-rust" 17 | keywords = "Rust, HTTP" 18 | 19 | --- 20 | 21 | This sample showcases using using Fermyon Wasm Functions to query HarperDB for early hints. 22 | 23 | ## Prerequisites 24 | 25 | You need the following tools on your machine, to build, run and deploy the application to _Fermyon Wasm Functions_: 26 | 27 | - The `spin` CLI 28 | - Rust tools and the `wasm32-wasip1` target 29 | - The `aka` plugin for `spin` CLI 30 | - Access to _Fermyon Wasm Functions_ 31 | - Access to a HarperDB instance 32 | -------------------------------------------------------------------------------- /content/api/hub/get_list.md: -------------------------------------------------------------------------------- 1 | title = "hub_list_api" 2 | template = "hub_list_api" 3 | date = "2022-10-15T00:22:56Z" 4 | content_type = "application/json" 5 | 6 | [extra] 7 | type = "get_list" 8 | 9 | --- 10 | -------------------------------------------------------------------------------- /content/api/hub/key_value_tutorial.md: -------------------------------------------------------------------------------- 1 | title = "Tutorial: Using the Key Value Store" 2 | template = "render_hub_content_body" 3 | date = "2025-01-21T13:50:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "Javascript", "key value"] 6 | 7 | [extra] 8 | author = "Thorsten Hans" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2025-01-21T13:50:00Z" 13 | last_updated = "2025-01-21T13:50:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "The sample application written as part of the Using the Key Value Store tutorial." 16 | url = "https://github.com/fermyon/enterprise-architectures-and-patterns/tree/main/cqrs-rust" 17 | keywords = "Javascript, HTTP, Key Value" 18 | 19 | --- 20 | 21 | This sample application was written as part of the [Using the Key Value Store](https://wasm-functions.fermyon.app/wasm-functions/using-key-value-store) tutorial. It showcases how to use the Spin Key-Value store from a Javascript-based Spin application, and guides you on installing it to Fermyon Wasm Functions on Akamai. 22 | 23 | ## Prerequisites 24 | 25 | You need the following tools on your machine, to build, run and deploy the application to _Fermyon Wasm Functions_: 26 | 27 | - The `spin` CLI 28 | - Node.js (Version `20` or later) 29 | - The `aka` plugin for `spin` CLI 30 | - Access to _Fermyon Wasm Functions_ 31 | -------------------------------------------------------------------------------- /content/api/hub/library_spin_contrib_http.md: -------------------------------------------------------------------------------- 1 | title = "Spin Contrib HTTP" 2 | template = "render_hub_content_body" 3 | date = "2022-10-15T00:22:56Z" 4 | content-type = "text/plain" 5 | tags = ["http", "rust"] 6 | 7 | [extra] 8 | author = "Thorsten Hans" 9 | type = "hub_document" 10 | category = "Library" 11 | language = "Rust" 12 | created_at = "2022-10-15T00:22:56Z" 13 | last_updated = "2022-10-15T00:22:56Z" 14 | spin_version = ">v1.4" 15 | summary = "This crate contains a bunch of helpers to build HTTP-based applications with Spin." 16 | url = "https://github.com/ThorstenHans/spin-contrib-http" 17 | keywords = "http helpers, rust" 18 | 19 | --- 20 | 21 | ### Spin Contrib HTTP 22 | 23 | This is a library created by Thorsten Hans which contains helpers to build HTTP-based applications with Spin. 24 | 25 | -------------------------------------------------------------------------------- /content/api/hub/limit_access_sample.md: -------------------------------------------------------------------------------- 1 | title = "Limit Access" 2 | template = "render_hub_content_body" 3 | date = "2025-01-20T00:00:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "typescript"] 6 | 7 | [extra] 8 | author = "Fermyon" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2025-01-20T00:00:00Z" 13 | last_updated = "2025-01-20T00:00:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "Shows how to limit access to an origin server." 16 | url = "https://github.com/fermyon/fwf-examples/tree/main/samples/limit-access" 17 | keywords = "TypeScript, HTTP" 18 | 19 | --- 20 | 21 | This sample application shows how to limit access to a given origin until a configuration point in time. 22 | Before that point in time, the Spin application responds to all requests with a configurable status code; 23 | after it, the Spin application acts as a transparent proxy. 24 | 25 | ## Prerequisites 26 | 27 | You need the following tools on your machine, to build, run and deploy the application to _Fermyon Wasm Functions_: 28 | 29 | - The `spin` CLI 30 | - A recent version of `npm` 31 | - The `aka` plugin for `spin` CLI 32 | - Access to _Fermyon Wasm Functions_ 33 | -------------------------------------------------------------------------------- /content/api/hub/mysql_tutorial.md: -------------------------------------------------------------------------------- 1 | title = "Tutorial: Querying MySQL" 2 | template = "render_hub_content_body" 3 | date = "2025-01-21T13:50:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "typescript", "sql", "mysql"] 6 | 7 | [extra] 8 | author = "Thorsten Hans" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2025-01-21T13:50:00Z" 13 | last_updated = "2025-01-21T13:50:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "The sample application written as part of the Querying MySQL tutorial." 16 | url = "https://github.com/fermyon/fwf-examples/tree/main/tutorials/mysql-tutorial" 17 | keywords = "TypeScript, HTTP, PostgreSQL, MySQL" 18 | 19 | --- 20 | 21 | The sample application written as part of the Querying MySQL tutorial. 22 | Prerequisites 23 | 24 | You need the following tools on your machine, to build, run and deploy the application to Fermyon Wasm Functions: 25 | 26 | The spin CLI 27 | Node.js (Version 20 or later) 28 | The aka plugin for spin CLI 29 | Access to a MySQL database server (As part of the tutorial, we're using a Linode Managed Database) 30 | Access to Fermyon Wasm Functions 31 | -------------------------------------------------------------------------------- /content/api/hub/object_storage_streaming_sample.md: -------------------------------------------------------------------------------- 1 | title = "Object Storage Streaming and Transformation" 2 | template = "render_hub_content_body" 3 | date = "2025-01-29T00:00:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "Typescript", "streaming"] 6 | 7 | [extra] 8 | author = "Radu Matei" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2025-01-29T13:50:00Z" 13 | last_updated = "2025-01-29T13:50:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "A Spin application showcasing how to stream and transform an object from an object store." 16 | url = "https://github.com/fermyon/fwf-examples/tree/main/samples/linode-object-storage-streaming" 17 | keywords = "Typescript, HTTP" 18 | 19 | --- 20 | 21 | This sample application shows how to stream and transform an object from an object store. 22 | 23 | ## Prerequisites 24 | 25 | You need the following tools on your machine, to build, run and deploy the application to _Fermyon Wasm Functions_: 26 | 27 | - The `spin` CLI 28 | - The `aka` plugin for `spin` CLI 29 | - Access to _Fermyon Wasm Functions_ 30 | -------------------------------------------------------------------------------- /content/api/hub/plugin_check_for_update.md: -------------------------------------------------------------------------------- 1 | title = "Check for Update" 2 | template = "render_hub_content_body" 3 | date = "2023-08-24T08:42:56Z" 4 | content-type = "text/plain" 5 | tags = ["cli", "tooling"] 6 | 7 | [extra] 8 | author = "ThorstenHans" 9 | type = "hub_document" 10 | category = "Plugin" 11 | language = "Rust" 12 | created_at = "2023-08-23T15:20:00Z" 13 | last_updated = "2023-08-23T15:20:00Z" 14 | spin_version = ">=0.4" 15 | summary = "A plugin to check if your local spin CLI installation is up-to-date" 16 | url = "https://github.com/ThorstenHans/spin-plugin-check-for-update" 17 | keywords = "plugins, tooling, cli, updates" 18 | 19 | --- 20 | 21 | This Spin plugin determines if the local installation of `spin` CLI is up-to-date or not. On invocation, the plugin will request the version number of `spin` (only considering stable releases) and compare it to the version installed locally. If the local installation is outdated, installation instructions will be printed to `stdout`. 22 | 23 | ## Installation 24 | 25 | ```bash 26 | spin plugins install --url https://raw.githubusercontent.com/spinframework/spin-plugins/main/manifests/check-for-update/check-for-update.json 27 | ``` 28 | 29 | ## Usage 30 | 31 | ```bash 32 | spin check-for-update 33 | 34 | # ⠋⠉ Checking for latest spin CLI version... 35 | 36 | # Your spin CLI is up to date (version 1.4.1) ✅ 37 | ``` 38 | -------------------------------------------------------------------------------- /content/api/hub/plugin_js2wasm.md: -------------------------------------------------------------------------------- 1 | title = "Spin js2wasm" 2 | template = "render_hub_content_body" 3 | date = "2022-10-15T00:22:56Z" 4 | content-type = "text/plain" 5 | tags = ["sdk", "javascript"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Plugin" 11 | language = "JS/TS" 12 | created_at = "2022-10-15T00:22:56Z" 13 | last_updated = "2022-10-15T00:22:56Z" 14 | spin_version = ">v1.0" 15 | summary = "A plugin to help build JavaScript/TypeScript based Spin apps." 16 | url = "https://github.com/spinframework/spin-js-sdk" 17 | keywords = "plugins, packaging plugins, javascript, typescript" 18 | 19 | --- 20 | 21 | This is an SDK for building Spin apps using JavaScript (and TypeScript). It installs by default with the [Spin install script](https://spinframework.dev/install#installing-spin). 22 | 23 | ## Installation 24 | 25 | ```bash 26 | spin plugins install js2wasm 27 | ``` 28 | 29 | This guide walks you through how to use it: [HTTP Components](https://spinframework.dev/javascript-components) -------------------------------------------------------------------------------- /content/api/hub/plugin_spin_cloud_gpu.md: -------------------------------------------------------------------------------- 1 | title = "Spin Cloud GPU Plugin" 2 | template = "render_hub_content_body" 3 | date = "2023-10-22T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["serverless_ai", "gpu", "inferencing", "embedding"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Plugin" 11 | language = "" 12 | created_at = "2023-10-20T00:22:56Z" 13 | last_updated = "2023-10-20T00:22:56Z" 14 | spin_version = ">=1.5" 15 | summary = "A plugin to connect local Spin apps to Fermyon Cloud GPUs" 16 | url = "https://github.com/fermyon/spin-cloud-gpu" 17 | 18 | --- 19 | 20 | Ever tested your AI-powered Spin app locally and spent quite a while waiting for your machine's compute to kick in...? Us too! The spin-cloud-gpu plugin allows you to use GPUs on Fermyon Cloud while running your Spin app locally with `spin up`. 21 | 22 | ## Installation 23 | 24 | ```bash 25 | spin plugins install -u https://github.com/fermyon/spin-cloud-gpu/releases/download/canary/cloud-gpu.json -y 26 | ``` 27 | 28 | For usage information, check out the source in [GitHub](https://github.com/fermyon/spin-cloud-gpu). -------------------------------------------------------------------------------- /content/api/hub/plugin_spin_pluginify.md: -------------------------------------------------------------------------------- 1 | title = "Pluginify" 2 | template = "render_hub_content_body" 3 | date = "2022-10-15T00:22:56Z" 4 | content-type = "text/plain" 5 | tags = ["plugins", "rust"] 6 | 7 | [extra] 8 | author = "itowlson" 9 | type = "hub_document" 10 | category = "Plugin" 11 | language = "Rust" 12 | created_at = "2022-10-15T00:22:56Z" 13 | last_updated = "2022-10-15T00:22:56Z" 14 | spin_version = ">v1.0" 15 | summary = "A plugin to help with the development of Spin plugins" 16 | url = "https://github.com/itowlson/spin-pluginify" 17 | keywords = "plugins, packaging plugins" 18 | 19 | --- 20 | 21 | This is a Spin plugin that helps with the inner loop of Spin plugin development by creating the tar file and manifest for you. 22 | 23 | ## Installation 24 | 25 | ```bash 26 | spin plugins install pluginify 27 | ``` 28 | 29 | For usage information, check out the source in [GitHub](https://github.com/itowlson/spin-pluginify). 30 | -------------------------------------------------------------------------------- /content/api/hub/plugin_sqs_trigger.md: -------------------------------------------------------------------------------- 1 | title = "SQS Trigger" 2 | template = "render_hub_content_body" 3 | date = "2022-10-15T00:22:56Z" 4 | content-type = "text/plain" 5 | tags = ["sqs", "trigger", "rust"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Plugin" 11 | language = "Rust" 12 | created_at = "2022-10-15T00:22:56Z" 13 | last_updated = "2022-10-15T00:22:56Z" 14 | spin_version = ">v1.0" 15 | summary = "Experimental plugin to enable SQS trigger" 16 | url = "https://github.com/spinframework/spin-trigger-sqs" 17 | keywords = "sqs, trigger" 18 | 19 | --- 20 | 21 | A experimental trigger that can be used to build Spin apps with SQS triggers. 22 | 23 | ## Installation 24 | 25 | ```bash 26 | spin plugins install --url https://github.com/spinframework/spin-trigger-sqs/releases/download/canary/trigger-sqs.json 27 | ``` 28 | 29 | For more detailed instructions, check out the source in [github](https://github.com/spinframework/spin-trigger-sqs) -------------------------------------------------------------------------------- /content/api/hub/read_post_sample.md: -------------------------------------------------------------------------------- 1 | title = "Read a POST Body" 2 | template = "render_hub_content_body" 3 | date = "2025-01-20T00:00:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "typescript"] 6 | 7 | [extra] 8 | author = "Fermyon" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2025-01-20T00:00:00Z" 13 | last_updated = "2025-01-20T00:00:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "Shows how to read the body of a POST request." 16 | url = "https://github.com/fermyon/fwf-examples/tree/main/samples/read-post" 17 | keywords = "TypeScript, HTTP" 18 | 19 | --- 20 | 21 | This sample application illustrates how to read the body of an HTTP POST request. 22 | 23 | ## Prerequisites 24 | 25 | You need the following tools on your machine, to build, run and deploy the application to _Fermyon Wasm Functions_: 26 | 27 | - The `spin` CLI 28 | - A recent version of `npm` 29 | - The `aka` plugin for `spin` CLI 30 | - Access to _Fermyon Wasm Functions_ 31 | -------------------------------------------------------------------------------- /content/api/hub/relational_db_tutorial.md: -------------------------------------------------------------------------------- 1 | title = "Tutorial: Querying relational Databases" 2 | template = "render_hub_content_body" 3 | date = "2025-01-21T13:50:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "javascript", "sql", "postgres"] 6 | 7 | [extra] 8 | author = "Thorsten Hans" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2025-01-21T13:50:00Z" 13 | last_updated = "2025-01-21T13:50:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "The sample application written as part of the Querying relational Databases tutorial." 16 | url = "https://github.com/fermyon/fwf-examples/tree/main/tutorials/postgresql-tutorial" 17 | keywords = "Javascript, HTTP, PostgreSQL, Postgres" 18 | 19 | --- 20 | 21 | The sample application written as part of the Querying relational Databases tutorial. 22 | Prerequisites 23 | 24 | You need the following tools on your machine, to build, run and deploy the application to Fermyon Wasm Functions: 25 | 26 | The spin CLI 27 | Node.js (Version 20 or later) 28 | The aka plugin for spin CLI 29 | Access to a PostgreSQL database server (As part of the tutorial, we're using NEON's free tier) 30 | Access to Fermyon Wasm Functions 31 | -------------------------------------------------------------------------------- /content/api/hub/respond_with_other_site_sample.md: -------------------------------------------------------------------------------- 1 | title = "Respond with Another Site" 2 | template = "render_hub_content_body" 3 | date = "2025-01-20T00:00:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "typescript"] 6 | 7 | [extra] 8 | author = "Fermyon" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2025-01-20T00:00:00Z" 13 | last_updated = "2025-01-20T00:00:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "Shows how to fetch and pass through a response from another site." 16 | url = "https://github.com/fermyon/fwf-examples/tree/main/samples/respond-with-another-site" 17 | keywords = "TypeScript, HTTP" 18 | 19 | --- 20 | 21 | This sample application shows a Wasm function that responds to GET requests with the response from another site. 22 | 23 | ## Prerequisites 24 | 25 | You need the following tools on your machine, to build, run and deploy the application to _Fermyon Wasm Functions_: 26 | 27 | - The `spin` CLI 28 | - A recent version of `npm` 29 | - The `aka` plugin for `spin` CLI 30 | - Access to _Fermyon Wasm Functions_ 31 | -------------------------------------------------------------------------------- /content/api/hub/sample_11ty.md: -------------------------------------------------------------------------------- 1 | title = "Spin 11ty" 2 | template = "render_hub_content_body" 3 | date = "2023-12-19T04:30:32.000Z" 4 | content-type = "text/html" 5 | tags = ["javascript", "11ty", "fermyon cloud",] 6 | 7 | [extra] 8 | author = "VamshiReddy02" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2023-12-19T04:30:32.000Z" 13 | last_updated = "2023-12-19T04:30:32.000Z" 14 | spin_version = ">v1.3" 15 | summary = "A template to use 11ty with Spin" 16 | url = "https://github.com/VamshiReddy02/spin-11ty" 17 | keywords = "html, 11ty, javascript, Nunjucks" 18 | 19 | --- 20 | 21 | This is a template for building and statically exporting your 11ty application and running it on Spin. 22 | 23 | All you need to do is open the [spin-11ty](https://github.com/VamshiReddy02/spin-11ty) repository and click the "Use this template" button. Once you've created your repository from the template, Run `npm install` and `npx start`, then start editing your application. Alternatively, you can run `spin build` and `spin up` to build and run your application. -------------------------------------------------------------------------------- /content/api/hub/sample_bookmarker.md: -------------------------------------------------------------------------------- 1 | title = "AI Bookmarker: Smart Bookmarking Web App" 2 | template = "render_hub_content_body" 3 | date = "2023-12-08T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["python", "ai", "key-value"] 6 | 7 | [extra] 8 | author = "technosophos" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Python" 12 | created_at = "2023-12-08T00:22:56Z" 13 | last_updated = "2023-12-08T00:22:56Z" 14 | spin_version = ">v2.0" 15 | summary = "This app uses Spin's Python SDK to create and store bookmarks. It uses an LLM to generate a summary of the page." 16 | url = "https://github.com/technosophos/bookmarker" 17 | 18 | --- 19 | 20 | A simple web application that persists bookmarked URLs via key-value store and then generates a summary of each using Fermyon Serverless AI. 21 | 22 | Visit the [GitHub repository](https://github.com/technosophos/bookmarker) for instructions on how to get started. 23 | -------------------------------------------------------------------------------- /content/api/hub/sample_bts_golang.md: -------------------------------------------------------------------------------- 1 | title = "Behind the Scenes" 2 | template = "render_hub_content_body" 3 | date = "2024-01-15T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["go", "slack", "web", "nuxt", "ssg"] 6 | 7 | [extra] 8 | author = "rajatjindal" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Go" 12 | created_at = "2024-01-15T00:22:56Z" 13 | last_updated = "2024-01-15T00:22:56Z" 14 | spin_version = ">v1.5" 15 | summary = "A fun social photo app built using Golang/Nuxt/Spin" 16 | url = "https://github.com/rajatjindal/behind-the-scenes" 17 | keywords = "slack, go, nuxt.js, webhook" 18 | 19 | --- 20 | 21 | A fun social photo app built using Spin, Golang, Key-Value Store, and Nuxt.js. 22 | -------------------------------------------------------------------------------- /content/api/hub/sample_checklist.md: -------------------------------------------------------------------------------- 1 | title = "Checklist Sample App" 2 | template = "render_hub_content_body" 3 | date = "2023-11-03T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["typescript", "http", "key-value"] 6 | 7 | [extra] 8 | author = "macolso" 9 | type = "hub_document" 10 | category = "Sample" 11 | image = "https://github.com/user-attachments/assets/0716033e-80fb-451e-aa3a-24b5aaa066f6" 12 | language = "JS/TS" 13 | created_at = "2023-11-03T00:22:56Z" 14 | last_updated = "2023-11-03T00:22:56Z" 15 | spin_version = ">v1.0" 16 | summary = "A checklist app that persists data in a Spin Key Value store" 17 | artifact_source = "ghcr.io/macolso/spin-checklist:v0.0.1" 18 | url = "https://github.com/macolso/spin-checklist" 19 | repo_name = "spin-checklist" 20 | yaml = "https://raw.githubusercontent.com/macolso/spin-checklist/main/spin-checklist.yaml" 21 | 22 | --- 23 | 24 | This is a sample app that uses a Key Value store to persist the checklist items and their state. The list is then rendered using Spin's static file server. You can also explore the Key Value store's contents with the `key-value-explorer` template. 25 | 26 | -------------------------------------------------------------------------------- /content/api/hub/sample_code_pls.md: -------------------------------------------------------------------------------- 1 | title = "Rust Code Bot" 2 | template = "render_hub_content_body" 3 | date = "2022-10-15T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["rust", "ai"] 6 | 7 | [extra] 8 | author = "me-diru" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Rust" 12 | created_at = "2024-07-16T08:50:10Z" 13 | last_updated = "2024-07-16T08:50:10Z" 14 | spin_version = ">v0.2" 15 | summary = "A sample Code Bot applicaton in Rust" 16 | url = "https://github.com/me-diru/code-pls" 17 | 18 | --- 19 | 20 | A fun project that implements an interactive code bot to play around with and generate helpful suggestions to your code. It uses CodeLlama-instruct 13 B Large Language Model(LLM) in the background powered by Fermyon Cloud inferences. See how you can prompt engineer to get the best results :D 21 | 22 | Checkout the [app here](https://code-pls.fermyon.app/) 23 | 24 | Get started with `spin build`, `spin up` and `spin deploy`. 25 | 26 | [See the AI capabilities using Fermyon serverless AI!](https://spinframework.dev/v2/serverless-ai-hello-world.md) 27 | 28 | 29 | -------------------------------------------------------------------------------- /content/api/hub/sample_crossword_helper.md: -------------------------------------------------------------------------------- 1 | title = "AI-assisted Crossword Helper" 2 | template = "render_hub_content_body" 3 | date = "2023-10-17T09:00:00Z" 4 | content-type = "text/html" 5 | tags = ["typescript", "javascript", "ai"] 6 | 7 | [extra] 8 | author = "technosophos" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2023-10-17T09:00:00Z" 13 | last_updated = "2023-10-17T09:00:00Z" 14 | spin_version = ">v1.5" 15 | summary = "Assist solving crossword puzzles" 16 | url = "https://github.com/technosophos/crossword-helper" 17 | keywords = "typescript, javascript, ai" 18 | 19 | --- 20 | 21 | This app is a helper for solving crossword puzzles. It uses LLaMa2-Chat to provide one or more candidate answers for those too-tough crossword puzzle clues. 22 | 23 | The app is written in TypeScript and uses the `static-fileserver` to serve the frontend, and a simple REST-based JSON service to answer questions. There is a small amount of client-side JavaScript to handle making the requests. 24 | -------------------------------------------------------------------------------- /content/api/hub/sample_dioxus.md: -------------------------------------------------------------------------------- 1 | title = "Dioxus Web application sample" 2 | template = "render_hub_content_body" 3 | date = "2022-10-15T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["rust", "html", "web"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Rust" 12 | created_at = "2022-10-15T00:22:56Z" 13 | last_updated = "2022-10-15T00:22:56Z" 14 | spin_version = ">v1.0" 15 | summary = "A sample of using the Dioxus Web framework in Spin" 16 | url = "https://www.fermyon.com/blog/dioxus-in-spin" 17 | keywords = "frontend, rust, gui" 18 | 19 | --- 20 | 21 | A blog post showing how to build Web pages using Dioxus and Spin. 22 | -------------------------------------------------------------------------------- /content/api/hub/sample_feed_dog.md: -------------------------------------------------------------------------------- 1 | title = "Dog Feeding Tracker with NFC and iPhone" 2 | template = "render_hub_content_body" 3 | date = "2023-08-30T00:00:00Z" 4 | content-type = "text/html" 5 | tags = ["typescript", "javascript", "key-value"] 6 | 7 | [extra] 8 | author = "technosophos" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2023-08-30T00:00:00Z" 13 | last_updated = "2023-08-30T00:00:00Z" 14 | spin_version = ">v1.4" 15 | summary = "A dog food tracker app that uses NFC tags and an iPhone shortcut with a Spin app" 16 | url = "https://github.com/technosophos/feed-the-dog" 17 | keywords = "typescript, javascript, key-value" 18 | 19 | --- 20 | 21 | In our family, it is hard to track whether the dog gets his three meals a day. So I wrote a simple app that works like this: 22 | 23 | 1. The dog food bin has an NFC tag 24 | 2. Our iPhones have a shortcut that, when the NFC tag is tapped, checks how many times the dog has been fed 25 | 3. A Spin TypeScript app uses Key Value Store to track and store how many times the NFC token has been tapped 26 | 4. If the dog has been fed already, the iPhone shortcut lets the user know. Otherwise it logs a feeding. 27 | 28 | The Spin app has both a web UI and a simple JSON REST API. The iPhone shortcut uses the REST API. 29 | -------------------------------------------------------------------------------- /content/api/hub/sample_hugo.md: -------------------------------------------------------------------------------- 1 | title = "Spin Hugo" 2 | template = "render_hub_content_body" 3 | date = "2023-08-31T10:52:54Z" 4 | content-type = "text/plain" 5 | tags = ["hugo", "fileserver", "ssg", "fermyon cloud"] 6 | 7 | [extra] 8 | author = "ThorstenHans" 9 | type = "hub_document" 10 | category = "Examples" 11 | language = "Rust" 12 | created_at = "2023-08-31T10:52:54Z" 13 | last_updated = "2023-08-31T00:52:54Z" 14 | spin_version = ">v1.3" 15 | summary = "A template for deploying your Hugo site using Spin and Cloud." 16 | url = "https://github.com/ThorstenHans/hugo-spin" 17 | keywords = "Hugo, spin-fileserver, SSG, template, Fermyon Cloud" 18 | 19 | --- 20 | 21 | ### Getting started 22 | 23 | The [hugo-spin](https://github.com/ThorstenHans/hugo-spin) comes with all batteries included to serve your next [Hugo](https://gohugo.io) site leveraging the [`spin-fileserver`](https://github.com/spinframework/spin-fileserver). 24 | 25 | To get started, open the [hugo-spin](https://github.com/ThorstenHans/hugo-spin) repository and click the "Use this template" button. Once you've created your own repository from the template, you can use the `make start` and `make deploy` to either build and the site locally, or to deploy it to Fermyon Cloud. 26 | -------------------------------------------------------------------------------- /content/api/hub/sample_jinja2.md: -------------------------------------------------------------------------------- 1 | title = "Jinja2 Template Engine and Spin" 2 | template = "render_hub_content_body" 3 | date = "2023-12-08T00:00:00Z" 4 | content-type = "text/html" 5 | tags = ["python", "templating"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Python" 12 | created_at = "2023-12-08T00:00:00Z" 13 | last_updated = "2023-12-08T00:00:00Z" 14 | spin_version = ">=v2.0" 15 | summary = "Example of how to load templates off of the filesystem and then render them and serve them back to the client." 16 | url = "https://github.com/technosophos/jinja2-spin-example" 17 | keywords = "python, jinja2" 18 | 19 | --- 20 | 21 | This is an example of using the [Jinja2 template engine](https://jinja.palletsprojects.com/en/3.1.x/) inside of a Spin app. You will learn how to load templates off of the filesystem and then render them and serve them back to the client. 22 | 23 | Jinja docs: 24 | * Python docs: https://jinja.palletsprojects.com/en/3.1.x/ 25 | * Tempalte docs: https://jinja.palletsprojects.com/en/3.1.x/templates/ 26 | 27 | To get started, please visit the [GitHub repository](https://github.com/technosophos/jinja2-spin-example). 28 | -------------------------------------------------------------------------------- /content/api/hub/sample_kv_in_python.md: -------------------------------------------------------------------------------- 1 | title = "Store JSON Objects with Key Value Store and Spin With Python" 2 | template = "render_hub_content_body" 3 | date = "2023-12-08T00:00:00Z" 4 | content-type = "text/html" 5 | tags = ["python", "key-value", "json"] 6 | 7 | [extra] 8 | author = "technosophos" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Python" 12 | created_at = "2023-12-08T00:00:00Z" 13 | last_updated = "2023-12-08T00:00:00Z" 14 | spin_version = ">v2.0" 15 | summary = "Example using Spin's built-in KV Store to store and retrieve JSON documents in Python." 16 | url = "https://github.com/technosophos/all-kv-functions" 17 | keywords = "python, JSON, key-value" 18 | 19 | --- 20 | 21 | Simple example of how to use Spin's built-in [key-value store](https://spinframework.dev/v2/key-value-store-tutorial) to store and retrieve JSON documents in Python. -------------------------------------------------------------------------------- /content/api/hub/sample_like_button.md: -------------------------------------------------------------------------------- 1 | title = "Building a Like button" 2 | template = "render_hub_content_body" 3 | date = "2022-10-15T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["typescript", "key-value", "web"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2022-10-15T00:22:56Z" 13 | last_updated = "2022-10-15T00:22:56Z" 14 | spin_version = ">v1.0" 15 | summary = "A sample of using the Spin key-value store to build a Like button" 16 | url = "https://www.fermyon.com/blog/how-i-built-a-like-button-for-my-blog-with-spin" 17 | 18 | --- 19 | 20 | A blog post showing how to persist data using the Spin key-value store. 21 | -------------------------------------------------------------------------------- /content/api/hub/sample_load_testing_spin_apps_with_k6.md: -------------------------------------------------------------------------------- 1 | title = "Load-Testing Spin Apps with Grafana k6" 2 | template = "render_hub_content_body" 3 | date = "2024-04-03T13:50:00Z" 4 | content-type = "text/html" 5 | tags = ["rust", "load testing"] 6 | 7 | [extra] 8 | author = "ThorstenHans" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Rust" 12 | created_at = "2024-04-03T13:50:00Z" 13 | last_updated = "2024-04-03T13:50:00Z" 14 | spin_version = ">=v2.4.0" 15 | summary = "This sample demonstrates how one could perform load-testing for Spin Apps with Grafana k6" 16 | url = "https://github.com/fermyon/enterprise-architectures-and-patterns/tree/main/load-testing-spin-with-k6" 17 | 18 | --- 19 | 20 | Grafana [k6](https://k6.io/) is an open-source load testing tool that makes performance testing easy and productive for engineering teams. k6 is free, developer-centric, and extensible. 21 | 22 | This sample illustrates how to load-test your Spin Apps. -------------------------------------------------------------------------------- /content/api/hub/sample_newsreader_ai.md: -------------------------------------------------------------------------------- 1 | title = "AI-assisted News Summarizer" 2 | template = "render_hub_content_body" 3 | date = "2023-09-05T09:00:00Z" 4 | content-type = "text/html" 5 | tags = ["typescript", "javascript", "ai"] 6 | 7 | [extra] 8 | author = "technosophos" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2023-09-05T00:00:00Z" 13 | last_updated = "2023-09-05T00:00:00Z" 14 | spin_version = ">v1.5" 15 | summary = "Read an RSS feed and have AI summarize it for you" 16 | url = "https://github.com/fermyon/ai-examples/tree/main/newsfeeder-ts" 17 | keywords = "typescript, javascript, ai" 18 | 19 | --- 20 | 21 | This fetches an RSS feed over HTTP, parses the feed and extracts some data. The data is then used to assemble a prompt that is sent into Fermyon Serverless AI. 22 | 23 | The result is that the AI summarizes the content of recent stories on the news feed. 24 | -------------------------------------------------------------------------------- /content/api/hub/sample_redirect.md: -------------------------------------------------------------------------------- 1 | title = "Short links and QR codes" 2 | template = "render_hub_content_body" 3 | date = "2023-08-14T00:00:00Z" 4 | content-type = "text/html" 5 | tags = ["rust", "html", "components"] 6 | 7 | [extra] 8 | author = "mikkelhegn" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Rust" 12 | created_at = "2023-08-14T00:00:00Z" 13 | last_updated = "2023-08-14T00:00:00Z" 14 | spin_version = ">v1.0" 15 | summary = "A sample of using mulitple components to create an app" 16 | url = "https://github.com/mikkelhegn/redirect" 17 | keywords = "rust, static content, components, html, qr code" 18 | 19 | --- 20 | 21 | A nice little app to create short links and generate QR codes. 22 | 23 | The sample has an api, an admin UI (html), a component to redirect, and uses an external component to generate QR codes. 24 | 25 | Redirect records are store in the KeyValue store in Spin. 26 | 27 | The application is capable of running in Fermyon Cloud. 28 | -------------------------------------------------------------------------------- /content/api/hub/sample_release_bot_golang.md: -------------------------------------------------------------------------------- 1 | title = "Spin Plugin Release Bot" 2 | template = "render_hub_content_body" 3 | date = "2024-01-15T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["go", "github", "actions"] 6 | 7 | [extra] 8 | author = "rajatjindal" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Go" 12 | created_at = "2024-01-15T00:22:56Z" 13 | last_updated = "2024-01-15T00:22:56Z" 14 | spin_version = ">v1.5" 15 | summary = "A bot automating releases for Spin Plugins" 16 | url = "https://github.com/rajatjindal/spin-plugin-release-bot" 17 | keywords = "github, go, webhook, bot" 18 | 19 | --- 20 | 21 | spin-plugin-release-bot is a Spin app that automates the releases of Spin Plugins. -------------------------------------------------------------------------------- /content/api/hub/sample_router.md: -------------------------------------------------------------------------------- 1 | title = "Interal HTTP Routing with Python" 2 | template = "render_hub_content_body" 3 | date = "2023-12-08T00:00:00Z" 4 | content-type = "text/html" 5 | tags = ["python", "http", "routing"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Python" 12 | created_at = "2023-12-08T00:00:00Z" 13 | last_updated = "2023-12-08T00:00:00Z" 14 | spin_version = ">v2.0" 15 | summary = "A sample that shows how to do internal HTTP routing in a Spin Python application" 16 | url = "https://github.com/spinframework/spin-python-sdk/tree/main/examples/external-lib-example" 17 | keywords = "router, python" 18 | 19 | --- 20 | 21 | This project showcases how to do internal HTTP routing in a Spin Python application. It is similar to [the Spin JS router](https://spinframework.dev/v2/javascript-components#routing-in-a-component) as well as the Django router. 22 | 23 | If you are interested in external routing (where the routing table is declared in the spin.toml), the [Application Structure guide](https://spinframework.dev/v2/spin-application-structure) covers this. 24 | 25 | This uses the absolutely fantastic [http_router](https://pypi.org/project/http-router/) project. You will likely want to reference the API docs: 26 | * https://github.com/klen/http-router. 27 | 28 | Visit the [GitHub repository](https://github.com/spinframework/spin-python-sdk/tree/main/examples/external-lib-example) for instructions on how to get started 29 | -------------------------------------------------------------------------------- /content/api/hub/sample_sentiment_analysis.md: -------------------------------------------------------------------------------- 1 | title = "Sentiment Analysis API" 2 | template = "render_hub_content_body" 3 | date = "2023-09-05T09:00:00Z" 4 | content-type = "text/html" 5 | tags = ["typescript", "ai", "key-value"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2023-09-01T00:22:56Z" 13 | last_updated = "2023-09-01T00:22:56Z" 14 | spin_version = ">v1.5" 15 | summary = "A sentiment analysis API built with Fermyon Serverless AI" 16 | url = "https://github.com/fermyon/ai-examples/tree/main/sentiment-analysis-ts" 17 | 18 | --- 19 | 20 | A sentiment analysis API built with Fermyon Serverless AI. 21 | -------------------------------------------------------------------------------- /content/api/hub/sample_silly_walk_ai.md: -------------------------------------------------------------------------------- 1 | title = "A Silly Walk example of Serverless AI" 2 | template = "render_hub_content_body" 3 | date = "2023-09-05T09:00:00Z" 4 | content-type = "text/html" 5 | tags = ["typescript", "javascript", "ai"] 6 | 7 | [extra] 8 | author = "technosophos" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2023-09-05T00:00:00Z" 13 | last_updated = "2023-09-05T00:00:00Z" 14 | spin_version = ">v1.5" 15 | summary = "An example of generating a Pythonesque description of walking using Fermyon Serverless AI" 16 | url = "https://github.com/fermyon/ai-examples/tree/main/silly-walk-ts" 17 | keywords = "typescript, javascript, ai" 18 | 19 | --- 20 | 21 | This sample illustrates the basics of doing AI inferencing with Fermyon Serverless AI. 22 | 23 | It prompts the LLM to generate a description of walking in a Monty Python style. The code is a dozen lines, and is a great introduction to doing AI inferencing in TypeScript. 24 | -------------------------------------------------------------------------------- /content/api/hub/sample_spin_wordle.md: -------------------------------------------------------------------------------- 1 | title = "Wordle by Spin" 2 | template = "render_hub_content_body" 3 | date = "2024-08-26T04:30:32.000Z" 4 | content-type = "text/html" 5 | tags = ["javascript", "typescript"] 6 | 7 | [extra] 8 | author = "VamshiReddy02" 9 | type = "hub_document" 10 | category = "Sample" 11 | image = "https://github.com/user-attachments/assets/2f6932ef-cfe9-4f5b-a604-0968cb4be940" 12 | language = "JS/TS" 13 | created_at = "2024-08-26T04:30:32.000Z" 14 | last_updated = "2024-08-26T04:30:32.000Z" 15 | spin_version = ">v2.0" 16 | summary = "Wordle game created using the Spin SDK" 17 | url = "https://github.com/VamshiReddy02/wordle-spin" 18 | repo_name = "wordle-spin" 19 | artifact_source = "ghcr.io/vamshireddy02/spin-wordle:v0.1" 20 | yaml = "https://raw.githubusercontent.com/VamshiReddy02/wordle-spin/master/spin-wordle.yaml" 21 | keywords = "UI, SDK, javascript, typescript" 22 | 23 | --- 24 | 25 | As we all know, Wordle is a popular word puzzle game that challenges players to guess a five-letter word within six attempts. 26 | 27 | All you need to do is open the [wordle-spin](https://github.com/VamshiReddy02/wordle-spin) repository and clone the sample in your local system. Run `npm install` and `npx start`, to install packages and to run this game. Alternatively, you can run `spin build` and `spin up` to build and run your application. -------------------------------------------------------------------------------- /content/api/hub/sample_tera.md: -------------------------------------------------------------------------------- 1 | title = "Tera Template Engine and Spin" 2 | template = "render_hub_content_body" 3 | date = "2024-09-17T00:00:00Z" 4 | content-type = "text/html" 5 | tags = ["rust", "templating" , "cookies"] 6 | 7 | [extra] 8 | author = "kunjee17" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Rust" 12 | created_at = "2024-09-17T00:00:00Z" 13 | last_updated = "2024-09-17T00:00:00Z" 14 | spin_version = ">=v2.0" 15 | summary = "Example of how to load templates off of the filesystem and then render them. Also, covers creating session cookies and protected routes using cookies." 16 | url = "https://github.com/kunjee17/spin_monolith" 17 | keywords = "rust, tera, cookies" 18 | 19 | --- 20 | 21 | This is an example of using the [Tera template engine](https://keats.github.io/tera/) inside of a Spin app. You will learn how to load templates off of the filesystem and then render them. 22 | 23 | Also, you will learn how to use session cookies to have protected route and how to use `form-post` to submit data to spin route. 24 | 25 | To get started, please visit the [GitHub repository](https://github.com/kunjee17/spin_monolith). 26 | -------------------------------------------------------------------------------- /content/api/hub/sample_tests_dashboard_golang.md: -------------------------------------------------------------------------------- 1 | title = "Tests Dashboard" 2 | template = "render_hub_content_body" 3 | date = "2024-01-15T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["go", "github", "actions"] 6 | 7 | [extra] 8 | author = "rajatjindal" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Go" 12 | created_at = "2024-01-15T00:22:56Z" 13 | last_updated = "2024-01-15T00:22:56Z" 14 | spin_version = ">v1.5" 15 | summary = "A dashboard built to track test results history" 16 | url = "https://github.com/rajatjindal/tests-dashboard" 17 | keywords = "github, go, webhook, nuxtjs" 18 | 19 | --- 20 | 21 | This app provides a Tests Dashboard that helps track the test results overtime. -------------------------------------------------------------------------------- /content/api/hub/sample_todo.md: -------------------------------------------------------------------------------- 1 | title = "To Do Sample App" 2 | template = "render_hub_content_body" 3 | date = "2023-07-24T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["rust", "http", "sqlite"] 6 | 7 | [extra] 8 | author = "rylev" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "Rust" 12 | created_at = "2023-07-10T00:22:56Z" 13 | last_updated = "2023-07-10T00:22:56Z" 14 | spin_version = ">v1.4" 15 | summary = "A \"to do\" app that persists data in a SQLite DB" 16 | url = "https://github.com/rylev/spin-todo" 17 | 18 | --- 19 | 20 | This is a sample app that uses SQLite Storage to store "todo" items, and then renders the list using Spin's static file server. 21 | 22 | -------------------------------------------------------------------------------- /content/api/hub/sample_view_counter.md: -------------------------------------------------------------------------------- 1 | title = "JSON State Storage with TypeScript and Key/Value Store" 2 | template = "render_hub_content_body" 3 | date = "2023-10-23T00:00:00Z" 4 | content-type = "text/html" 5 | tags = ["typescript", "javascript", "key-value"] 6 | 7 | [extra] 8 | author = "technosophos" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2023-10-23T00:00:00Z" 13 | last_updated = "2023-10-23T00:00:00Z" 14 | spin_version = ">v1.3" 15 | summary = "Simple page view tracker illustrating how to do state storage with TypeScript and KV Store" 16 | url = "https://github.com/technosophos/view-counter-ts" 17 | keywords = "typescript, javascript, key-value" 18 | 19 | --- 20 | 21 | This example shows a simple page view counter using TypeScript and Key Value Store. 22 | 23 | It illustrates usage of four KV functions: 24 | 25 | * `openDefault()` 26 | * `exists()` 27 | * `getJson()` 28 | * `setJson()` 29 | 30 | There is a [complete tutorial on Dev.to](https://dev.to/technosophos/storing-state-between-serverless-requests-with-typescript-and-spin-3p3i) describing this code. 31 | -------------------------------------------------------------------------------- /content/api/hub/supabase_proxy_tutorial.md: -------------------------------------------------------------------------------- 1 | title = "Tutorial: Supabase Cache Proxy" 2 | template = "render_hub_content_body" 3 | date = "2025-01-21T13:50:00Z" 4 | content-type = "text/plain" 5 | tags = ["http", "typescript", "keyvalue", "supabase", "cache"] 6 | 7 | [extra] 8 | author = "Thorsten Hans" 9 | type = "hub_document" 10 | category = "Sample" 11 | language = "JS/TS" 12 | created_at = "2025-02-14T13:50:00Z" 13 | last_updated = "2025-02-14T13:50:00Z" 14 | spin_version = ">=v3.1.0" 15 | summary = "The sample application written as part of the Building a Supabase Cache Proxy tutorial." 16 | url = "https://github.com/fermyon/fwf-examples/tree/main/tutorials/supabase-proxy-tutorial" 17 | keywords = "TypeScript, HTTP, Supabase, KeyValue" 18 | 19 | --- 20 | 21 | The sample application written as part of the Building a Supabase Cache Proxy tutorial. 22 | 23 | Prerequisites 24 | 25 | You need the following tools on your machine, to build, run and deploy the application to Fermyon Wasm Functions: 26 | 27 | The spin CLI 28 | Node.js (Version 20 or later) 29 | The aka plugin for spin CLI 30 | Access to Supabase (As part of the tutorial, we're using the Supabase free tier) 31 | Access to Fermyon Wasm Functions 32 | -------------------------------------------------------------------------------- /content/api/hub/template_angular.md: -------------------------------------------------------------------------------- 1 | title = "Spin Angular" 2 | template = "render_hub_content_body" 3 | date = "2024-09-30T15:30:32.000Z" 4 | content-type = "text/plain" 5 | tags = ["javascript", "angular", "fermyon cloud",] 6 | 7 | [extra] 8 | author = "yasinatalar" 9 | type = "hub_document" 10 | category = "Template" 11 | language = "JS/TS" 12 | created_at = "2024-09-30T15:30:32.000Z" 13 | last_updated = "2024-09-30T15:30:32.000Z" 14 | spin_version = ">v2.0" 15 | summary = "A template to use Angular with Spin" 16 | url = "https://github.com/yasinatalar/spin-angular" 17 | template_id = "spin-angular" 18 | keywords = "html, Angular, typescript" 19 | 20 | --- 21 | 22 | # A Simple Static Fileserver Template for Spin Framework with Angular 23 | 24 | This is a template for building and statically exporting your Angular application and running it on Spin. 25 | 26 | ## Using the Template 27 | 28 | Before you can use this template you need to run `npm install` to install the dependencies (node_modules). 29 | After that you can use `spin build` and `spin up` to build and run the application. 30 | -------------------------------------------------------------------------------- /content/api/hub/template_docusaurus.md: -------------------------------------------------------------------------------- 1 | title = "Spin Docusaurus" 2 | template = "render_hub_content_body" 3 | date = "2023-12-14T04:30:32.000Z" 4 | content-type = "text/html" 5 | tags = ["javascript", "docusaurus", "react",] 6 | 7 | [extra] 8 | author = "VamshiReddy02" 9 | type = "hub_document" 10 | category = "Template" 11 | language = "JS/TS" 12 | created_at = "2023-12-14T04:30:32.000Z" 13 | last_updated = "2023-12-14T04:30:32.000Z" 14 | spin_version = ">v1.3" 15 | summary = "A template to use docusaurus with Spin" 16 | url = "https://github.com/VamshiReddy02/spin-docusaurus" 17 | template_id = "Docusaurus" 18 | repo_url = "https://github.com/VamshiReddy02/spin-docusaurus" 19 | keywords = "react, docusaurus, javascript, typescript" 20 | 21 | --- 22 | 23 | This is a template for building and statically exporting your Docusaurus application and running it on Spin. 24 | 25 | All you need to do is open the [spin-docusaurus](https://github.com/VamshiReddy02/spin-docusaurus) repository and install the template in your spin CLI. Once you've created your repository from the template, Run `npm install` and `npx start`, then start editing your application. Alternatively, you can run `spin build` and `spin up` to build and run your application. -------------------------------------------------------------------------------- /content/api/hub/template_http_empty.md: -------------------------------------------------------------------------------- 1 | title = "Empty HTTP trigger template" 2 | template = "render_hub_content_body" 3 | date = "2022-10-15T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["http"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Template" 11 | created_at = "2022-10-15T00:22:56Z" 12 | last_updated = "2022-10-15T00:22:56Z" 13 | spin_version = ">v0.7" 14 | summary = "A template to create an HTTP application with no components" 15 | url = "https://github.com/spinframework/spin/tree/main/templates/http-empty" 16 | template_id = "http-empty" 17 | repo_url = "https://github.com/spinframework/spin" 18 | keywords = "web app, http, api, starter" 19 | 20 | --- 21 | 22 | This template creates an HTTP application with no components. It installs by default with the [Spin install script](https://spinframework.dev/install#installing-spin). 23 | 24 | Use this template when you expect to [add](https://spinframework.dev/writing-apps#adding-a-new-component-to-an-application) multiple components to an application, to help you establish an even directory structure. 25 | -------------------------------------------------------------------------------- /content/api/hub/template_http_go.md: -------------------------------------------------------------------------------- 1 | title = "Go HTTP trigger template" 2 | template = "render_hub_content_body" 3 | date = "2022-10-15T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["go", "http"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Template" 11 | language = "Go" 12 | created_at = "2022-10-15T00:22:56Z" 13 | last_updated = "2022-10-15T00:22:56Z" 14 | spin_version = ">v0.2" 15 | summary = "A template to create an HTTP handler in Go" 16 | url = "https://github.com/spinframework/spin/tree/main/templates/http-go" 17 | template_id = "http-go" 18 | repo_url = "https://github.com/spinframework/spin" 19 | keywords = "web app, http, api" 20 | 21 | --- 22 | 23 | This is the default HTTP trigger template for Go. It installs by default with the [Spin install script](https://spinframework.dev/install#installing-spin). 24 | 25 | This guide walks you through how to use it: [HTTP Components](https://spinframework.dev/go-components#http-components) -------------------------------------------------------------------------------- /content/api/hub/template_http_js.md: -------------------------------------------------------------------------------- 1 | title = "JavaScript HTTP trigger template" 2 | template = "render_hub_content_body" 3 | date = "2022-10-15T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["javascript", "http"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Template" 11 | language = "JS/TS" 12 | created_at = "2022-10-15T00:22:56Z" 13 | last_updated = "2022-10-15T00:22:56Z" 14 | spin_version = ">v0.8" 15 | summary = "A template to create an HTTP handler in JavaScript" 16 | url = "https://github.com/spinframework/spin-js-sdk/tree/main/templates/http-js" 17 | template_id = "http-js" 18 | repo_url = "https://github.com/spinframework/spin-js-sdk" 19 | keywords = "web app, http, api" 20 | 21 | --- 22 | 23 | This is the default HTTP trigger template for JavaScript. It installs by default with the [Spin install script](https://spinframework.dev/install#installing-spin). 24 | 25 | This guide walks you through how to use it: [HTTP Components](https://spinframework.dev/javascript-components#http-components) -------------------------------------------------------------------------------- /content/api/hub/template_http_python.md: -------------------------------------------------------------------------------- 1 | title = "Python HTTP trigger template" 2 | template = "render_hub_content_body" 3 | date = "2022-10-15T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["python", "http"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Template" 11 | language = "Python" 12 | created_at = "2022-10-15T00:22:56Z" 13 | last_updated = "2022-10-15T00:22:56Z" 14 | spin_version = ">v2.2" 15 | summary = "A template to create an HTTP handler in Python" 16 | url = "https://github.com/spinframework/spin-python-sdk/tree/main/templates/http-py" 17 | template_id = "http-py" 18 | repo_url = "https://github.com/spinframework/spin-python-sdk" 19 | keywords = "web app, http, api" 20 | 21 | --- 22 | 23 | ## Prerequisite 24 | 25 | Ensure that you have Python 3.10 or later installed on your system. You can check your Python version by running: 26 | 27 | ```bash 28 | python3 --version 29 | ``` 30 | 31 | If you do not have Python 3.10 or later, you can install it by following the instructions [here](https://www.python.org/downloads/). 32 | 33 | This is the default HTTP trigger template for Python. It installs by default with the [Spin install script](https://spinframework.dev/install#installing-spin). 34 | 35 | This guide walks you through how to use it: [Structure of a Python Component](https://spinframework.dev/python-components#structure-of-a-python-component) -------------------------------------------------------------------------------- /content/api/hub/template_http_rust.md: -------------------------------------------------------------------------------- 1 | title = "Rust HTTP trigger template" 2 | template = "render_hub_content_body" 3 | date = "2022-10-15T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["rust", "http"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Template" 11 | language = "Rust" 12 | created_at = "2022-10-15T00:22:56Z" 13 | last_updated = "2022-10-15T00:22:56Z" 14 | spin_version = ">v0.2" 15 | summary = "A template to create an HTTP handler in Rust" 16 | url = "https://github.com/spinframework/spin/tree/main/templates/http-rust" 17 | template_id = "http-rust" 18 | repo_url = "https://github.com/spinframework/spin" 19 | keywords = "web app, http, api" 20 | 21 | --- 22 | 23 | This is the default HTTP trigger template for Rust. It installs by default with the [Spin install script](https://spinframework.dev/install#installing-spin). 24 | 25 | This guide walks you through how to use it: [HTTP Components](https://spinframework.dev/rust-components#http-components) -------------------------------------------------------------------------------- /content/api/hub/template_http_ts.md: -------------------------------------------------------------------------------- 1 | title = "TypeScript HTTP trigger template" 2 | template = "render_hub_content_body" 3 | date = "2022-10-15T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["typescript", "http"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Template" 11 | language = "JS/TS" 12 | created_at = "2022-10-15T00:22:56Z" 13 | last_updated = "2022-10-15T00:22:56Z" 14 | spin_version = ">v0.8" 15 | summary = "A template to create an HTTP handler in TypeScript" 16 | url = "https://github.com/spinframework/spin-js-sdk/tree/main/templates/http-ts" 17 | template_id = "http-ts" 18 | repo_url = "https://github.com/spinframework/spin-js-sdk" 19 | keywords = "web app, http, api" 20 | 21 | --- 22 | 23 | This is the default HTTP trigger template for TypeScript. It installs by default with the [Spin install script](https://spinframework.dev/install#installing-spin). 24 | 25 | This guide walks you through how to use it: [HTTP Components](https://spinframework.dev/javascript-components#http-components) -------------------------------------------------------------------------------- /content/api/hub/template_jekyll.md: -------------------------------------------------------------------------------- 1 | title = "Spin Jekyll" 2 | template = "render_hub_content_body" 3 | date = "2024-06-14T04:30:32.000Z" 4 | content-type = "text/html" 5 | tags = ["ruby", "jekyll", "fermyon cloud",] 6 | 7 | [extra] 8 | author = "VamshiReddy02" 9 | type = "hub_document" 10 | category = "Template" 11 | language = "Ruby" 12 | created_at = "2024-06-14T04:30:32.000Z" 13 | last_updated = "2024-06-14T04:30:32.000Z" 14 | spin_version = ">v1.3" 15 | summary = "A template to use Jekyll with Spin" 16 | url = "https://github.com/VamshiReddy02/spin-jekyll" 17 | template_id = "spin-jekyll" 18 | repo_url = "https://github.com/VamshiReddy02/spin-jekyll" 19 | keywords = "html, Jekyll, ruby" 20 | 21 | --- 22 | 23 | This is a template for building and statically exporting your Jekyll application and running it on Spin. 24 | 25 | All you need to do is open the [spin-jekyll](https://github.com/VamshiReddy02/spin-jekyll) repository and click the "Use this template" button. Before you can build your Jekyll application, make sure to install ` jekyll and bundler gems`. You are now ready to start building your front-end. Run `bundle exec jekyll serve` and start editing your application. Alternatively, you can run `spin build` and `spin up` to build and run your application. -------------------------------------------------------------------------------- /content/api/hub/template_nextjs.md: -------------------------------------------------------------------------------- 1 | title = "Spin NextJS" 2 | template = "render_hub_content_body" 3 | date = "2023-07-15T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["javascript", "http"] 6 | 7 | [extra] 8 | author = "radu-matei" 9 | type = "hub_document" 10 | category = "Template" 11 | language = "JS/TS" 12 | created_at = "2022-10-15T00:22:56Z" 13 | last_updated = "2022-10-15T00:22:56Z" 14 | spin_version = ">v0.8" 15 | summary = "A template to use Next.js with Spin" 16 | url = "https://github.com/radu-matei/spin-nextjs" 17 | template_id = "nextjs-frontend" 18 | repo_url = "https://github.com/radu-matei/spin-nextjs" 19 | keywords = "react, next.js, js, javascript, typescript" 20 | 21 | --- 22 | 23 | This is a template for building and statically exporting your Next.js 13 application and running it on Spin. 24 | 25 | This guide walks you through how to use it: [HTTP Components](https://spinframework.dev/javascript-components#http-components) -------------------------------------------------------------------------------- /content/api/hub/template_nuxt.md: -------------------------------------------------------------------------------- 1 | title = "NuxtJS SSG Template" 2 | template = "render_hub_content_body" 3 | date = "2023-12-31T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["javascript", "nuxt", "vue"] 6 | 7 | [extra] 8 | author = "VamshiReddy02" 9 | type = "hub_document" 10 | category = "Template" 11 | language = "JS/TS" 12 | created_at = "2024-01-01T00:22:56Z" 13 | last_updated = "2024-01-01T00:22:56Z" 14 | spin_version = ">v1.3" 15 | summary = "A template to use NuxtJS with Spin" 16 | url = "https://github.com/VamshiReddy02/spin-nuxt" 17 | template_id = "Nuxt" 18 | repo_url = "https://github.com/VamshiReddy02/spin-nuxt" 19 | keywords = "vue, nuxt, js, javascript" 20 | 21 | --- 22 | 23 | This is a template for using [NuxtJS](https://nuxt.com/docs/getting-started/introduction) to create a static webpage. 24 | 25 | Install the template 26 | ```bash 27 | $ spin templates install --upgrade --git https://github.com/VamshiReddy02/spin-nuxt 28 | ``` 29 | 30 | ## Creating and Running 31 | You can create a new Spin app with `spin new` or add to an existing Spin app with `spin add` 32 | 33 | ```bash 34 | $ spin new my-nuxt -t Nuxt 35 | $ cd my-nuxt-app 36 | $ spin build 37 | ``` -------------------------------------------------------------------------------- /content/api/hub/template_qwik_frontend.md: -------------------------------------------------------------------------------- 1 | title = "Spin Qwik Frontend" 2 | template = "render_hub_content_body" 3 | date = "2023-12-06T00:00:00Z" 4 | content-type = "text/html" 5 | tags = ["typescript", "javascript", "http"] 6 | 7 | [extra] 8 | author = "VanVuongNgo" 9 | type = "hub_document" 10 | category = "Template" 11 | language = "JS/TS" 12 | created_at = "2023-09-08T00:00:00Z" 13 | last_updated = "2023-12-06T00:00:00Z" 14 | spin_version = ">v1.4" 15 | summary = "A template to use Qwik with Spin" 16 | url = "https://github.com/vanvuongngo/qwik-wasm" 17 | template_id = "qwik-frontend" 18 | repo_url = "https://github.com/vanvuongngo/qwik-wasm" 19 | keywords = "qwik, html, js, javascript, typescript" 20 | 21 | --- 22 | 23 | This is a template for building and statically exporting your Qwik Frontend application and running it on Spin. 24 | 25 | Demo: [https://qwik.fermyon.app/](https://qwik.fermyon.app/) 26 | 27 | This guide walks you through how to use it: [HTTP Components](https://spinframework.dev/javascript-components#http-components) 28 | -------------------------------------------------------------------------------- /content/api/hub/template_redis_go.md: -------------------------------------------------------------------------------- 1 | title = "Go Redis trigger template" 2 | template = "render_hub_content_body" 3 | date = "2022-10-15T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["go", "redis"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Template" 11 | language = "Go" 12 | created_at = "2022-10-15T00:22:56Z" 13 | last_updated = "2022-10-15T00:22:56Z" 14 | spin_version = ">v0.2" 15 | summary = "A template to create a Go pub-sub handler in Rust" 16 | url = "https://github.com/spinframework/spin/tree/main/templates/redis-go" 17 | template_id = "redis-go" 18 | repo_url = "https://github.com/spinframework/spin" 19 | keywords = "web app, redis" 20 | 21 | --- 22 | 23 | This is the default Redis pub-sub trigger template for Go. It installs by default with the [Spin install script](https://spinframework.dev/install#installing-spin). 24 | 25 | This guide walks you through how to use it: [Redis Components](https://spinframework.dev/go-components#redis-components) -------------------------------------------------------------------------------- /content/api/hub/template_redis_rust.md: -------------------------------------------------------------------------------- 1 | title = "Rust Redis trigger template" 2 | template = "render_hub_content_body" 3 | date = "2022-10-15T00:22:56Z" 4 | content-type = "text/html" 5 | tags = ["rust", "redis"] 6 | 7 | [extra] 8 | author = "fermyon" 9 | type = "hub_document" 10 | category = "Template" 11 | language = "Rust" 12 | created_at = "2022-10-15T00:22:56Z" 13 | last_updated = "2022-10-15T00:22:56Z" 14 | spin_version = ">v0.2" 15 | summary = "A template to create a Redis pub-sub handler in Rust" 16 | url = "https://github.com/spinframework/spin/tree/main/templates/redis-rust" 17 | template_id = "redis-rust" 18 | repo_url = "https://github.com/spinframework/spin" 19 | keywords = "web app, redis" 20 | 21 | --- 22 | 23 | This is the default Redis pub-sub trigger template for Rust. It installs by default with the [Spin install script](https://spinframework.dev/install#installing-spin). 24 | 25 | This guide walks you through how to use it: [Redis Components](https://spinframework.dev/rust-components#redis-components) -------------------------------------------------------------------------------- /content/bartholomew/contributing-docs.md: -------------------------------------------------------------------------------- 1 | title = "Contributing to Docs" 2 | template = "bartholomew_main" 3 | date = "2022-01-01T00:00:01Z" 4 | body_source = "/common/contributing-docs" 5 | [extra] 6 | url = "https://github.com/fermyon/developer/blob/main/content/bartholomew/contributing-docs.md" 7 | keywords = "contribute contributing" 8 | 9 | --- 10 | -------------------------------------------------------------------------------- /content/cloud/changelog.md: -------------------------------------------------------------------------------- 1 | title = "Fermyon Cloud Changelog" 2 | template = "changelog" 3 | date = "2022-01-01T00:00:01Z" 4 | 5 | --- 6 | -------------------------------------------------------------------------------- /content/cloud/changelog/cloud-config.md: -------------------------------------------------------------------------------- 1 | title = "Fermyon Cloud Variables Configuration" 2 | template = "changelog_item" 3 | date = "2023-06-13T07:00:00Z" 4 | enable_shortcodes = true 5 | tags = ["variable"] 6 | [extra] 7 | type= "changelog_post" 8 | --- 9 | 10 | Fermyon Cloud now supports setting application variables through the API. Spin supports dynamic application variables. Instead of being static, their values can be updated without modifying the application, creating a simpler experience for rotating secrets, updating API endpoints, and more. These variables are defined in a Spin application manifest (in the `[variables]` section) and are provided by a configuration provider. 11 | 12 | Now, when your application is deployed to Fermyon Cloud you can set and update variables for it using the `spin cloud variables` command. You can also set the variables when you initially deploy the application using `spin cloud deploy --variables`. The `spin cloud variables` command can also be used to list variables that have been set for an application. For a full explanation of how to configure variables and secrets in Spin applications, read the new [tutorial](../../cloud/variables.md). 13 | 14 | 15 | 16 | References: 17 | 18 | - [Dynamic and Runtime Application Configuration](https://spinframework.dev/dynamic-configuration) 19 | - [Configuring Spin Application Variables and Secrets Tutorial](../variables) 20 | - [cloud-plugin](https://github.com/fermyon/cloud-plugin) -------------------------------------------------------------------------------- /content/cloud/changelog/cloud-custom-domains.md: -------------------------------------------------------------------------------- 1 | title = "Fermyon Cloud Custom Domains" 2 | template = "changelog_item" 3 | date = "2023-07-26T16:00:00Z" 4 | enable_shortcodes = true 5 | tags = ["networking"] 6 | [extra] 7 | type= "changelog_post" 8 | 9 | --- 10 | 11 | Fermyon Cloud is excited to share that it now supports custom domains. Until today, Spin applications were limited to default randomly generated domain names or custom Fermyon subdomains; however, we heard your feedback that custom domains were essential in bringing blogs and personalized websites to Fermyon Cloud. Using a custom domain name with your Spin application can improve your workload's SEO, build brand integrity, and improve discoverability. We encourage developers to bring their custom domains to Fermyon Cloud and assign them to their favorite Spin applications. Slats has already gotten a headstart at [finickywhiskersdiary.com](https://finickywhiskersdiary.com). Please let us know what you think about the feature at feedback@fermyon.com. 12 | 13 | 14 | 15 | 16 | References: 17 | 18 | - [Custom Domains Conceptual Documentation](/cloud/custom-domain) 19 | - [Custom Domains Tutorial](/cloud/custom-domains-tutorial) 20 | - [Fermyon Cloud Pricing](https://www.fermyon.com/pricing) 21 | -------------------------------------------------------------------------------- /content/cloud/changelog/cloud-key-value.md: -------------------------------------------------------------------------------- 1 | title = "Fermyon Cloud Key Value Store" 2 | template = "changelog_item" 3 | date = "2022-04-18T07:00:00Z" 4 | enable_shortcodes = true 5 | tags = ["storage"] 6 | [extra] 7 | type= "changelog_post" 8 | 9 | --- 10 | 11 | Fermyon Cloud now supports [Key Value Store](https://spinframework.dev/kv-store-api-guide). While Spin applications are well suited for event-driven, stateless workloads, these serverless workloads often rely on external services to persist state beyond the lifespan of a single request. With the introduction of [Fermyon Cloud Key Value Store](https://www.fermyon.com/blog/introducing-fermyon-cloud-key-value-store), you can now persist non-relational data in a key/value store that is always available for your serverless application (within milliseconds and without cold starts). No infrastructure provisioning or maintenance is required. Developers can now deploy their Fermyon Cloud Key Value Store applications simply by running `spin cloud deploy`. 12 | 13 | Key Value Store 14 | 15 | 16 | 17 | References: 18 | 19 | - [Spin Key Value API Guide](https://spinframework.dev/kv-store-api-guide) 20 | - [Spin Key Value Tutorial](https://spinframework.dev/key-value-store-tutorial) 21 | - [Introducing Fermyon Cloud Key Store](https://www.fermyon.com/blog/introducing-fermyon-cloud-key-value-store) 22 | - [Cloud Limitations](/cloud/faq) -------------------------------------------------------------------------------- /content/cloud/changelog/cloud-noops-sql-db.md: -------------------------------------------------------------------------------- 1 | title = "Fermyon Cloud SQLite Database" 2 | template = "changelog_item" 3 | date = "2023-07-26T16:00:00Z" 4 | enable_shortcodes = true 5 | tags = ["storage"] 6 | [extra] 7 | type= "changelog_post" 8 | 9 | --- 10 | 11 | Spin developers can now persist relational data generated by their Spin application in a database that is provisioned and managed entirely by Fermyon Cloud on their behalf. No need to worry about database operations, connection strings, or resource management with Fermyon Cloud's SQLite Database; we've got you covered. 12 | 13 | 14 | 15 | References: 16 | 17 | - [SQLite Database Documentation](/cloud/noops-sql-db) 18 | - [SQLite Database Blog Post](https://www.fermyon.com/blog/announcing-noops-sql-db) 19 | - [Discord Channel](https://www.fermyon.com/discord) 20 | - [Spin's SQLite Database Storage API](https://spinframework.dev/sqlite-api-guide.md) 21 | -------------------------------------------------------------------------------- /content/cloud/changelog/custom-fermyon-subdomain.md: -------------------------------------------------------------------------------- 1 | title = "Custom Fermyon Subdomains" 2 | template = "changelog_item" 3 | date = "2022-04-25T07:00:00Z" 4 | enable_shortcodes = true 5 | tags = ["networking"] 6 | [extra] 7 | type= "changelog_post" 8 | twitter_card_type = "summary_large_image" 9 | image = "/static/image/twc-custom-subdomains-in-cloud.jpg" 10 | 11 | --- 12 | 13 | Fermyon Cloud users can now apply custom Fermyon subdomains to their Spin applications. By default, every Spin application recieves a domain name that has the following format: `-.fermyon.app`. With custom Fermyon subdomains, users can choose their preferred subdomain name to be appended to the `.fermyon.app` apex domain. To learn more, follow the [custom Fermyon subdomain tutorial](/cloud/custom-fermyon-subdomain). 14 | 15 | Custom Fermyon Subdomains 16 | 17 | 18 | 19 | References: 20 | 21 | - [Custom Fermyon Subdomain Tutorial](/cloud/custom-fermyon-subdomain) 22 | - [Cloud Limitations](/cloud/faq) 23 | -------------------------------------------------------------------------------- /content/cloud/changelog/gh-actions-spin-deploy.md: -------------------------------------------------------------------------------- 1 | title = "GitHub Action support for spin/deploy" 2 | template = "changelog_item" 3 | date = "2022-03-30T00:22:56Z" 4 | enable_shortcodes = true 5 | tags = ["CI/CD"] 6 | [extra] 7 | type= "changelog_post" 8 | --- 9 | 10 | Fermyon has recently released a collection of [GitHub Actions](https://github.com/fermyon/actions) for working with Spin that will empower you to pick up your development speed: 11 | 12 | - `fermyon/actions/spin/setup` - installs the Spin CLI and necessary plugins 13 | - `fermyon/actions/spin/push` - pushes a Spin application to a registry 14 | - `fermyon/actions/spin/deploy` - deploys a Spin application to Fermyon Cloud 15 | 16 | Using `spin/deploy`, you can now set up a Continuous Deployment pipeline on Fermyon Cloud. Whenever you merge a pull request into your GitHub repository of choice, `spin/deploy` will trigger a new Spin application deployment. You can learn more about the set-up for this process with our [GitHub Actions tutorial](/cloud/github-actions). 17 | 18 | GitHub Actions 19 | 20 | 21 | 22 | References: 23 | 24 | - Blog post: [https://www.fermyon.com/blog/github-actions-and-metrics-fermyon-cloud](https://www.fermyon.com/blog/github-actions-and-metrics-fermyon-cloud) 25 | - Twitter: [https://twitter.com/fermyontech/status/1641537393818738710](https://twitter.com/fermyontech/status/1641537393818738710) -------------------------------------------------------------------------------- /content/cloud/changelog/request-metrics-in-cloud.md: -------------------------------------------------------------------------------- 1 | title = "Request count metrics available in Cloud UI" 2 | template = "changelog_item" 3 | date = "2022-03-30T00:23:56Z" 4 | enable_shortcodes = true 5 | tags = ["observability"] 6 | [extra] 7 | type= "changelog_post" 8 | --- 9 | 10 | You can now see your Spin application’s request count over time in the Fermyon Cloud User Interface (UI). Request count is defined as the number of times your Spin application’s [HTTP trigger](https://spinframework.dev/http-trigger) has been called while running on Fermyon Cloud. To view an Spin application’s request count data over time, log into Fermyon Cloud and click on the application of interest. Feel free to reach out to us on [Discord](https://discord.gg/AAFNfS7NGf) and let us know what you think. 11 | 12 | Demo of request count metrics in Fermyon Cloud. 13 | 14 | 15 | 16 | References: 17 | 18 | - Blog post: [https://www.fermyon.com/blog/github-actions-and-metrics-fermyon-cloud](https://www.fermyon.com/blog/github-actions-and-metrics-fermyon-cloud) 19 | - Twitter: [https://twitter.com/fermyontech/status/1641537393818738710](https://twitter.com/fermyontech/status/1641537393818738710) -------------------------------------------------------------------------------- /content/cloud/changelog/serverless-ai-open-beta.md: -------------------------------------------------------------------------------- 1 | title = "Fermyon Cloud Serverless AI Open Beta" 2 | template = "changelog_item" 3 | date = "2023-11-06T06:00:00Z" 4 | enable_shortcodes = true 5 | tags = ["ai"] 6 | [extra] 7 | type= "changelog_post" 8 | twitter_card_type = "summary_large_image" 9 | image = "/static/image/twc-open-beta-serverlesss-ai.jpg" 10 | 11 | --- 12 | 13 | Fermyon Cloud now supports Serverless AI in open beta! This means Starter, Growth, and Enterprise plan users can all access serverless AI, no sign-up required. We're looking forward to hearing your feedback. Let us know what you think on [Discord](https://discord.com/invite/AAFNfS7NGf) or on our [GitHub feedback repo](https://github.com/fermyon/feedback). 14 | 15 | To review quotas and FAQs, please visit [Fermyon Cloud FAQ documentation.](../../cloud/faq) 16 | 17 | Serverless AI Open Beta 18 | 19 | 20 | 21 | References: 22 | 23 | - [Serverless AI API Guide](https://spinframework.dev/v2/serverless-ai-api-guide) 24 | - [Serverless AI Tutorial](https://spinframework.dev/v2/serverless-ai-hello-world.md) 25 | - [`spin cloud GPU` plugin](../../api/hub/preview/plugin_spin_cloud_gpu) -------------------------------------------------------------------------------- /content/cloud/changelog/serverless-ai.md: -------------------------------------------------------------------------------- 1 | title = "Fermyon Serverless AI (Private Beta)" 2 | template = "changelog_item" 3 | date = "2023-09-05T09:00:00Z" 4 | enable_shortcodes = true 5 | tags = ["ai"] 6 | [extra] 7 | type= "changelog_post" 8 | twitter_card_type = "summary_large_image" 9 | image = "/static/changelog/fermyon-severless-ai-twitter-card.jpg" 10 | 11 | --- 12 | 13 | We're thrilled to announce that [Fermyon Serverless AI](/cloud/serverless-ai) is in private beta. Developers can now [use Spin to perform AI inferencing and embedding](https://spinframework.dev/ai-sentiment-analysis-api-tutorial) from within serverless Spin applications (that are either running locally or deployed to Fermyon Cloud). You can sign up for the private beta using [this short form](https://fibsu0jcu2g.typeform.com/to/mNzgXRvB). 14 | 15 | Custom Fermyon Subdomains 16 | 17 | 18 | 19 | References: 20 | 21 | - [Fermyon Serverless AI (Private Beta) Documentation](/cloud/serverless-ai.md) 22 | - [Serverless AI (Private Beta) Blog Post](https://www.fermyon.com/blog/introducing-fermyon-serverless-ai) 23 | - [Discord Channel](https://www.fermyon.com/discord) 24 | - [Spin's Serverless API](https://spinframework.dev/serverless-ai-api-guide.md) 25 | -------------------------------------------------------------------------------- /content/cloud/changelog/spin-cloud-v0-5-1.md: -------------------------------------------------------------------------------- 1 | title = "Spin Cloud v0.5.1 Patch Update" 2 | template = "changelog_item" 3 | date = "2023-11-13T12:00:00Z" 4 | enable_shortcodes = true 5 | tags = ["spin_cloud_plugin"] 6 | [extra] 7 | type= "changelog_post" 8 | 9 | --- 10 | 11 | ## Spin Cloud v0.5.1 Patch Update 12 | 13 | Fermyon recently released `spin cloud` v0.5.1 patch update to fix an issue introduced in v0.5.0 where `allowed_http_hosts` behaves unexpectedly (allow-listed domains were still not reachable). This issue has been fixed in this latest patch update. To upgrade your `spin cloud` plugin, please using the following command: 14 | 15 | ```bash 16 | spin plugins upgrade cloud 17 | ``` 18 | 19 | If you encounter any issues or have questions during the upgrade process, please don't hesitate to reach out to our [Discord #cloud channel](https://discord.com/channels/926888690310053918/1024646765149950022). 20 | 21 | **References** 22 | 23 | - [Spin 2.0 blog post](https://www.fermyon.com/blog/index) 24 | - [Spin 2.0 quickstart guide](https://spinframework.dev/v2/quickstart) 25 | - [Spin Cloud Plugin Reference Documentation](/cloud/cloud-command-reference) 26 | - [Using Spin to Make HTTP Requests](https://spinframework.dev/v2/http-outbound) 27 | -------------------------------------------------------------------------------- /content/cloud/contributing-docs.md: -------------------------------------------------------------------------------- 1 | title = "Contributing to Docs" 2 | template = "cloud_main" 3 | date = "2022-01-01T00:00:01Z" 4 | body_source = "/common/contributing-docs" 5 | 6 | [extra] 7 | url = "https://github.com/fermyon/developer/blob/main/content/cloud/contributing-docs.md" 8 | keywords = "contribute contributing" 9 | 10 | --- 11 | -------------------------------------------------------------------------------- /content/cloud/rest-api.md: -------------------------------------------------------------------------------- 1 | title = "Rest API" 2 | template = "cloud_main" 3 | date = "2022-01-01T00:00:01Z" 4 | [extra] 5 | url = "https://github.com/fermyon/developer/blob/main/content/cloud/rest-api.md" 6 | 7 | --- 8 | - [OpenAPI](#openapi) 9 | - [Rust Client](#rust-client) 10 | - [Documenting the Fermyon Cloud API](#documenting-the-fermyon-cloud-api) 11 | - [Related Resources](#related-resources) 12 | 13 | ## OpenAPI 14 | 15 | The [Fermyon Cloud OpenAPI](https://github.com/fermyon/cloud-openapi) project contains automatically generated client libraries for use with the Fermyon Cloud. 16 | 17 | ## Rust Client 18 | 19 | To use [the Rust client](https://github.com/fermyon/cloud-openapi/tree/main/clients/rust), go ahead and add a reference to the Fermyon Cloud OpenAPI in your project’s `Cargo.toml` file, as shown below: 20 | 21 | ```toml 22 | cloud-openapi = { git = "https://github.com/fermyon/cloud-openapi" } 23 | ``` 24 | 25 | ## Documenting the Fermyon Cloud API 26 | 27 | The documentation for each client library is automatically generated and is available in the [project's Github repository](https://github.com/fermyon/cloud-openapi/tree/main). 28 | 29 | ## Related Resources 30 | 31 | - [OpenAPI Generator](https://openapi-generator.tech/) 32 | - [OpenAPI Spec](https://www.openapis.org/) -------------------------------------------------------------------------------- /content/cloud/upgrade.md: -------------------------------------------------------------------------------- 1 | title = "Upgrade an Application" 2 | template = "cloud_main" 3 | date = "2022-03-14T00:22:56Z" 4 | enable_shortcodes = true 5 | [extra] 6 | url = "https://github.com/fermyon/developer/blob/main/content/cloud/upgrade.md" 7 | 8 | --- 9 | - [Upgrade Your Application](#upgrade-your-application) 10 | - [Next Steps](#next-steps) 11 | 12 | Upgrading your application is as simple as redeploying after you've made changes to your application code or version. 13 | 14 | ## Upgrade Your Application 15 | 16 | When upgrading a Spin application running in the Fermyon Cloud, you may wish to change the version of your application 17 | when code changes have been made. This is an optional step. 18 | 19 | 1. Open the `spin.toml` file. In the file, you’ll find this line of code for the version: 20 | 21 | 22 | 23 | ```toml 24 | version = "0.1.0" 25 | ``` 26 | 27 | In this case, we're changing the version from `0.1.0` to `0.1.1`: 28 | 29 | 30 | 31 | ```toml 32 | version = "0.1.1" 33 | ``` 34 | 35 | Whether you've just updated your application code or also bumped the version, you can now deploy the upgraded version 36 | of your application by running this command: 37 | 38 | 39 | 40 | ```bash 41 | $ spin deploy 42 | ``` 43 | 44 | That’s how to upgrade a Spin Application, just as simple as that! 45 | 46 | ## Next Steps 47 | 48 | - [Delete an application](delete) 49 | - Find known issues and file new ones with this [GitHub repository](https://github.com/fermyon/feedback) 50 | -------------------------------------------------------------------------------- /content/events/2024-kubecon-cloudbrew.md: -------------------------------------------------------------------------------- 1 | title = "Cloudbrew 2024" 2 | date = "2024-06-11T00:00:01Z" 3 | description = "Come and catch the talk by our cloud advocate Thorsten Hans' titled \"Containers and WebAssembly: Orchestrating Distributed Applications with .NET Aspire\"." 4 | 5 | [extra] 6 | type = "event" 7 | eventdates = "Dec 12 - 13 2024" 8 | eventexpires = "2024-12-14T01:01:01Z" 9 | url = "https://www.cloudbrew.be/#session-containers-and-webassembly-orchestrating-distributed-applications-with-net-aspire" 10 | image = "static/image/avatar.png" 11 | 12 | --- 13 | -------------------------------------------------------------------------------- /content/events/2025-cloud-rejekts.md: -------------------------------------------------------------------------------- 1 | title = "Cloud Rejekts 2025" 2 | date = "2025-03-11T00:00:01Z" 3 | description = "Ahead of KubeCon EU 2025 in London, the b-side conference giving a second chance to the many wonderful talks." 4 | 5 | [extra] 6 | type = "event" 7 | eventdates = "Mar 30 - 31" 8 | eventexpires = "2025-04-01T01:01:01Z" 9 | url = "https://cloud-native.rejekts.io/" 10 | image = "static/image/avatar.png" 11 | 12 | --- 13 | -------------------------------------------------------------------------------- /content/events/2025-google-cloud-next.md: -------------------------------------------------------------------------------- 1 | title = "Google Cloud Next 2025" 2 | date = "2025-03-11T00:00:01Z" 3 | description = "Fermyon will be at Google Cloud Next - to reveal something we've been working on." 4 | 5 | [extra] 6 | type = "event" 7 | eventdates = "Apr 9 - 11" 8 | eventexpires = "2025-05-12T01:01:01Z" 9 | url = "https://cloud.withgoogle.com/next/25" 10 | image = "static/image/avatar.png" 11 | 12 | --- 13 | -------------------------------------------------------------------------------- /content/events/2025-kubecon-eu-25.md: -------------------------------------------------------------------------------- 1 | title = "KubeCon + CloudNativeCon EU" 2 | date = "2025-03-11T00:00:01Z" 3 | description = "Fermyon are silver sponsors at KubeCon in London - come visit us at booth N500 or catch our talks and demos." 4 | 5 | [extra] 6 | type = "event" 7 | eventdates = "Apr 1 - 4" 8 | eventexpires = "2025-04-05T01:01:01Z" 9 | url = "https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/" 10 | image = "static/image/avatar.png" 11 | 12 | --- 13 | -------------------------------------------------------------------------------- /content/events/2025-nab-show.md: -------------------------------------------------------------------------------- 1 | title = "NAB Show 2025" 2 | date = "2025-03-11T00:00:01Z" 3 | description = "Fermyon's team will be at the NAB Show in Las Vegas." 4 | 5 | [extra] 6 | type = "event" 7 | eventdates = "Apr 6 - 9" 8 | eventexpires = "2025-04-10T01:01:01Z" 9 | url = "https://www.nabshow.com/" 10 | image = "static/image/avatar.png" 11 | 12 | --- 13 | -------------------------------------------------------------------------------- /content/events/2025-wasmio-barcelona.md: -------------------------------------------------------------------------------- 1 | title = "Wasm I/O 2025" 2 | date = "2025-03-11T00:00:01Z" 3 | description = "Fermyon are excited to be platinum sponsors at this years' conference in Barcelona." 4 | 5 | [extra] 6 | type = "event" 7 | eventdates = "Mar 27 - 28" 8 | eventexpires = "2025-03-30T01:01:01Z" 9 | url = "https://wasm.io/" 10 | image = "static/image/avatar.png" 11 | 12 | --- 13 | -------------------------------------------------------------------------------- /content/googleea373cbb8f1dde18.md: -------------------------------------------------------------------------------- 1 | title = "Google Verification" 2 | description = "Google verification file which provides us with access to Google Search Console" 3 | date = "2023-03-01T00:01:01Z" 4 | template = "google_verification" 5 | content_type = "text/html" 6 | --- 7 | 8 | This is the googleea373cbb8f1dde18.html file that Google can see openly at the root of the website. -------------------------------------------------------------------------------- /content/index.md: -------------------------------------------------------------------------------- 1 | title = "Fermyon Developer" 2 | template = "home" 3 | date = "2022-10-15T00:22:56Z" 4 | enable_shortcodes = true 5 | --- 6 | 7 | ### Start Building 8 | 9 |

The Spin Hub is an open library of templates, plugins and resources to help you create powerful apps, fast.

10 | 11 | {{suh_cards}} 12 | {{card_element "sample" "Next.js React App" "An app template for running Next.js as a Wasm app with Spin." "https://developer.fermyon.com/hub/preview/template_nextjs" "JS,Next,http" true }} 13 | {{card_element "template" "Zola Website Template" "A Spin starter blog for the Zola framework, which runs a fast static website." "https://developer.fermyon.com/hub/preview/template_zola_ssg" "rust,web" true }} 14 | {{card_element "sample" "Sentiment Analysis AI App" "An example Spin app using the Llama2Chat model, with a simple UI, API and key value store." "https://github.com/fermyon/ai-examples/tree/main" "TS,UI,AI" true }} 15 | {{blockEnd}} -------------------------------------------------------------------------------- /content/robots.md: -------------------------------------------------------------------------------- 1 | title = "robots.txt" 2 | description = "This is the robots.txt file" 3 | date = "2022-10-17T15:20:44.860491343Z" 4 | template = "robots" 5 | content_type = "text/plain" 6 | 7 | --- 8 | 9 | This is the robots.txt file. It is autogenerated. -------------------------------------------------------------------------------- /content/sitemap.md: -------------------------------------------------------------------------------- 1 | title = "Sitemap XML file" 2 | description = "This is the sitemap.xml file" 3 | date = "2021-12-29T22:36:33Z" 4 | template = "sitemap" 5 | content_type = "text/xml" 6 | 7 | --- 8 | 9 | This is the autogenerated sitemap. Note that the suffix .xml is replaced with .md by Bartholomew. -------------------------------------------------------------------------------- /content/wasm-functions/changelog.md: -------------------------------------------------------------------------------- 1 | title = "Fermyon Wasm Functions Changelog" 2 | template = "changelog_fwf" 3 | date = "2022-01-01T00:00:01Z" 4 | 5 | --- 6 | -------------------------------------------------------------------------------- /content/wasm-functions/contributing-docs.md: -------------------------------------------------------------------------------- 1 | title = "Contributing to Docs" 2 | template = "functions_main" 3 | date = "2022-01-01T00:00:01Z" 4 | body_source = "/common/contributing-docs" 5 | 6 | [extra] 7 | url = "https://github.com/fermyon/developer/blob/main/content/wasm-functions/contributing-docs.md" 8 | keywords = "contribute contributing" 9 | 10 | --- 11 | -------------------------------------------------------------------------------- /content/wasm-functions/jwt-scenario.md: -------------------------------------------------------------------------------- 1 | title = "JWT Token Validation with Wasm Functions" 2 | template = "functions_main" 3 | date = "2022-03-14T00:22:56Z" 4 | enable_shortcodes = true 5 | [extra] 6 | url = "https://github.com/fermyon/developer/blob/main/content/wasm-functions/jwd-scenario.md" 7 | 8 | --- 9 | - [Prerequisites](#prerequisites) 10 | 11 | In this tutorial, we demonstrate how to offload JWT token validation to a Spin App running on Fermyon Wasm Functions. We'll take clients request tokens from an OAuth 2.0/OpenID-compliant Identity Provider and then send them as an Authorization header to an EdgeWorker. The EdgeWorker forwards the token to the Spin App for validation, which returns a 200 HTTP status for valid tokens or a 401 for invalid ones, with detailed feedback. This process happens early in the EdgeWorker's onClientRequest phase, ensuring fast and efficient validation thanks to the Spin applications running on Fermyon Wasm Functions. Let's take a look at how this works in action! 12 | 13 | >> Remaining coming soon! Meantime visit the [JWT Validation](https://github.com/fermyon/a3000-usecases/blob/main/family-1/jwt-validation.md) example in GitHub 14 | -------------------------------------------------------------------------------- /content/wasm-functions/old-api-orchestration.md: -------------------------------------------------------------------------------- 1 | title = "API Orchestration with Wasm Functions" 2 | template = "functions_main" 3 | date = "2022-03-14T00:22:56Z" 4 | enable_shortcodes = true 5 | [extra] 6 | url = "https://github.com/fermyon/developer/blob/main/content/wasm-functions/jwd-scenario.md" 7 | 8 | --- 9 | - [Prerequisites](#prerequisites) 10 | 11 | >> Coming soon! Meantime visit the [API Orchestration](https://github.com/fermyon/a3000-usecases/blob/main/family-1/api-orchestration.md) example in GitHub -------------------------------------------------------------------------------- /content/wasm-functions/pricing-and-billing.md: -------------------------------------------------------------------------------- 1 | title = "Pricing Plans and Billing" 2 | template = "functions_main" 3 | date = "2023-06-20T00:14:00Z" 4 | enable_shortcodes = true 5 | [extra] 6 | url = "https://github.com/fermyon/developer/blob/main/content/wasm-functions/pricing-and-billing.md" 7 | 8 | --- 9 | 10 | ## Fermyon Wasm Functions Pricing 11 | 12 | >> Coming Soon! -------------------------------------------------------------------------------- /content/wasm-functions/support.md: -------------------------------------------------------------------------------- 1 | title = "Support" 2 | template = "functions_main" 3 | date = "2025-01-22T00:00:00Z" 4 | [extra] 5 | url = "https://github.com/fermyon/developer/blob/main/content/wasm-functions/support.md" 6 | keywords = "abuse security concern" 7 | 8 | --- 9 | 10 | #### We're Here To Help 11 | 12 | For assistance with issues, please reach out to customer support ([contact information and hours of operation here](https://www.fermyon.com/contact)). 13 | 14 | Otherwise, the [Fermyon Discord](https://discord.gg/AAFNfS7NGf) is a great place to join in community discussions about Fermyon Wasm Functions and related topics. -------------------------------------------------------------------------------- /content/wasm-languages/lisp.md: -------------------------------------------------------------------------------- 1 | date = "2024-02-18T01:01:01Z" 2 | title = "Lisp in WebAssembly" 3 | description = "Lisp can be compiled to WebAssembly." 4 | tags = ["language", "webassembly"] 5 | template = "page_lang" 6 | [extra] 7 | author = "Fermyon Staff" 8 | url = "https://github.com/fermyon/developer/blob/main/content/wasm-languages/lisp.md" 9 | 10 | --- 11 | 12 | The famous functional programming language Lisp has some interesting properties that has intrigued developers. A few projects are work-in-progress ports of Lisp in WebAssembly. Nothing appears to be production-ready yet, but the progress is promising. 13 | 14 | ## Uses 15 | 16 | Currently, environments are mainly for R&D usage, and are not entirely complete for either in-browser or out-of-browser usage. 17 | 18 | ## Available Implementations 19 | 20 | The [Wisp project][https://github.com/mbrock/wisp] is a Lisp-to-Wasm compiler that is currently being (re-)written in [Zig](/wasm-languages/zig). 21 | 22 | ## Learn More 23 | 24 | Here are some great resources: 25 | 26 | - The [Wisp project](https://github.com/mbrock/wisp) is making steady progress 27 | - Wisp appears to be part of a [larger project](https://github.com/nodfur/os) 28 | - [Wasm-Lisp](https://github.com/rolfrm/wasm-lisp) is not as actively maintained, and did not (as far as we know) implement the entire compiler. -------------------------------------------------------------------------------- /content/wasm-languages/objective-c.md: -------------------------------------------------------------------------------- 1 | date = "2024-02-18T01:01:01Z" 2 | title = "Objective-C in WebAssembly" 3 | description = "Apple may be working on Objective-C to Wasm compilation." 4 | tags = ["objective-c", "webassembly"] 5 | template = "page_lang" 6 | [extra] 7 | author = "Fermyon Staff" 8 | url = "https://github.com/fermyon/developer/blob/main/content/wasm-languages/objective-c.md" 9 | 10 | --- 11 | 12 | It seems like Objective-C to WebAssembly should be possible in no small part because of LLVM. 13 | However, we haven't tracked down any examples or implementations. 14 | 15 | Apple is hinting that not only do they have such a tool, but they use it in their apps. 16 | 17 | According to [this tweet](https://twitter.com/lrz/status/1250453967957561344?s=20): 18 | 19 | > What have I been working on lately? Just a few days ago, iWork 10.0 shipped with iCloud apps that now include features extracted from the native codebase (C++/ObjC), using WebAssembly! 20 | 21 | (See the rest of the thread for more info.) 22 | -------------------------------------------------------------------------------- /content/wasm-languages/powershell.md: -------------------------------------------------------------------------------- 1 | date = "2024-02-18T01:01:01Z" 2 | title = "PowerShell and WebAssembly" 3 | description = "PowerShell cannot be compiled to WebAssembly." 4 | tags = ["powershell", "webassembly"] 5 | template = "page_lang" 6 | [extra] 7 | author = "Fermyon Staff" 8 | url = "https://github.com/fermyon/developer/blob/main/content/wasm-languages/powershell.md" 9 | 10 | --- 11 | 12 | PowerShell is consistently ranked among the top programming languages. 13 | However, it is not generally considered to be a general-purpose language like [C](./c-lang.md) or [Python](./python.md). 14 | So we were a little surprised to find at least some information about PowerShell and WebAssembly. 15 | 16 | Most of it stems from the fact that the Blazor WebAssembly framework frequently uses PowerShell [in the examples](https://stackshare.io/stackups/powershell-vs-webassembly). 17 | 18 | We think it is unlikely that PowerShell will ever be compiled to WebAssembly. 19 | 20 | ## Learn More 21 | 22 | Here are some great resources: 23 | 24 | - A comparison of [PowerShell and WebAssembly](https://stackshare.io/stackups/powershell-vs-webassembly), though it is probably autogenerated and wasn't particularly insightful. -------------------------------------------------------------------------------- /content/wasm-languages/scala.md: -------------------------------------------------------------------------------- 1 | date = "2024-02-18T01:01:01Z" 2 | title = "Scala in WebAssembly" 3 | description = "Scala native can be compiled to WebAssembly with a somewhat lengthy process. Some Java tools work for compiling Scala to WebAssembly, too." 4 | tags = ["scala", "java", "kotlin", "webassembly"] 5 | template = "page_lang" 6 | [extra] 7 | author = "Fermyon Staff" 8 | url = "https://github.com/fermyon/developer/blob/main/content/wasm-languages/scala.md" 9 | 10 | --- 11 | 12 | Like Kotlin, Scala began as a JVM-specific language and has moved toward other backends like LLVM. 13 | Therefore, there are two paths for compiling Scala to WebAssembly: 14 | 15 | 1. Use Java tools to compile Scala/bytecode to WebAssembly 16 | 2. Use Scala Native toolchains to compile Scala to WebAssembly 17 | 18 | If you are interested in the first way, we cover several tools in the [Java section](/wasm-languages/java). 19 | Here, we'll look at the case for Scala Native. 20 | 21 | Thus far, the only hint we have seen of someone compiling Scala Native to WebAssembly is this [GitHub repository](https://github.com/shadaj/scala-native-wasm). 22 | -------------------------------------------------------------------------------- /content/wasm-languages/typescript.md: -------------------------------------------------------------------------------- 1 | date = "2024-02-18T01:01:01Z" 2 | title = "Typescript in WebAssembly" 3 | description = "TypeScript can be converted to JavaScript, and JS tools can be used to build Wasm binaries." 4 | tags = ["typescript", "javascript", "webassembly"] 5 | template = "page_lang" 6 | [extra] 7 | author = "Fermyon Staff" 8 | url = "https://github.com/fermyon/developer/blob/main/content/wasm-languages/typescript.md" 9 | 10 | --- 11 | 12 | TypeScript is a popular language in its own right, but it is a very near relative of JavaScript. 13 | In fact, most of the time, TS code is converted to JavaScript during the development cycle. 14 | As such, the best approach to using TypeScript in WebAssembly is to convert it and [use JavaScript tools](/wasm-languages/javascript). 15 | 16 | Another potential solution is to [use AssemblyScript](/wasm-languages/assemblyscript), a subset of TypeScript tooled specifically for WebAssembly. 17 | 18 | ## Learn More 19 | 20 | Here are some great resources: 21 | 22 | - A [detailed post](https://blog.bitsrc.io/typescript-to-webassembly-the-what-the-how-and-the-why-3916a2561d37) on moving from TypeScript to AssemblyScript -------------------------------------------------------------------------------- /deploy/README.md: -------------------------------------------------------------------------------- 1 | # Deployments 2 | 3 | The [Developer](https://developer.fermyon.com) website is deployed via the [deploy.yml](../.github/workflows/deploy.yml) GitHub workflow. 4 | 5 | ## Auto Deploys 6 | 7 | The production version of the website is deployed whenever commits are pushed to the `main` branch. 8 | 9 | ## Manual Deploys 10 | 11 | Deployments may also be [triggered manually](https://github.com/fermyon/developer/actions/workflows/deploy.yml), providing a choice of git 12 | `ref` and `commit`. 13 | 14 | ## Nomad job 15 | 16 | We currently deploy the website via its Nomad job directly. (In the future, we envision running the website as a Fermyon Cloud app.) 17 | 18 | The [fermyon-developer](./fermyon-developer.nomad) Nomad job contains configuration for the running website, including the OCI reference to run from. 19 | -------------------------------------------------------------------------------- /modules/bartholomew.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/modules/bartholomew.wasm -------------------------------------------------------------------------------- /modules/redirect.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/modules/redirect.wasm -------------------------------------------------------------------------------- /modules/spin_static_fs.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/modules/spin_static_fs.wasm -------------------------------------------------------------------------------- /scripts/active_content.rhai: -------------------------------------------------------------------------------- 1 | let string = params[0]; 2 | let project = params[1]; 3 | 4 | if string == project { 5 | return true 6 | } 7 | 8 | return false -------------------------------------------------------------------------------- /scripts/active_project.rhai: -------------------------------------------------------------------------------- 1 | let string = params[0]; 2 | let project = params[1]; 3 | 4 | if string.contains(project) { 5 | return true 6 | } 7 | 8 | return false -------------------------------------------------------------------------------- /scripts/cloud.rhai: -------------------------------------------------------------------------------- 1 | // This function lists all of the pages, subject to the constraints. 2 | // 3 | // It returns an array of objects of the form: 4 | // [ 5 | // #{ 6 | // uri: "path/to/page", 7 | // page: { 8 | // head: {title: "some title", description: "Some description", ...} 9 | // body: "This is the HTML" 10 | // } 11 | // } 12 | // ] 13 | // 14 | // The array is sorted with the earlier items being most recent, and the oldest items at the end. 15 | 16 | // Param 1 should be `site.pages` 17 | let pages = params[0]; 18 | 19 | // Loop through them and return all of the page objects that are in the specified path. 20 | let cloud_pages = []; 21 | 22 | // Get each page, assigning it to {path: object}. 23 | let keys = pages.keys(); 24 | for item in keys { 25 | if item.index_of("/content/cloud/") == 0 { 26 | // Remove /content and .md 27 | let path = item.sub_string(8); 28 | let page = pages[item]; 29 | path = path.sub_string(0, path.index_of(".md")); 30 | 31 | cloud_pages.push(#{ 32 | uri: path, 33 | page: page, 34 | // The template to use for these pages 35 | template: "cloud_main", 36 | }); 37 | } 38 | 39 | } 40 | 41 | cloud_pages 42 | -------------------------------------------------------------------------------- /scripts/content_filter.rhai: -------------------------------------------------------------------------------- 1 | // Param 1 should be `site.pages` 2 | // Param 2 should be a string that provides the path of the folder 3 | // Param 2 should be a string that identifies the type of content 4 | let pages = params[0]; 5 | let content_identifier = params[1]; 6 | let content_type = params[2]; 7 | 8 | let content_pages = []; 9 | 10 | // Get each news post, assigning it to {path: object}. 11 | let keys = pages.keys(); 12 | for item in keys { 13 | if item.index_of(content_identifier) == 0 && pages[item].head.extra.type == content_type { 14 | // Remove /content and .md 15 | let path = item.sub_string(8); 16 | let page = pages[item]; 17 | path = path.sub_string(0, path.index_of(".md")); 18 | 19 | content_pages.push(#{ 20 | uri: path, 21 | page: page, 22 | template: "news-item", 23 | }); 24 | //news_pages[path] = pages[item]; 25 | } 26 | 27 | } 28 | 29 | // Return the news items sorted newest to oldest 30 | fn sort_by_date(a, b) { 31 | if a.page.head.date < b.page.head.date { 32 | 1 33 | } else { 34 | -1 35 | } 36 | } 37 | 38 | // Sort by the value of the page date. 39 | content_pages.sort(Fn("sort_by_date")); 40 | 41 | content_pages -------------------------------------------------------------------------------- /scripts/replace.rhai: -------------------------------------------------------------------------------- 1 | let url = params[0]; 2 | let source = params[1]; 3 | let target = params[2]; 4 | 5 | url.replace(source, target); 6 | 7 | url -------------------------------------------------------------------------------- /scripts/timed_publish.rhai: -------------------------------------------------------------------------------- 1 | let time = params[0]; 2 | let preview = params[1]; 3 | 4 | console_println("This is the value"); 5 | console_println(preview); 6 | 7 | if (preview == "1") { 8 | return true; 9 | } 10 | 11 | if (current_date() > time ) { 12 | return true; 13 | } 14 | 15 | return false; -------------------------------------------------------------------------------- /scripts/truncate_post.rhai: -------------------------------------------------------------------------------- 1 | let text = params[0]; 2 | let pattern = ""; 3 | 4 | let i = text.index_of(pattern); 5 | if i == -1 { 6 | text 7 | } else { 8 | text.sub_string(0, i) 9 | } -------------------------------------------------------------------------------- /shortcodes/blockEnd.rhai: -------------------------------------------------------------------------------- 1 | return ``; -------------------------------------------------------------------------------- /shortcodes/card_element.rhai: -------------------------------------------------------------------------------- 1 | let type = params[0]; 2 | let title = params[1]; 3 | let summary = params[2]; 4 | let url = params[3]; 5 | let tags = params[4]; 6 | let deployable = params[5]; 7 | 8 | let tag_array = tags.split(","); 9 | 10 | let tagString = ""; 11 | 12 | for(item, count) in tag_array { 13 | tagString += `${item}` 14 | } 15 | 16 | let cloud = ""; 17 | if (deployable == true) { 18 | cloud = `Cloud`; 19 | } 20 | 21 | return ``; -------------------------------------------------------------------------------- /shortcodes/details.rhai: -------------------------------------------------------------------------------- 1 | let summary = params[0]; 2 | let content = params[1]; 3 | 4 | ` 5 |
6 | 7 | ` + summary + ` 8 |
9 | 10 |
11 |
12 |
13 | 14 | ` + content + ` 15 | 16 |
17 |
18 | 19 |
20 |
21 | ` -------------------------------------------------------------------------------- /shortcodes/startTab.rhai: -------------------------------------------------------------------------------- 1 | let tabName = params[0]; 2 | 3 | return `
`; -------------------------------------------------------------------------------- /shortcodes/suh_cards.rhai: -------------------------------------------------------------------------------- 1 | return `
`; -------------------------------------------------------------------------------- /shortcodes/tabs.rhai: -------------------------------------------------------------------------------- 1 | let class = params[0]; 2 | 3 | return `
`; -------------------------------------------------------------------------------- /spin-up-hub/.env.development: -------------------------------------------------------------------------------- 1 | VITE_API_HOST="http://localhost:3000" -------------------------------------------------------------------------------- /spin-up-hub/.env.production: -------------------------------------------------------------------------------- 1 | VITE_API_HOST="" -------------------------------------------------------------------------------- /spin-up-hub/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "spin-up-hub", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build --base=\"/hub\"", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "vue": "^3.2.47", 13 | "vue-router": "^4.2.4", 14 | "vuex": "^4.0.2" 15 | }, 16 | "devDependencies": { 17 | "@vitejs/plugin-vue": "^4.1.0", 18 | "sass": "^1.63.6", 19 | "typescript": "^5.0.2", 20 | "vite": "^4.5.14", 21 | "vue-tsc": "^1.4.2" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /spin-up-hub/public/image/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/spin-up-hub/public/image/avatar.png -------------------------------------------------------------------------------- /spin-up-hub/public/image/spin-vector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/spin-up-hub/public/image/spin-vector.png -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/deploy-to-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/gradient-blue-dark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/spin-up-hub/public/static/image/gradient-blue-dark.jpg -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/gradient-blue-green.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/spin-up-hub/public/static/image/gradient-blue-green.jpg -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/gradient-green-dark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/spin-up-hub/public/static/image/gradient-green-dark.jpg -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/gradient-pink-blue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/spin-up-hub/public/static/image/gradient-pink-blue.jpg -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/gradient-pink-purple.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/spin-up-hub/public/static/image/gradient-pink-purple.jpg -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/gradient-purple-dark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/spin-up-hub/public/static/image/gradient-purple-dark.jpg -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/icon-back-copy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/icon-back.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/icon-code.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/icon-external.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/icon-github.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/icon-search-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/icon-search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/icon/deploy-to-cloud-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/icon/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/spin-up-hub/public/static/image/icon/favicon.png -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/logo-badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/spin-up-hub/public/static/image/logo-badge.png -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/spin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/to-cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/spin-up-hub/public/static/image/to-cloud.png -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/to-kubernetes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/spin-up-hub/public/static/image/to-kubernetes.png -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/to-terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/spin-up-hub/public/static/image/to-terminal.png -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/to-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/spin-up-hub/public/static/image/to-ui.png -------------------------------------------------------------------------------- /spin-up-hub/public/static/image/wasm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/spin-up-hub/public/static/image/wasm.png -------------------------------------------------------------------------------- /spin-up-hub/public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /spin-up-hub/src/components/ContentSpace.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 19 | -------------------------------------------------------------------------------- /spin-up-hub/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | import {store} from './store' 4 | import {router} from './router' 5 | 6 | const app = createApp(App) 7 | 8 | app.use(store) 9 | app.use(router) 10 | app.mount('#app') -------------------------------------------------------------------------------- /spin-up-hub/src/router.js: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHistory } from 'vue-router' 2 | import Home from './view/Home.vue' 3 | import Contributing from './view/Contributing.vue' 4 | import { store } from './store' 5 | 6 | const routes = [ 7 | { path: '/hub', name: "Home", component: Home }, 8 | { path: '/hub/preview/:id', name: "Preview", component: Home }, 9 | { path: '/hub/contributing', name: "Contributing", component: Contributing }, 10 | { 11 | path: '/:pathMatch(.*)*', 12 | redirect: "/hub" 13 | } 14 | ] 15 | 16 | const router = createRouter({ 17 | history: createWebHistory(), 18 | routes, 19 | }); 20 | 21 | router.beforeEach((to, from) => { 22 | if (to.name === "Home" && from.name === "Preview") { 23 | store.commit("closePreview", false) 24 | } 25 | }) 26 | 27 | export { router } -------------------------------------------------------------------------------- /spin-up-hub/src/view/Contributing.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 35 | 36 | -------------------------------------------------------------------------------- /spin-up-hub/src/view/Home.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /spin-up-hub/vite.config.js: -------------------------------------------------------------------------------- 1 | import { fileURLToPath, URL } from 'node:url' 2 | 3 | import { defineConfig } from 'vite' 4 | import vue from '@vitejs/plugin-vue' 5 | import vuex from 'vuex' 6 | 7 | import path from "path"; 8 | const pathSrc = path.resolve(__dirname, "./src"); 9 | 10 | // https://vitejs.dev/config/ 11 | export default defineConfig({ 12 | css: { 13 | preprocessorOptions: { 14 | scss: { 15 | additionalData: ` 16 | @import "../../static/sass/styles.scss"; 17 | ` 18 | } 19 | } 20 | }, 21 | plugins: [vue()], 22 | resolve: { 23 | alias: { 24 | '@': fileURLToPath(new URL('./src', import.meta.url)) 25 | } 26 | } 27 | }) 28 | -------------------------------------------------------------------------------- /static/css/arrow-right.b9889f0e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/css/arrow-right.b9889f0e.png -------------------------------------------------------------------------------- /static/css/arrowexternal-dark.da7f65db.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/css/arrowexternal.2e79a5e6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/css/avatar.5fada8f8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/css/avatar.5fada8f8.png -------------------------------------------------------------------------------- /static/css/avatar.63e1d6e5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/css/avatar.63e1d6e5.png -------------------------------------------------------------------------------- /static/css/avatar.a979e1d6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/css/avatar.a979e1d6.png -------------------------------------------------------------------------------- /static/css/cncf.aeacfafb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /static/css/discord-banner.59f2afdb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/css/discord-banner.59f2afdb.jpg -------------------------------------------------------------------------------- /static/css/grid-dark.83123bac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/css/grid-dark.83123bac.png -------------------------------------------------------------------------------- /static/css/grid.74907336.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/css/grid.74907336.png -------------------------------------------------------------------------------- /static/css/search-white.1eb5f902.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/css/search-white.8e5bc66c.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/css/search-white.e7b007cd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /static/css/search.2af741de.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/css/search.7b5b262e.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/css/search.b7fb4c6a.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /static/css/wasm-lang-card-dark.48999352.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/css/wasm-lang-card-dark.48999352.png -------------------------------------------------------------------------------- /static/css/wasm-lang-card.a3744d5d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/css/wasm-lang-card.a3744d5d.png -------------------------------------------------------------------------------- /static/image/akamai-property-behaviors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/akamai-property-behaviors.png -------------------------------------------------------------------------------- /static/image/akamai-property-match-criteria.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/akamai-property-match-criteria.png -------------------------------------------------------------------------------- /static/image/akamai-property-new-rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/akamai-property-new-rule.png -------------------------------------------------------------------------------- /static/image/app-panel-view-w-edit-subdomain-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/app-panel-view-w-edit-subdomain-button.png -------------------------------------------------------------------------------- /static/image/apps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/apps.png -------------------------------------------------------------------------------- /static/image/arrow-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/arrow-right.png -------------------------------------------------------------------------------- /static/image/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/avatar.png -------------------------------------------------------------------------------- /static/image/bartholomew-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/bartholomew-screenshot.png -------------------------------------------------------------------------------- /static/image/changelog/fermyon-severless-ai-twitter-card.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/changelog/fermyon-severless-ai-twitter-card.jpg -------------------------------------------------------------------------------- /static/image/changelog/metrics-request-count.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/changelog/metrics-request-count.gif -------------------------------------------------------------------------------- /static/image/changelog/spin-cloud-0.4.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/changelog/spin-cloud-0.4.0.jpg -------------------------------------------------------------------------------- /static/image/changelog/spin-cloud-0.5.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/changelog/spin-cloud-0.5.0.jpg -------------------------------------------------------------------------------- /static/image/changelog/spin-cloud-0.7.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/changelog/spin-cloud-0.7.0.jpg -------------------------------------------------------------------------------- /static/image/changelog/spin-gh-actions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/changelog/spin-gh-actions.png -------------------------------------------------------------------------------- /static/image/changelog/twc-custom-subdomains-in-cloud.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/changelog/twc-custom-subdomains-in-cloud.jpg -------------------------------------------------------------------------------- /static/image/changelog/twc-introducing-fermyon-cloud-key-value-store.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/changelog/twc-introducing-fermyon-cloud-key-value-store.jpeg -------------------------------------------------------------------------------- /static/image/clone_developer_repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/clone_developer_repo.png -------------------------------------------------------------------------------- /static/image/cloud-dash-w-quickstart-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/cloud-dash-w-quickstart-app.png -------------------------------------------------------------------------------- /static/image/cloud-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/cloud-dashboard.png -------------------------------------------------------------------------------- /static/image/cloud-video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/cloud-video.png -------------------------------------------------------------------------------- /static/image/cncf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /static/image/compare_and_pull_request.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/compare_and_pull_request.png -------------------------------------------------------------------------------- /static/image/create-token-confirmation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/create-token-confirmation.png -------------------------------------------------------------------------------- /static/image/create-token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/create-token.png -------------------------------------------------------------------------------- /static/image/custom-domains/Step-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/custom-domains/Step-1.png -------------------------------------------------------------------------------- /static/image/custom-domains/Step-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/custom-domains/Step-2.png -------------------------------------------------------------------------------- /static/image/custom-domains/Step-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/custom-domains/Step-3.png -------------------------------------------------------------------------------- /static/image/custom-domains/Step-4.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/custom-domains/Step-4.1.png -------------------------------------------------------------------------------- /static/image/custom-domains/Step-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/custom-domains/Step-4.png -------------------------------------------------------------------------------- /static/image/custom-domains/Step-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/custom-domains/Step-5.png -------------------------------------------------------------------------------- /static/image/custom-domains/app-panel-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/custom-domains/app-panel-view.png -------------------------------------------------------------------------------- /static/image/custom-subdomain-app-panel-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/custom-subdomain-app-panel-view.png -------------------------------------------------------------------------------- /static/image/custom-subdomain-panel-original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/custom-subdomain-panel-original.png -------------------------------------------------------------------------------- /static/image/custom-subdomain-panel-renamed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/custom-subdomain-panel-renamed.png -------------------------------------------------------------------------------- /static/image/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/dashboard.png -------------------------------------------------------------------------------- /static/image/delete-account-confirmation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/delete-account-confirmation.png -------------------------------------------------------------------------------- /static/image/delete-account-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/delete-account-view.png -------------------------------------------------------------------------------- /static/image/delete-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/delete-app.png -------------------------------------------------------------------------------- /static/image/delete-token-confirmation-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/delete-token-confirmation-2.png -------------------------------------------------------------------------------- /static/image/delete-token-confirmation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/delete-token-confirmation.png -------------------------------------------------------------------------------- /static/image/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/delete.png -------------------------------------------------------------------------------- /static/image/devx-workflow-fermyon-on-akamai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/devx-workflow-fermyon-on-akamai.png -------------------------------------------------------------------------------- /static/image/discord-banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/discord-banner.jpg -------------------------------------------------------------------------------- /static/image/docs/bart-new-post.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/docs/bart-new-post.png -------------------------------------------------------------------------------- /static/image/docs/clone-bartholomew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/docs/clone-bartholomew.png -------------------------------------------------------------------------------- /static/image/docs/cloud-develop-example-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/docs/cloud-develop-example-2.png -------------------------------------------------------------------------------- /static/image/docs/cloud-develop-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/docs/cloud-develop-example.png -------------------------------------------------------------------------------- /static/image/docs/fork-bartholomew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/docs/fork-bartholomew.png -------------------------------------------------------------------------------- /static/image/docs/merged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/docs/merged.png -------------------------------------------------------------------------------- /static/image/docs/pull-request-I.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/docs/pull-request-I.png -------------------------------------------------------------------------------- /static/image/docs/sentiment-analysis-ui-blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/docs/sentiment-analysis-ui-blank.png -------------------------------------------------------------------------------- /static/image/docs/sentiment-analysis-ui-positive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/docs/sentiment-analysis-ui-positive.png -------------------------------------------------------------------------------- /static/image/docs/use-template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/docs/use-template.png -------------------------------------------------------------------------------- /static/image/drawer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/drawer.png -------------------------------------------------------------------------------- /static/image/edit-on-github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/edit-on-github.png -------------------------------------------------------------------------------- /static/image/env-explorer_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/env-explorer_1.png -------------------------------------------------------------------------------- /static/image/env-explorer_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/env-explorer_2.png -------------------------------------------------------------------------------- /static/image/events/developerweek.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/events/developerweek.jpg -------------------------------------------------------------------------------- /static/image/events/kubeconeu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/events/kubeconeu.png -------------------------------------------------------------------------------- /static/image/events/wasm-io.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/events/wasm-io.jpg -------------------------------------------------------------------------------- /static/image/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/favicon.png -------------------------------------------------------------------------------- /static/image/fermyon-badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/fermyon-badge.png -------------------------------------------------------------------------------- /static/image/fermyon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/fermyon.png -------------------------------------------------------------------------------- /static/image/fork_developer_repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/fork_developer_repo.png -------------------------------------------------------------------------------- /static/image/fwf-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/fwf-banner.png -------------------------------------------------------------------------------- /static/image/fwf-marketechture-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/fwf-marketechture-sm.png -------------------------------------------------------------------------------- /static/image/github-action-app-deployed-gh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/github-action-app-deployed-gh.png -------------------------------------------------------------------------------- /static/image/github-action-app-deployed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/github-action-app-deployed.png -------------------------------------------------------------------------------- /static/image/github-reg-secret-success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/github-reg-secret-success.png -------------------------------------------------------------------------------- /static/image/global-key-value-store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/global-key-value-store.png -------------------------------------------------------------------------------- /static/image/grid-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/grid-dark.png -------------------------------------------------------------------------------- /static/image/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/grid.png -------------------------------------------------------------------------------- /static/image/homing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/homing.png -------------------------------------------------------------------------------- /static/image/icon-cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/icon-cloud.png -------------------------------------------------------------------------------- /static/image/icon-fp4k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/icon-fp4k.png -------------------------------------------------------------------------------- /static/image/icon-functions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/icon-functions.png -------------------------------------------------------------------------------- /static/image/icon-spin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/icon-spin.png -------------------------------------------------------------------------------- /static/image/icon-spinkube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/icon-spinkube.png -------------------------------------------------------------------------------- /static/image/icon/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/icon/android-chrome-192x192.png -------------------------------------------------------------------------------- /static/image/icon/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/icon/android-chrome-512x512.png -------------------------------------------------------------------------------- /static/image/icon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/icon/apple-touch-icon.png -------------------------------------------------------------------------------- /static/image/icon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #0d203f 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/image/icon/deploy-to-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/image/icon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/icon/favicon-16x16.png -------------------------------------------------------------------------------- /static/image/icon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/icon/favicon-32x32.png -------------------------------------------------------------------------------- /static/image/icon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/icon/favicon.ico -------------------------------------------------------------------------------- /static/image/icon/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/icon/favicon.png -------------------------------------------------------------------------------- /static/image/icon/icon-github.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/image/icon/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/icon/mstile-150x150.png -------------------------------------------------------------------------------- /static/image/icon/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/image/icon/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Fermyon", 3 | "short_name": "Fermyon", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "display": "standalone" 17 | } 18 | -------------------------------------------------------------------------------- /static/image/jaeger-traces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/jaeger-traces.png -------------------------------------------------------------------------------- /static/image/kubecon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/kubecon.png -------------------------------------------------------------------------------- /static/image/labels-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/labels-diagram.png -------------------------------------------------------------------------------- /static/image/linode-mysql-sample-data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/linode-mysql-sample-data.png -------------------------------------------------------------------------------- /static/image/linode-mysql-server-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/linode-mysql-server-settings.png -------------------------------------------------------------------------------- /static/image/linode-mysql-server-summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/linode-mysql-server-summary.png -------------------------------------------------------------------------------- /static/image/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/login.png -------------------------------------------------------------------------------- /static/image/logo-badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/logo-badge.png -------------------------------------------------------------------------------- /static/image/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/image/neon-create-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/neon-create-project.png -------------------------------------------------------------------------------- /static/image/neon-verify-database.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/neon-verify-database.png -------------------------------------------------------------------------------- /static/image/no-copy-source-code-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/no-copy-source-code-example.png -------------------------------------------------------------------------------- /static/image/product-cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/product-cloud.png -------------------------------------------------------------------------------- /static/image/product-platformk8s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/product-platformk8s.png -------------------------------------------------------------------------------- /static/image/product-spin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/product-spin.png -------------------------------------------------------------------------------- /static/image/product-spinkube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/product-spinkube.png -------------------------------------------------------------------------------- /static/image/project-left-bart-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/project-left-bart-dark.png -------------------------------------------------------------------------------- /static/image/project-left-bart-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/project-left-bart-light.png -------------------------------------------------------------------------------- /static/image/project-left-cloud-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/project-left-cloud-dark.png -------------------------------------------------------------------------------- /static/image/project-left-cloud-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/project-left-cloud-light.png -------------------------------------------------------------------------------- /static/image/project-left-spin-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/project-left-spin-dark.png -------------------------------------------------------------------------------- /static/image/project-left-spin-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/project-left-spin-light.png -------------------------------------------------------------------------------- /static/image/project-left-spinkube-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/project-left-spinkube-dark.png -------------------------------------------------------------------------------- /static/image/project-left-spinkube-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/project-left-spinkube-light.png -------------------------------------------------------------------------------- /static/image/project-left-wasm-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/project-left-wasm-dark.png -------------------------------------------------------------------------------- /static/image/project-left-wasm-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/project-left-wasm-light.png -------------------------------------------------------------------------------- /static/image/quickstart-custom-subdomain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/quickstart-custom-subdomain.png -------------------------------------------------------------------------------- /static/image/rich-results-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/rich-results-01.png -------------------------------------------------------------------------------- /static/image/rich-results-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/rich-results-02.png -------------------------------------------------------------------------------- /static/image/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/screenshot.png -------------------------------------------------------------------------------- /static/image/search-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/image/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/image/sidecar_git.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/sidecar_git.png -------------------------------------------------------------------------------- /static/image/sidecar_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/sidecar_result.png -------------------------------------------------------------------------------- /static/image/stream-data-from-linode-object-store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/stream-data-from-linode-object-store.png -------------------------------------------------------------------------------- /static/image/supabase-connection-information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/supabase-connection-information.png -------------------------------------------------------------------------------- /static/image/supabase-create-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/supabase-create-table.png -------------------------------------------------------------------------------- /static/image/supabase-enable-db-webhooks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/supabase-enable-db-webhooks.png -------------------------------------------------------------------------------- /static/image/supabase-project-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/supabase-project-setup.png -------------------------------------------------------------------------------- /static/image/thumbs-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /static/image/thumbs-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /static/image/twc-custom-subdomains-in-cloud.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/twc-custom-subdomains-in-cloud.jpg -------------------------------------------------------------------------------- /static/image/twc-fermyon-wasm-functions.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/twc-fermyon-wasm-functions.jpg -------------------------------------------------------------------------------- /static/image/twc-open-beta-serverlesss-ai.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/twc-open-beta-serverlesss-ai.jpg -------------------------------------------------------------------------------- /static/image/twitter_card_summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/twitter_card_summary.png -------------------------------------------------------------------------------- /static/image/twitter_card_website.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/twitter_card_website.png -------------------------------------------------------------------------------- /static/image/user-setting-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/user-setting-view.png -------------------------------------------------------------------------------- /static/image/user-setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/user-setting.png -------------------------------------------------------------------------------- /static/image/user-settings-with-token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/user-settings-with-token.png -------------------------------------------------------------------------------- /static/image/wasm-lang-card-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/wasm-lang-card-dark.png -------------------------------------------------------------------------------- /static/image/wasm-lang-card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fermyon/developer/08417ef176ae3b5e34614a004f197006d1e9841e/static/image/wasm-lang-card.png -------------------------------------------------------------------------------- /static/sass/developer-color.scss: -------------------------------------------------------------------------------- 1 | 2 | /* Styleguide Refresh from fermyon.com (1.5 design refresh) 3 | */ 4 | 5 | 6 | $oxforddark: #0E092D; 7 | $vistablue: #8093F1; 8 | $lavenderfloral: #A87CE6; 9 | $thistle: #E7D3F2; 10 | $celeste: #C5FFF1; 11 | 12 | $docsbg1: #FDF8FF; 13 | $docsbg2: #FCF5FF; 14 | $greenfoam: #C5FFF1; 15 | $lavenderdark: #8967C2; 16 | $lavendermid: #E6D2F1; 17 | $lavenderlight: $thistle; 18 | $bluedark: #384687; 19 | $bluecallout: #282F55; 20 | 21 | 22 | // fonts 23 | $spaceGro: 'Space Grotesk', Tofu, Sen, Europa, Avenir, system, -apple-system, SFNSText-Regular, San Francisco, Segoe UI, Helvetica Neue, Lucida Grande, sans-serif; 24 | $mono: SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace; 25 | 26 | // reusable mixins 27 | @mixin upperCase { 28 | text-transform: uppercase; 29 | letter-spacing: 0.1125rem; 30 | } 31 | 32 | .uppercase { 33 | @include upperCase; 34 | } 35 | 36 | @mixin button { 37 | color: $oxforddark !important; 38 | font-size: 1rem; 39 | font-family: $spaceGro; 40 | font-weight: 500; 41 | padding: 0.333rem 1.5rem; 42 | @include upperCase; 43 | @include transition; 44 | } -------------------------------------------------------------------------------- /static/sass/developer-include-footer.scss: -------------------------------------------------------------------------------- 1 | footer.footer-links { 2 | min-height: auto; 3 | z-index: 1400; 4 | background: transparent !important; 5 | border-top: 1px solid rgba($lavendermid, 0.67) !important; 6 | margin: 7.25rem auto 0 !important; 7 | padding: 1.25rem 0 1.25rem !important; 8 | 9 | a.navbar-item { 10 | font-size: 1rem; 11 | margin-right: 2.5vw; 12 | padding: 0.5rem 0.25rem; 13 | } 14 | 15 | .footer-logo { 16 | max-width: 11.5rem; 17 | 18 | &:hover { 19 | background-color: transparent; 20 | &:after { 21 | display: none; 22 | } 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /templates/404.hbs: -------------------------------------------------------------------------------- 1 |

The page does not exist!

2 | 3 | 4 |

Find your way back to the homepage or the Fermyon Wasm Functions docs or the Fermyon Cloud docs

-------------------------------------------------------------------------------- /templates/bartholomew_main.hbs: -------------------------------------------------------------------------------- 1 | {{! This adds the HTML head section and the beginning of the body. See content_top.hbs. }} 2 | {{> content_top }} 3 | 4 |
5 |
6 | 7 | {{! This adds the sidebar }} 8 | {{> bartholomew_sidebar }} 9 | 10 |
11 |
12 |

{{page.head.title}}

13 | 14 | {{{page.body}}} 15 | 16 |
17 | {{> doc_feedback }} 18 |
19 | 20 |
21 | 22 | {{> content_footer }} 23 |
24 | 25 |
26 | {{> doc_feedback }} 27 |
28 | 29 | {{! This closes the body. See content_bottom.hbs. }} 30 | {{> content_bottom }} 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /templates/changelog_fwf_item.hbs: -------------------------------------------------------------------------------- 1 | {{! This adds the HTML head section and the beginning of the body. See content_top.hbs. }} 2 | {{> content_top }} 3 | 4 |
5 |
6 | 7 | {{! This adds the sidebar }} 8 | 9 |
10 |
11 | 12 | {{#if (eq page.head.title "Not Found")}} 13 | {{> 404 }} 14 | {{else}} 15 |

{{page.head.title}}

16 | 19 | 20 | {{{page.body}}} 21 | {{/if}} 22 |
23 | 24 | {{> content_footer }} 25 |
26 | 27 |
28 |
29 | 30 | {{! This closes the body. See content_bottom.hbs. }} 31 | {{> content_bottom }} 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /templates/changelog_item.hbs: -------------------------------------------------------------------------------- 1 | {{! This adds the HTML head section and the beginning of the body. See content_top.hbs. }} 2 | {{> content_top }} 3 | 4 |
5 |
6 | 7 | {{! This adds the sidebar }} 8 | 9 |
10 |
11 | 12 | {{#if (eq page.head.title "Not Found")}} 13 | {{> 404 }} 14 | {{else}} 15 |

{{page.head.title}}

16 | 17 | 18 | {{{page.body}}} 19 | {{/if}} 20 |
21 | 22 | {{> content_footer }} 23 |
24 | 25 |
26 |
27 | 28 | {{! This closes the body. See content_bottom.hbs. }} 29 | {{> content_bottom }} 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /templates/cloud_main.hbs: -------------------------------------------------------------------------------- 1 | {{! This adds the HTML head section and the beginning of the body. See content_top.hbs. }} 2 | {{> content_top }} 3 | 4 |
5 |
6 | 7 | {{! This adds the sidebar }} 8 | {{> cloud_sidebar }} 9 | 10 |
11 |
12 |

{{page.head.title}}

13 | 14 | {{{page.body}}} 15 | 16 | 17 |
18 | {{> doc_feedback }} 19 |
20 | 21 |
22 | {{> content_footer }} 23 |
24 | 25 |
26 |
27 | 28 | {{! This closes the body. See content_bottom.hbs. }} 29 | {{> content_bottom }} 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /templates/content_footer.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/doc_feedback.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /templates/functions_home.hbs: -------------------------------------------------------------------------------- 1 | {{! This adds the HTML head section and the beginning of the body. See content_top.hbs. }} 2 | {{> content_top }} 3 | 4 |
5 |
6 | 7 | {{! This adds the sidebar }} 8 | {{> functions_sidebar }} 9 | 10 |
11 |
12 | Wasm Functions logo 13 | 14 | {{{page.body}}} 15 | 16 |
17 | {{> content_footer }} 18 |
19 | 20 |
21 |
22 | 23 | {{! This closes the body. See content_bottom.hbs. }} 24 | {{> content_bottom }} 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /templates/functions_main.hbs: -------------------------------------------------------------------------------- 1 | {{! This adds the HTML head section and the beginning of the body. See content_top.hbs. }} 2 | {{> content_top }} 3 | 4 |
5 |
6 | 7 | {{! This adds the sidebar }} 8 | {{> functions_sidebar }} 9 | 10 |
11 |
12 |

{{page.head.title}}

13 | 14 | {{{page.body}}} 15 | 16 | 17 |
18 | {{> doc_feedback }} 19 |
20 | 21 |
22 | {{> content_footer }} 23 |
24 | 25 |
26 |
27 | 28 | {{! This closes the body. See content_bottom.hbs. }} 29 | {{> content_bottom }} 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /templates/google_verification.hbs: -------------------------------------------------------------------------------- 1 | {{! 2 | For info on what can be placed here, see https://support.google.com/webmasters/answer/9008080#html_verification&zippy=%2Chtml-file-upload 3 | }} 4 | google-site-verification: googleea373cbb8f1dde18.html -------------------------------------------------------------------------------- /templates/hub_list_api.hbs: -------------------------------------------------------------------------------- 1 | --- 2 | read_pages_glob = ["api/hub/*.md"] 3 | --- 4 | [ 5 | {{#each (content_filter site.pages "/content/api/hub" "hub_document")}} 6 | { 7 | "title": "{{this.page.head.title}}", 8 | "category": "{{this.page.head.extra.category}}", 9 | "language": "{{this.page.head.extra.language}}", 10 | "author": "{{this.page.head.extra.author}}", 11 | "summary": "{{this.page.head.extra.summary}}", 12 | "createdAt": "{{this.page.head.extra.created_at}}", 13 | "lastUpdated": "{{this.page.head.extra.last_updated}}", 14 | "spinVersion": "{{{this.page.head.extra.spin_version}}}", 15 | "url": "{{{this.page.head.extra.url}}}", 16 | {{#if this.page.head.extra.repo_url}}"repo_url": "{{{this.page.head.extra.repo_url}}}",{{/if}} 17 | {{#if this.page.head.extra.template_id}}"template_id": "{{{this.page.head.extra.template_id}}}",{{/if}} 18 | {{#if this.page.head.extra.artifact_source}}"artifactSource": "{{{this.page.head.extra.artifact_source}}}",{{/if}} 19 | {{#if this.page.head.extra.image}}"image": "{{this.page.head.extra.image}}",{{/if}} 20 | {{#if this.page.head.extra.yaml}}"yaml": "{{this.page.head.extra.yaml}}",{{/if}} 21 | {{#with this as data}}"tags": [{{#each this.page.head.tags}} "{{this}}"{{#if @last}}{{else}},{{/if}} 22 | {{/each}}]{{/with}}, 23 | "path": "{{{this.uri}}}" 24 | }{{#if @last}}{{else}},{{/if}} 25 | {{/each}} 26 | ] -------------------------------------------------------------------------------- /templates/main.hbs: -------------------------------------------------------------------------------- 1 | {{! This adds the HTML head section and the beginning of the body. See content_top.hbs. }} 2 | {{> content_top }} 3 | 4 |
5 |
6 | 7 | {{! This adds the sidebar }} 8 | {{#if (active_project request.spin-path-info "/cloud/" )}} 9 | {{> cloud_sidebar }} 10 | {{else}} 11 | {{#if (active_project request.spin-path-info "/bartholomew/" )}} 12 | {{> bartholomew_sidebar }} 13 | {{/if}} 14 | {{/if}} 15 | 16 |
17 |
18 | 19 | {{#if (eq page.head.title "Not Found")}} 20 | {{> 404 }} 21 | {{else}} 22 |

{{page.head.title}}

23 | {{{page.body}}} 24 | {{/if}} 25 |
26 |
27 | 28 |
29 |
30 | 31 | {{! This closes the body. See content_bottom.hbs. }} 32 | {{> content_bottom }} 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /templates/page.hbs: -------------------------------------------------------------------------------- 1 | {{! This adds the HTML head section and the beginning of the body. See content_top.hbs. }} 2 | {{> content_top }} 3 | 4 |
5 |
6 | 7 |
8 |
9 |

{{{page.head.title}}}

10 | {{! Since this is HTML, we use the triple-curly }} 11 | {{{page.body}}} 12 | {{! Remove the `!` on the line below to see how to call a Rhai script }} 13 | {{! echo "world" }} 14 |
15 |
16 | 17 |
18 |
19 | 20 | {{! This closes the body. See content_bottom.hbs. }} 21 | 22 | {{> content_cta }} 23 | 24 | {{> content_bottom }} -------------------------------------------------------------------------------- /templates/page_lang.hbs: -------------------------------------------------------------------------------- 1 | {{! This adds the HTML head section and the beginning of the body. See content_top.hbs. }} 2 | {{> content_top }} 3 | 4 |
5 |
6 | 7 | {{! This adds the sidebar }} 8 | 12 | 13 |
14 |
15 |

{{page.head.title}}

16 | 17 | 18 | 19 | {{{page.body}}} 20 | 21 |
22 | {{> doc_feedback }} 23 |
24 | 25 |
26 | 27 | {{> content_footer }} 28 |
29 | 30 |
31 | {{> doc_feedback }} 32 |
33 | 34 | 35 | {{! This closes the body. See content_bottom.hbs. }} 36 | {{> content_bottom }} 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /templates/render_hub_content_body.hbs: -------------------------------------------------------------------------------- 1 | {{page.body}} -------------------------------------------------------------------------------- /templates/robots.hbs: -------------------------------------------------------------------------------- 1 | {{! 2 | For info on what can be placed here, see http://www.robotstxt.org/ 3 | See also: https://developers.google.com/search/docs/advanced/robots/intro 4 | }} 5 | User-agent: * 6 | Sitemap: {{site.info.base_url}}/sitemap.xml 7 | Disallow: /index 8 | Disallow: /api/hub/ 9 | -------------------------------------------------------------------------------- /templates/sitemap.hbs: -------------------------------------------------------------------------------- 1 | 2 | {{! 3 | For sitemap.xml, see https://www.sitemaps.org/protocol.html 4 | For date/time format, see https://www.w3.org/TR/NOTE-datetime 5 | }} 6 | 7 | 8 | https://developer.fermyon.com/ 9 | daily 10 | 0.8 11 | 12 | {{#each (sitemap site.pages) }} 13 | 14 | {{#if (active_project uri "api/hub/")}} 15 | https://developer.fermyon.com{{replace uri "api/hub/" "hub/preview/"}} 16 | {{else}} 17 | https://developer.fermyon.com{{uri}} 18 | {{/if}} 19 | {{#if page.head.date }}{{date_format "%Y-%m-%dT%H:%M:%SZ" page.head.date}}{{/if}} 20 | daily 21 | 1 22 | 23 | {{/each}} 24 | --------------------------------------------------------------------------------