Repository files navigation

deployable.site

See this project deployed at https://deployable.site

This repo simply serves as a very minimalist progressive web app boilerplate. The README however is a step-by-step guide demonstrating how to properly deploy a static web application (such as this) to GitHub pages without ever checking in built assets or directly pushing to the gh-pages branch. This approach was pieced together from various blog posts and stackoverflow answers, making the most of free services provided by GitHub, TravisCI and CloudFlare to promote applying industry standard workflows to open source apps; review, build, test, deploy and serve over https for free with almost no configuration! Or servers for that matter 🎣


👼 You need a free TravisCI account and CloudFlare basic account (if you require custom https domains)


Setup Overview

  1. Prepare Project: create a deployable project repository or use a fork of this repo
  2. Obtain Token: one per project from here, copy it and use as the value of GITHUB_TOKEN in travis
  3. Enable TravisCI: switch on builds for the project here and add the GITHUB_TOKEN environment variable
  4. Configure Build: add a file like this to the project root and configure for your application
  5. Trigger Deploy: push to master or merge a pull request to invoke a full build and deploy 💥

1. Prepare Project

This structure of this repository adheres to a deployable configuration but that doesn't mean you have to use this code as a basis for your deployable project. This approach will work with almost any static site architecture, framework or build pipeline. The important things to recognize are:

  • Deployable projects are frontend only and consists of just static files (html/css/javascript/images).
  • Deployable projects build all the files they need to run into some single output directory (dist/build/public/etc).
  • Deployable projects have a command that builds the project and optionally runs tests (e.g. npm run build).
  • Deployable projects feature an index.html and a 404.html in the output directory after being built.
  • Deployable projects handle routing on the frontend (all server requests will return the contents of index.html).

If your project does not meet all the deployable requirements then you can clone/fork this repository and build upon it or tweak your project to fit.


2. Obtain Token

ezgif com-video-to-gif


  1. Navigate to GitHub Personal Access Token Settings
  2. Enter a Token Description and select the repo scope
  3. Scroll down and click Generate Token
  4. Copy the generated access token to clipboard

3. Enable TravisCI

ezgif com-gif-maker


  1. Visit your TravisCI Dashboard and find the deployable repository
  2. Turn on the project switch and click the settings icon
  3. Turn on both Auto Cancellation switches
  4. Under Environment Variables enter GITHUB_TOKEN as Name
  5. Paste the generated access token as Value and click Add

4. Configure Build

If you do not have a domain name for your project then use *.deployable.site where * is any namespace that has not already been taken by another deployer. Choosing this option limits your site to http only.

language: node_js
node_js:
- "7"
script: npm run build // The script that builds the app
deploy:
local_dir: dist // The distributed output directory fqdn: deployable.site // The domain name of the deployed site
provider: pages
skip_cleanup: true
github_token: $GITHUB_TOKEN
on:
branch: master

  1. Clone the deployable project to your local machine
  2. Add a travis.yml file like the one above to the project root
  3. Update script attribute with the command that builds your project
  4. Update local_dir attribute with the name of the project output directory
  5. Update fqdn attribute with the domain name the project should be deployed

5. Trigger Deploy

  1. Add and commit the changes to travis.yml then git push
  2. Check the build and deploy progress on TravisCI
  3. When the build succeeds visit your shiny new site at the domain you specified

About

A ready-to-deploy static web app template and tutorial

Resources

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

deployable.site

See this project deployed at https://deployable.site

This repo simply serves as a very minimalist progressive web app boilerplate. The README however is a step-by-step guide demonstrating how to properly deploy a static web application (such as this) to GitHub pages without ever checking in built assets or directly pushing to the gh-pages branch. This approach was pieced together from various blog posts and stackoverflow answers, making the most of free services provided by GitHub, TravisCI and CloudFlare to promote applying industry standard workflows to open source apps; review, build, test, deploy and serve over https for free with almost no configuration! Or servers for that matter 🎣


👼 You need a free TravisCI account and CloudFlare basic account (if you require custom https domains)


Setup Overview

  1. Prepare Project: create a deployable project repository or use a fork of this repo
  2. Obtain Token: one per project from here, copy it and use as the value of GITHUB_TOKEN in travis
  3. Enable TravisCI: switch on builds for the project here and add the GITHUB_TOKEN environment variable
  4. Configure Build: add a file like this to the project root and configure for your application
  5. Trigger Deploy: push to master or merge a pull request to invoke a full build and deploy 💥

1. Prepare Project

This structure of this repository adheres to a deployable configuration but that doesn't mean you have to use this code as a basis for your deployable project. This approach will work with almost any static site architecture, framework or build pipeline. The important things to recognize are:

  • Deployable projects are frontend only and consists of just static files (html/css/javascript/images).
  • Deployable projects build all the files they need to run into some single output directory (dist/build/public/etc).
  • Deployable projects have a command that builds the project and optionally runs tests (e.g. npm run build).
  • Deployable projects feature an index.html and a 404.html in the output directory after being built.
  • Deployable projects handle routing on the frontend (all server requests will return the contents of index.html).

If your project does not meet all the deployable requirements then you can clone/fork this repository and build upon it or tweak your project to fit.


2. Obtain Token

ezgif com-video-to-gif


  1. Navigate to GitHub Personal Access Token Settings
  2. Enter a Token Description and select the repo scope
  3. Scroll down and click Generate Token
  4. Copy the generated access token to clipboard

3. Enable TravisCI

ezgif com-gif-maker


  1. Visit your TravisCI Dashboard and find the deployable repository
  2. Turn on the project switch and click the settings icon
  3. Turn on both Auto Cancellation switches
  4. Under Environment Variables enter GITHUB_TOKEN as Name
  5. Paste the generated access token as Value and click Add

4. Configure Build

If you do not have a domain name for your project then use *.deployable.site where * is any namespace that has not already been taken by another deployer. Choosing this option limits your site to http only.

language: node_js
node_js:
- "7"
script: npm run build // The script that builds the app
deploy:
local_dir: dist // The distributed output directory fqdn: deployable.site // The domain name of the deployed site
provider: pages
skip_cleanup: true
github_token: $GITHUB_TOKEN
on:
branch: master

  1. Clone the deployable project to your local machine
  2. Add a travis.yml file like the one above to the project root
  3. Update script attribute with the command that builds your project
  4. Update local_dir attribute with the name of the project output directory
  5. Update fqdn attribute with the domain name the project should be deployed

5. Trigger Deploy

  1. Add and commit the changes to travis.yml then git push
  2. Check the build and deploy progress on TravisCI
  3. When the build succeeds visit your shiny new site at the domain you specified

About

A ready-to-deploy static web app template and tutorial

Resources

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

deployable.site

See this project deployed at https://deployable.site

This repo simply serves as a very minimalist progressive web app boilerplate. The README however is a step-by-step guide demonstrating how to properly deploy a static web application (such as this) to GitHub pages without ever checking in built assets or directly pushing to the gh-pages branch. This approach was pieced together from various blog posts and stackoverflow answers, making the most of free services provided by GitHub, TravisCI and CloudFlare to promote applying industry standard workflows to open source apps; review, build, test, deploy and serve over https for free with almost no configuration! Or servers for that matter 🎣


👼 You need a free TravisCI account and CloudFlare basic account (if you require custom https domains)


Setup Overview

  1. Prepare Project: create a deployable project repository or use a fork of this repo
  2. Obtain Token: one per project from here, copy it and use as the value of GITHUB_TOKEN in travis
  3. Enable TravisCI: switch on builds for the project here and add the GITHUB_TOKEN environment variable
  4. Configure Build: add a file like this to the project root and configure for your application
  5. Trigger Deploy: push to master or merge a pull request to invoke a full build and deploy 💥

1. Prepare Project

This structure of this repository adheres to a deployable configuration but that doesn't mean you have to use this code as a basis for your deployable project. This approach will work with almost any static site architecture, framework or build pipeline. The important things to recognize are:

  • Deployable projects are frontend only and consists of just static files (html/css/javascript/images).
  • Deployable projects build all the files they need to run into some single output directory (dist/build/public/etc).
  • Deployable projects have a command that builds the project and optionally runs tests (e.g. npm run build).
  • Deployable projects feature an index.html and a 404.html in the output directory after being built.
  • Deployable projects handle routing on the frontend (all server requests will return the contents of index.html).

If your project does not meet all the deployable requirements then you can clone/fork this repository and build upon it or tweak your project to fit.


2. Obtain Token

ezgif com-video-to-gif


  1. Navigate to GitHub Personal Access Token Settings
  2. Enter a Token Description and select the repo scope
  3. Scroll down and click Generate Token
  4. Copy the generated access token to clipboard

3. Enable TravisCI

ezgif com-gif-maker


  1. Visit your TravisCI Dashboard and find the deployable repository
  2. Turn on the project switch and click the settings icon
  3. Turn on both Auto Cancellation switches
  4. Under Environment Variables enter GITHUB_TOKEN as Name
  5. Paste the generated access token as Value and click Add

4. Configure Build

If you do not have a domain name for your project then use *.deployable.site where * is any namespace that has not already been taken by another deployer. Choosing this option limits your site to http only.

language: node_js
node_js:
- "7"
script: npm run build // The script that builds the app
deploy:
local_dir: dist // The distributed output directory fqdn: deployable.site // The domain name of the deployed site
provider: pages
skip_cleanup: true
github_token: $GITHUB_TOKEN
on:
branch: master

  1. Clone the deployable project to your local machine
  2. Add a travis.yml file like the one above to the project root
  3. Update script attribute with the command that builds your project
  4. Update local_dir attribute with the name of the project output directory
  5. Update fqdn attribute with the domain name the project should be deployed

5. Trigger Deploy

  1. Add and commit the changes to travis.yml then git push
  2. Check the build and deploy progress on TravisCI
  3. When the build succeeds visit your shiny new site at the domain you specified

About

A ready-to-deploy static web app template and tutorial

Resources

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

deployable.site

See this project deployed at https://deployable.site

This repo simply serves as a very minimalist progressive web app boilerplate. The README however is a step-by-step guide demonstrating how to properly deploy a static web application (such as this) to GitHub pages without ever checking in built assets or directly pushing to the gh-pages branch. This approach was pieced together from various blog posts and stackoverflow answers, making the most of free services provided by GitHub, TravisCI and CloudFlare to promote applying industry standard workflows to open source apps; review, build, test, deploy and serve over https for free with almost no configuration! Or servers for that matter 🎣


👼 You need a free TravisCI account and CloudFlare basic account (if you require custom https domains)


Setup Overview

  1. Prepare Project: create a deployable project repository or use a fork of this repo
  2. Obtain Token: one per project from here, copy it and use as the value of GITHUB_TOKEN in travis
  3. Enable TravisCI: switch on builds for the project here and add the GITHUB_TOKEN environment variable
  4. Configure Build: add a file like this to the project root and configure for your application
  5. Trigger Deploy: push to master or merge a pull request to invoke a full build and deploy 💥

1. Prepare Project

This structure of this repository adheres to a deployable configuration but that doesn't mean you have to use this code as a basis for your deployable project. This approach will work with almost any static site architecture, framework or build pipeline. The important things to recognize are:

  • Deployable projects are frontend only and consists of just static files (html/css/javascript/images).
  • Deployable projects build all the files they need to run into some single output directory (dist/build/public/etc).
  • Deployable projects have a command that builds the project and optionally runs tests (e.g. npm run build).
  • Deployable projects feature an index.html and a 404.html in the output directory after being built.
  • Deployable projects handle routing on the frontend (all server requests will return the contents of index.html).

If your project does not meet all the deployable requirements then you can clone/fork this repository and build upon it or tweak your project to fit.


2. Obtain Token

ezgif com-video-to-gif


  1. Navigate to GitHub Personal Access Token Settings
  2. Enter a Token Description and select the repo scope
  3. Scroll down and click Generate Token
  4. Copy the generated access token to clipboard

3. Enable TravisCI

ezgif com-gif-maker


  1. Visit your TravisCI Dashboard and find the deployable repository
  2. Turn on the project switch and click the settings icon
  3. Turn on both Auto Cancellation switches
  4. Under Environment Variables enter GITHUB_TOKEN as Name
  5. Paste the generated access token as Value and click Add

4. Configure Build

If you do not have a domain name for your project then use *.deployable.site where * is any namespace that has not already been taken by another deployer. Choosing this option limits your site to http only.

language: node_js
node_js:
- "7"
script: npm run build // The script that builds the app
deploy:
local_dir: dist // The distributed output directory fqdn: deployable.site // The domain name of the deployed site
provider: pages
skip_cleanup: true
github_token: $GITHUB_TOKEN
on:
branch: master

  1. Clone the deployable project to your local machine
  2. Add a travis.yml file like the one above to the project root
  3. Update script attribute with the command that builds your project
  4. Update local_dir attribute with the name of the project output directory
  5. Update fqdn attribute with the domain name the project should be deployed

5. Trigger Deploy

  1. Add and commit the changes to travis.yml then git push
  2. Check the build and deploy progress on TravisCI
  3. When the build succeeds visit your shiny new site at the domain you specified

About

A ready-to-deploy static web app template and tutorial

Resources

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

deployable.site

See this project deployed at https://deployable.site

This repo simply serves as a very minimalist progressive web app boilerplate. The README however is a step-by-step guide demonstrating how to properly deploy a static web application (such as this) to GitHub pages without ever checking in built assets or directly pushing to the gh-pages branch. This approach was pieced together from various blog posts and stackoverflow answers, making the most of free services provided by GitHub, TravisCI and CloudFlare to promote applying industry standard workflows to open source apps; review, build, test, deploy and serve over https for free with almost no configuration! Or servers for that matter 🎣


👼 You need a free TravisCI account and CloudFlare basic account (if you require custom https domains)


Setup Overview

  1. Prepare Project: create a deployable project repository or use a fork of this repo
  2. Obtain Token: one per project from here, copy it and use as the value of GITHUB_TOKEN in travis
  3. Enable TravisCI: switch on builds for the project here and add the GITHUB_TOKEN environment variable
  4. Configure Build: add a file like this to the project root and configure for your application
  5. Trigger Deploy: push to master or merge a pull request to invoke a full build and deploy 💥

1. Prepare Project

This structure of this repository adheres to a deployable configuration but that doesn't mean you have to use this code as a basis for your deployable project. This approach will work with almost any static site architecture, framework or build pipeline. The important things to recognize are:

  • Deployable projects are frontend only and consists of just static files (html/css/javascript/images).
  • Deployable projects build all the files they need to run into some single output directory (dist/build/public/etc).
  • Deployable projects have a command that builds the project and optionally runs tests (e.g. npm run build).
  • Deployable projects feature an index.html and a 404.html in the output directory after being built.
  • Deployable projects handle routing on the frontend (all server requests will return the contents of index.html).

If your project does not meet all the deployable requirements then you can clone/fork this repository and build upon it or tweak your project to fit.


2. Obtain Token

ezgif com-video-to-gif


  1. Navigate to GitHub Personal Access Token Settings
  2. Enter a Token Description and select the repo scope
  3. Scroll down and click Generate Token
  4. Copy the generated access token to clipboard

3. Enable TravisCI

ezgif com-gif-maker


  1. Visit your TravisCI Dashboard and find the deployable repository
  2. Turn on the project switch and click the settings icon
  3. Turn on both Auto Cancellation switches
  4. Under Environment Variables enter GITHUB_TOKEN as Name
  5. Paste the generated access token as Value and click Add

4. Configure Build

If you do not have a domain name for your project then use *.deployable.site where * is any namespace that has not already been taken by another deployer. Choosing this option limits your site to http only.

language: node_js
node_js:
- "7"
script: npm run build // The script that builds the app
deploy:
local_dir: dist // The distributed output directory fqdn: deployable.site // The domain name of the deployed site
provider: pages
skip_cleanup: true
github_token: $GITHUB_TOKEN
on:
branch: master

  1. Clone the deployable project to your local machine
  2. Add a travis.yml file like the one above to the project root
  3. Update script attribute with the command that builds your project
  4. Update local_dir attribute with the name of the project output directory
  5. Update fqdn attribute with the domain name the project should be deployed

5. Trigger Deploy

  1. Add and commit the changes to travis.yml then git push
  2. Check the build and deploy progress on TravisCI
  3. When the build succeeds visit your shiny new site at the domain you specified

About

A ready-to-deploy static web app template and tutorial

Resources

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

deployable.site

See this project deployed at https://deployable.site

This repo simply serves as a very minimalist progressive web app boilerplate. The README however is a step-by-step guide demonstrating how to properly deploy a static web application (such as this) to GitHub pages without ever checking in built assets or directly pushing to the gh-pages branch. This approach was pieced together from various blog posts and stackoverflow answers, making the most of free services provided by GitHub, TravisCI and CloudFlare to promote applying industry standard workflows to open source apps; review, build, test, deploy and serve over https for free with almost no configuration! Or servers for that matter 🎣


👼 You need a free TravisCI account and CloudFlare basic account (if you require custom https domains)


Setup Overview

  1. Prepare Project: create a deployable project repository or use a fork of this repo
  2. Obtain Token: one per project from here, copy it and use as the value of GITHUB_TOKEN in travis
  3. Enable TravisCI: switch on builds for the project here and add the GITHUB_TOKEN environment variable
  4. Configure Build: add a file like this to the project root and configure for your application
  5. Trigger Deploy: push to master or merge a pull request to invoke a full build and deploy 💥

1. Prepare Project

This structure of this repository adheres to a deployable configuration but that doesn't mean you have to use this code as a basis for your deployable project. This approach will work with almost any static site architecture, framework or build pipeline. The important things to recognize are:

  • Deployable projects are frontend only and consists of just static files (html/css/javascript/images).
  • Deployable projects build all the files they need to run into some single output directory (dist/build/public/etc).
  • Deployable projects have a command that builds the project and optionally runs tests (e.g. npm run build).
  • Deployable projects feature an index.html and a 404.html in the output directory after being built.
  • Deployable projects handle routing on the frontend (all server requests will return the contents of index.html).

If your project does not meet all the deployable requirements then you can clone/fork this repository and build upon it or tweak your project to fit.


2. Obtain Token

ezgif com-video-to-gif


  1. Navigate to GitHub Personal Access Token Settings
  2. Enter a Token Description and select the repo scope
  3. Scroll down and click Generate Token
  4. Copy the generated access token to clipboard

3. Enable TravisCI

ezgif com-gif-maker


  1. Visit your TravisCI Dashboard and find the deployable repository
  2. Turn on the project switch and click the settings icon
  3. Turn on both Auto Cancellation switches
  4. Under Environment Variables enter GITHUB_TOKEN as Name
  5. Paste the generated access token as Value and click Add

4. Configure Build

If you do not have a domain name for your project then use *.deployable.site where * is any namespace that has not already been taken by another deployer. Choosing this option limits your site to http only.

language: node_js
node_js:
- "7"
script: npm run build // The script that builds the app
deploy:
local_dir: dist // The distributed output directory fqdn: deployable.site // The domain name of the deployed site
provider: pages
skip_cleanup: true
github_token: $GITHUB_TOKEN
on:
branch: master

  1. Clone the deployable project to your local machine
  2. Add a travis.yml file like the one above to the project root
  3. Update script attribute with the command that builds your project
  4. Update local_dir attribute with the name of the project output directory
  5. Update fqdn attribute with the domain name the project should be deployed

5. Trigger Deploy

  1. Add and commit the changes to travis.yml then git push
  2. Check the build and deploy progress on TravisCI
  3. When the build succeeds visit your shiny new site at the domain you specified

About

A ready-to-deploy static web app template and tutorial

Resources

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

deployable.site

See this project deployed at https://deployable.site

This repo simply serves as a very minimalist progressive web app boilerplate. The README however is a step-by-step guide demonstrating how to properly deploy a static web application (such as this) to GitHub pages without ever checking in built assets or directly pushing to the gh-pages branch. This approach was pieced together from various blog posts and stackoverflow answers, making the most of free services provided by GitHub, TravisCI and CloudFlare to promote applying industry standard workflows to open source apps; review, build, test, deploy and serve over https for free with almost no configuration! Or servers for that matter 🎣


👼 You need a free TravisCI account and CloudFlare basic account (if you require custom https domains)


Setup Overview

  1. Prepare Project: create a deployable project repository or use a fork of this repo
  2. Obtain Token: one per project from here, copy it and use as the value of GITHUB_TOKEN in travis
  3. Enable TravisCI: switch on builds for the project here and add the GITHUB_TOKEN environment variable
  4. Configure Build: add a file like this to the project root and configure for your application
  5. Trigger Deploy: push to master or merge a pull request to invoke a full build and deploy 💥

1. Prepare Project

This structure of this repository adheres to a deployable configuration but that doesn't mean you have to use this code as a basis for your deployable project. This approach will work with almost any static site architecture, framework or build pipeline. The important things to recognize are:

  • Deployable projects are frontend only and consists of just static files (html/css/javascript/images).
  • Deployable projects build all the files they need to run into some single output directory (dist/build/public/etc).
  • Deployable projects have a command that builds the project and optionally runs tests (e.g. npm run build).
  • Deployable projects feature an index.html and a 404.html in the output directory after being built.
  • Deployable projects handle routing on the frontend (all server requests will return the contents of index.html).

If your project does not meet all the deployable requirements then you can clone/fork this repository and build upon it or tweak your project to fit.


2. Obtain Token

ezgif com-video-to-gif


  1. Navigate to GitHub Personal Access Token Settings
  2. Enter a Token Description and select the repo scope
  3. Scroll down and click Generate Token
  4. Copy the generated access token to clipboard

3. Enable TravisCI

ezgif com-gif-maker


  1. Visit your TravisCI Dashboard and find the deployable repository
  2. Turn on the project switch and click the settings icon
  3. Turn on both Auto Cancellation switches
  4. Under Environment Variables enter GITHUB_TOKEN as Name
  5. Paste the generated access token as Value and click Add

4. Configure Build

If you do not have a domain name for your project then use *.deployable.site where * is any namespace that has not already been taken by another deployer. Choosing this option limits your site to http only.

language: node_js
node_js:
- "7"
script: npm run build // The script that builds the app
deploy:
local_dir: dist // The distributed output directory fqdn: deployable.site // The domain name of the deployed site
provider: pages
skip_cleanup: true
github_token: $GITHUB_TOKEN
on:
branch: master

  1. Clone the deployable project to your local machine
  2. Add a travis.yml file like the one above to the project root
  3. Update script attribute with the command that builds your project
  4. Update local_dir attribute with the name of the project output directory
  5. Update fqdn attribute with the domain name the project should be deployed

5. Trigger Deploy

  1. Add and commit the changes to travis.yml then git push
  2. Check the build and deploy progress on TravisCI
  3. When the build succeeds visit your shiny new site at the domain you specified

About

A ready-to-deploy static web app template and tutorial

Resources

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

deployable.site

See this project deployed at https://deployable.site

This repo simply serves as a very minimalist progressive web app boilerplate. The README however is a step-by-step guide demonstrating how to properly deploy a static web application (such as this) to GitHub pages without ever checking in built assets or directly pushing to the gh-pages branch. This approach was pieced together from various blog posts and stackoverflow answers, making the most of free services provided by GitHub, TravisCI and CloudFlare to promote applying industry standard workflows to open source apps; review, build, test, deploy and serve over https for free with almost no configuration! Or servers for that matter 🎣


👼 You need a free TravisCI account and CloudFlare basic account (if you require custom https domains)


Setup Overview

  1. Prepare Project: create a deployable project repository or use a fork of this repo
  2. Obtain Token: one per project from here, copy it and use as the value of GITHUB_TOKEN in travis
  3. Enable TravisCI: switch on builds for the project here and add the GITHUB_TOKEN environment variable
  4. Configure Build: add a file like this to the project root and configure for your application
  5. Trigger Deploy: push to master or merge a pull request to invoke a full build and deploy 💥

1. Prepare Project

This structure of this repository adheres to a deployable configuration but that doesn't mean you have to use this code as a basis for your deployable project. This approach will work with almost any static site architecture, framework or build pipeline. The important things to recognize are:

  • Deployable projects are frontend only and consists of just static files (html/css/javascript/images).
  • Deployable projects build all the files they need to run into some single output directory (dist/build/public/etc).
  • Deployable projects have a command that builds the project and optionally runs tests (e.g. npm run build).
  • Deployable projects feature an index.html and a 404.html in the output directory after being built.
  • Deployable projects handle routing on the frontend (all server requests will return the contents of index.html).

If your project does not meet all the deployable requirements then you can clone/fork this repository and build upon it or tweak your project to fit.


2. Obtain Token

ezgif com-video-to-gif


  1. Navigate to GitHub Personal Access Token Settings
  2. Enter a Token Description and select the repo scope
  3. Scroll down and click Generate Token
  4. Copy the generated access token to clipboard

3. Enable TravisCI

ezgif com-gif-maker


  1. Visit your TravisCI Dashboard and find the deployable repository
  2. Turn on the project switch and click the settings icon
  3. Turn on both Auto Cancellation switches
  4. Under Environment Variables enter GITHUB_TOKEN as Name
  5. Paste the generated access token as Value and click Add

4. Configure Build

If you do not have a domain name for your project then use *.deployable.site where * is any namespace that has not already been taken by another deployer. Choosing this option limits your site to http only.

language: node_js
node_js:
- "7"
script: npm run build // The script that builds the app
deploy:
local_dir: dist // The distributed output directory fqdn: deployable.site // The domain name of the deployed site
provider: pages
skip_cleanup: true
github_token: $GITHUB_TOKEN
on:
branch: master

  1. Clone the deployable project to your local machine
  2. Add a travis.yml file like the one above to the project root
  3. Update script attribute with the command that builds your project
  4. Update local_dir attribute with the name of the project output directory
  5. Update fqdn attribute with the domain name the project should be deployed

5. Trigger Deploy

  1. Add and commit the changes to travis.yml then git push
  2. Check the build and deploy progress on TravisCI
  3. When the build succeeds visit your shiny new site at the domain you specified

About

A ready-to-deploy static web app template and tutorial

Resources

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages