├── .gitignore ├── .markdownlint.json ├── .prettierrc ├── LICENSE ├── README.md ├── content └── sites │ ├── animalsupply.com │ ├── animalsupply.com-main.jpg │ └── index.md │ ├── augustinusbader.com │ ├── augustinusbader.com-main.jpg │ └── index.md │ ├── autobernard.com │ ├── autobernard.com-main.jpg │ └── index.md │ ├── bang-olufsen.com │ ├── bang-olufsen.com-main.jpg │ └── index.md │ ├── biggreenegg.co.uk │ ├── biggreenegg.co.uk-main.jpg │ └── index.md │ ├── boutique.chainethermale.fr │ ├── boutique.chainethermale.fr-main.jpg │ └── index.md │ ├── bowerswilkins.com │ ├── bowerswilkins.com-main.jpg │ └── index.md │ ├── ca.braun.com │ ├── ca.braun.com-main.jpg │ └── index.md │ ├── cajunbowfishing.com │ ├── cajunbowfishing.com-main.jpg │ └── index.md │ ├── carluccios.com │ ├── carluccios.com-main.jpg │ └── index.md │ ├── casper.com │ ├── casper.com-main.jpg │ └── index.md │ ├── chainethermale.fr │ ├── chainethermale.fr-main.jpg │ └── index.md │ ├── clare.com │ ├── clare.com-main.jpg │ └── index.md │ ├── collegien-shop.com │ ├── collegien-shop.com-main.jpg │ └── index.md │ ├── compagniedesspas.fr │ ├── compagniedesspas.fr-main.jpg │ └── index.md │ ├── danielwellington.com │ ├── danielwellington.com-main.jpg │ └── index.md │ ├── eleganza-shop.com │ ├── eleganza-shop.com-main.jpg │ └── index.md │ ├── f1vision.com │ ├── f1vision.com-main.jpg │ └── index.md │ ├── george.com │ ├── george.com-main.jpg │ └── index.md │ ├── goat.com │ ├── goat.com-main.jpg │ └── index.md │ ├── hartsofstur.com │ ├── hartsofstur.com-main.jpg │ └── index.md │ ├── ingmarson.com │ ├── index.md │ └── ingmarson.com-main.jpg │ ├── klebefieber.de │ ├── index.md │ └── klebefieber.de-main.jpg │ ├── kodak.com │ ├── index.md │ └── kodak.com-main.jpg │ ├── konga.com │ ├── index.md │ └── konga.com-main.jpg │ ├── lancome-usa.com │ ├── index.md │ └── lancome-usa.com-main.jpg │ ├── net-a-porter.com │ ├── index.md │ └── net-a-porter.com-main.jpg │ ├── oliverbonas.com │ ├── index.md │ └── oliverbonas.com-main.jpg │ ├── paulaschoice.com │ ├── index.md │ └── paulaschoice.com-main.jpg │ ├── rachio.com │ ├── index.md │ └── rachio.com-main.jpg │ ├── roeckl.com │ ├── index.md │ └── roeckl.com-main.jpg │ ├── shopflamingo.com │ ├── index.md │ └── shopflamingo.com-main.jpg │ ├── soboredclub.com │ ├── index.md │ └── soboredclub.com-main.jpg │ ├── specialmilano.com │ ├── index.md │ └── specialmilano.com-main.jpg │ ├── store.gatsbyjs.org │ ├── index.md │ └── store.gatsbyjs.org-main.jpg │ ├── strivectin.com │ ├── index.md │ └── strivectin.com-main.jpg │ ├── supercluster.com │ ├── index.md │ └── supercluster.com-main.jpg │ ├── sweetwater.com │ ├── index.md │ └── sweetwater.com-main.jpg │ ├── takearecess.com │ ├── index.md │ └── takearecess.com-main.jpg │ ├── terrang.fr │ ├── index.md │ └── terrang.fr-main.jpg │ ├── tiltaing.com │ ├── index.md │ └── tiltaing.com-main.jpg │ ├── ukmeds.co.uk │ ├── index.md │ └── ukmeds.co.uk-main.jpg │ ├── underarmour.co.uk │ ├── index.md │ └── underarmour.co.uk-main.jpg │ └── yogagirl.com │ ├── index.md │ └── yogagirl.com-main.jpg ├── gatsby-browser.js ├── gatsby-config.js ├── gatsby-node.js ├── gatsby-ssr.js ├── package-lock.json ├── package.json ├── src ├── components │ ├── filters.js │ ├── layout.js │ ├── seo.js │ ├── siteCard.js │ ├── svg │ │ ├── cancel.js │ │ ├── github-mark.js │ │ └── search.js │ └── tags.js ├── images │ ├── headless-icon.png │ └── subscribe-pro-logo-800x168.png ├── pages │ ├── 404.js │ ├── about.js │ └── index.js └── templates │ └── site-details.js └── static ├── _redirects ├── googled50c7766767274ff.html ├── headless-page-home-1200x600.png └── robots.txt /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (http://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # Typescript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # dotenv environment variables file 55 | .env 56 | 57 | # gatsby files 58 | .cache/ 59 | public 60 | 61 | # Mac files 62 | .DS_Store 63 | 64 | # Yarn 65 | yarn-error.log 66 | .pnp/ 67 | .pnp.js 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | -------------------------------------------------------------------------------- /.markdownlint.json: -------------------------------------------------------------------------------- 1 | { 2 | "MD013": false, 3 | "MD025": false, 4 | "MD026": false, 5 | "MD029": { 6 | "style": "ordered" 7 | }, 8 | "MD033": false, 9 | "MD036": false 10 | } 11 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "trailingComma": "es5" 5 | } 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 gatsbyjs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Headless.page | A curated list of modern e-commerce sites. 2 | 3 | [![Netlify Status](https://api.netlify.com/api/v1/badges/7fe090e6-3907-47ac-b956-a38e1617bff9/deploy-status)](https://app.netlify.com/sites/headless-page/deploys) 4 | 5 | ## Overview 6 | 7 | Headless.page is a GatsbyJS site featuring a curated list of modern e-commerce sites with tech like headless architecture, API-first back-ends, PWA (Progress Web Application) features, etc. 8 | 9 | To submit content, simply submit a PR or email info@subscribepro.com. 10 | 11 | ## Running in Development 12 | 13 | 1. Pull the repo down locally. 14 | 15 | 2. Run: 16 | 17 | ```bash 18 | npm install 19 | npm run develop 20 | ``` 21 | 22 | 3. Connect to the local site in a browser at `http:\\localhost:8000`. 23 | -------------------------------------------------------------------------------- /content/sites/animalsupply.com/animalsupply.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/animalsupply.com/animalsupply.com-main.jpg -------------------------------------------------------------------------------- /content/sites/animalsupply.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Animal Supply Co. 3 | dateAdded: '2018-09-18' 4 | coverImage: ./animalsupply.com-main.jpg 5 | url: https://www.animalsupply.com/ 6 | shortDescription: Leading US pet foods and supplies distributor. 7 | tech: 8 | - Headless 9 | backends: 10 | - OroCommerce 11 | --- 12 | 13 | By leveraging OroCommerce as a centralized backend order management system, Animal Supply uses the application as a headless eCommerce platform. It looks like they are using OroCommerce in a headless way from the mobile app. 14 | 15 | ## References 16 | 17 | * [Major Pet Foods Supplier Uses OroCommerce to Implement Headless eCommerce for 3PL Support](https://oroinc.com/b2b-ecommerce/blog/major-pet-foods-supplier-uses-orocommerce-to-implement-headless-ecommerce-for-3pl-support) 18 | * [Animal Supply Company Releases Mobile App](http://www.petbusiness.com/Animal-Supply-Company-Releases-Mobile-App/) 19 | -------------------------------------------------------------------------------- /content/sites/augustinusbader.com/augustinusbader.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/augustinusbader.com/augustinusbader.com-main.jpg -------------------------------------------------------------------------------- /content/sites/augustinusbader.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Augustinus Bader 3 | dateAdded: '2019-01-31' 4 | coverImage: ./augustinusbader.com-main.jpg 5 | url: https://www.augustinusbader.com 6 | shortDescription: Revolutionary science, biological wisdom 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | backends: 11 | - Contentful 12 | - Shopify 13 | --- 14 | 15 | > "...another example of...Shopify’s APIs...to create a headless approach, with...Contenful CMS for their presentation layer and...components via Shopify..." 16 | 17 | ## References 18 | 19 | * [Examples of Headless Shopify...Implementations | Paul Rogers Blog](https://paulnrogers.com/headless-shopify/) 20 | -------------------------------------------------------------------------------- /content/sites/autobernard.com/autobernard.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/autobernard.com/autobernard.com-main.jpg -------------------------------------------------------------------------------- /content/sites/autobernard.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Autobernard 3 | dateAdded: '2019-10-31' 4 | coverImage: ./autobernard.com-main.jpg 5 | url: https://www.autobernard.com/ 6 | shortDescription: 3rd French car distributor 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | - PWA 11 | frameworks: 12 | - React 13 | backends: 14 | - Front-Commerce 15 | - Magento 16 | - Algolia 17 | --- 18 | 19 | A Front-Commerce project using a headless Magento2 store and Algolia integration. 20 | 21 | > "The main and primary goal of this new web platform is to support the group's multi-channel strategy by offering users the possibility to book and eventually buy their vehicles directly online." 22 | 23 | ## Features 24 | 25 | - A complete and detailed catalogue of the vehicles available with relevant filters (maximum number of kilometers, maximum price, brand, conversion premium, etc.) 26 | - The ability for users, at any time, to be able to compare the characteristics of 3 vehicles in parallel 27 | - The possibility for Internet users to request a funding, book and pay for their reservations online 28 | - The possibility of making an appointment in the workshop or requesting a quote 29 | - Define alerts and searches 30 | 31 | ## References 32 | 33 | - [En route vers une nouvelle plateforme digitale pour le groupe Auto Bernard](https://www.webqam.fr/content/en-route-vers-une-nouvelle-plateforme-digitale-pour-le-groupe-auto-bernard) (+ translation) 34 | - [Front-Commerce's showcase page](https://www.front-commerce.com/en/showcase/) 35 | -------------------------------------------------------------------------------- /content/sites/bang-olufsen.com/bang-olufsen.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/bang-olufsen.com/bang-olufsen.com-main.jpg -------------------------------------------------------------------------------- /content/sites/bang-olufsen.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Bang & Olufsen 3 | dateAdded: '2019-03-25' 4 | coverImage: ./bang-olufsen.com-main.jpg 5 | url: https://www.bang-olufsen.com/en 6 | shortDescription: One of the world’s most iconic audio-visual brands, leading the way in design, technology, and innovation for more than 90 years. 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | frameworks: 11 | - Next.js 12 | - React 13 | backends: 14 | - Commercetools 15 | - Contentful 16 | --- 17 | 18 | The new Bang & Olfusen site is built using Next.js with Contentful and commercetools on the back-end. 19 | 20 | > "Built on the commercetools and Contentful platforms with a headless, micro-services architecture and API-first approach." 21 | 22 | -------------------------------------------------------------------------------- /content/sites/biggreenegg.co.uk/biggreenegg.co.uk-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/biggreenegg.co.uk/biggreenegg.co.uk-main.jpg -------------------------------------------------------------------------------- /content/sites/biggreenegg.co.uk/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Big Green Egg 3 | dateAdded: '2018-11-30' 4 | coverImage: ./biggreenegg.co.uk-main.jpg 5 | url: https://www.biggreenegg.co.uk/ 6 | shortDescription: Big Green Egg is the leading, charcoal fuelled, cook-everything, machine, a phenomenon of today. 7 | tech: 8 | - Headless 9 | frameworks: 10 | - AngularJS 11 | backends: 12 | - Magento 13 | --- 14 | 15 | The Big Green Egg site uses Magento as a headless back-end with a front-end built using the AngularJS framework. 16 | 17 | ## References 18 | 19 | * [Introduction to Headless eCommerce – Example Websites, Platforms & Implementation Options | Paul Rogers](https://paulnrogers.com/introduction-to-headless-ecommerce/) 20 | 21 | -------------------------------------------------------------------------------- /content/sites/boutique.chainethermale.fr/boutique.chainethermale.fr-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/boutique.chainethermale.fr/boutique.chainethermale.fr-main.jpg -------------------------------------------------------------------------------- /content/sites/boutique.chainethermale.fr/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: La Boutique (Chaîne Thermale & Compagnie Des Spas) 3 | dateAdded: '2019-10-30' 4 | coverImage: ./boutique.chainethermale.fr-main.jpg 5 | url: https://boutique.chainethermale.fr/ 6 | shortDescription: Gift shop for thermal cures and spas 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | frameworks: 11 | - React 12 | backends: 13 | - Front-Commerce 14 | - Magento 15 | --- 16 | 17 | A Front-Commerce project using a headless Magento2 store, to sell giftcards and giftboxes for “Chaîne Thermale du Soleil” and “Compagnie des Spas”‘s trips. 18 | 19 |
20 | 21 | > "It’s a migration from a Magento1 CE. 22 | > 23 | > Our client liked the ability to adapt the funnel whether there is a shipping to handle or not, the built-in labels on products (instead of using an extension for that) and the easiness to put some specific custom behavior." 24 | 25 | Here is a non-exhaustive list of specific project developments: 26 | 27 | - Built-in specific product’s labels on certain conditions (free delivery, X% discount) 28 | - AMASTY’s Gift Card extension support 29 | - A product can be virtual or physical after customer’s choice, impacting the need of shipping step 30 | - No shipping step in the funnel if only virtual products are ordered 31 | - PDF custom generation (for gift certificates) with client’s business logic for numbering 32 | - Google Maps on product page as an attribute 33 | - Inserting a custom page as a product in a category listing 34 | 35 | ## References 36 | 37 | - [Front-Commerce's showcase page](https://www.front-commerce.com/en/showcase/) 38 | - [Production ready (Front-Commerce blog)](https://www.front-commerce.com/en/2018/03/production-ready/) 39 | -------------------------------------------------------------------------------- /content/sites/bowerswilkins.com/bowerswilkins.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/bowerswilkins.com/bowerswilkins.com-main.jpg -------------------------------------------------------------------------------- /content/sites/bowerswilkins.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Bowers & Wilkins 3 | dateAdded: '2018-10-31' 4 | coverImage: ./bowerswilkins.com-main.jpg 5 | url: https://www.bowerswilkins.com/ 6 | shortDescription: Storied British audio brand with high-end speakers. 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | backends: 11 | - Magento 12 | - Drupal 13 | --- 14 | 15 | Magento was used in a partially headless mode together with Drupal to create a fast site with vast amounts of content, particularly high res imagery of Bowers & Wilkins products. 16 | 17 | ## References 18 | 19 | * [Human Element Launches Headless Magento Website for Bowers & Wilkins](https://www.human-element.com/human-element-launches-bowers-wilkins-magento-website/) 20 | -------------------------------------------------------------------------------- /content/sites/ca.braun.com/ca.braun.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/ca.braun.com/ca.braun.com-main.jpg -------------------------------------------------------------------------------- /content/sites/ca.braun.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Braun 3 | dateAdded: '2018-12-15' 4 | coverImage: ./ca.braun.com-main.jpg 5 | url: https://ca.braun.com/en-ca 6 | shortDescription: P&G brand Braun is a leader in shaving products and electric razors. 7 | frameworks: 8 | - GatsbyJS 9 | - React 10 | tech: 11 | - Headless 12 | - API-First Back-end 13 | backends: 14 | - Contentful 15 | --- 16 | 17 | The ca.braun.com site uses GatsbyJS + Contentful, the headless CMS, to provide rich content around Braun's shaving products for the Canadian audience. While the site doesn't technically offer commerce (IE a cart + checkout), it does provide detail product info and catalog features. 18 | 19 | ## References 20 | 21 | * [Braun | GatsbyJS.org Showcase](https://www.gatsbyjs.org/showcase/ca.braun.comen-ca) 22 | 23 | -------------------------------------------------------------------------------- /content/sites/cajunbowfishing.com/cajunbowfishing.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/cajunbowfishing.com/cajunbowfishing.com-main.jpg -------------------------------------------------------------------------------- /content/sites/cajunbowfishing.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Cajun Bowfishing 3 | dateAdded: '2018-09-01' 4 | coverImage: ./cajunbowfishing.com-main.jpg 5 | url: https://www.cajunbowfishing.com/ 6 | shortDescription: Cajun Bowfishing | Built by Escalade Sports 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | - JAMstack 11 | backends: 12 | - Salsify 13 | - Netlify 14 | frameworks: 15 | - GatsbyJS 16 | - React 17 | --- 18 | 19 | Technically it has a cart, but this site is more of a series of landing pages for some of the products. Still it uses product data from Salsify in a headless manner with a GatsbyJS front-end and is hosted on Netlify. 20 | 21 | ## References 22 | 23 | * [Cajun Bowfishing | GatsbyJS.org Showcase](https://www.gatsbyjs.org/showcase/cajunbowfishing.com) 24 | -------------------------------------------------------------------------------- /content/sites/carluccios.com/carluccios.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/carluccios.com/carluccios.com-main.jpg -------------------------------------------------------------------------------- /content/sites/carluccios.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Carluccio’s 3 | dateAdded: '2019-03-12' 4 | coverImage: ./carluccios.com-main.jpg 5 | url: https://www.carluccios.com/ 6 | shortDescription: Local Italian restaurant 7 | tech: 8 | - Headless 9 | backends: 10 | - BigCommerce 11 | - WordPress 12 | --- 13 | 14 | > "Carluccio’s built this presentation layer (i.e. the site experience) on WordPress, then used the BigCommerce for WordPress plugin to implement a headless commerce solution.

This allows a customer to stay on the same site (no subdomain) throughout the experience." 15 | 16 | ## References 17 | 18 | * [Headless Commerce Examples | Big Commerce](https://www.bigcommerce.com/blog/headless-commerce/#headless-commerce-examples) 19 | -------------------------------------------------------------------------------- /content/sites/casper.com/casper.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/casper.com/casper.com-main.jpg -------------------------------------------------------------------------------- /content/sites/casper.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Casper 3 | dateAdded: '2019-02-20' 4 | coverImage: ./casper.com-main.jpg 5 | url: https://casper.com/ 6 | shortDescription: An obsessively engineered mattress at a shockingly fair price. 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | frameworks: 11 | - React 12 | backends: 13 | - Contentful 14 | --- 15 | 16 | The Casper site is definitely using React and doing some innovative serverless stuff. It looks like they are using the Contentful headless CMS. The Casper team has published a nice write-up in their tech blog on some cool image stuff they are doing also. 17 | 18 | ## References 19 | 20 | * [Responsive Images at Casper](https://medium.com/caspertechteam/responsive-images-at-casper-c471f5b8307d) 21 | * [How we shaved 1.7 seconds off casper.com by self-hosting Optimizely](https://medium.com/caspertechteam/we-shaved-1-7-seconds-off-casper-com-by-self-hosting-optimizely-2704bcbff8ec) 22 | -------------------------------------------------------------------------------- /content/sites/chainethermale.fr/chainethermale.fr-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/chainethermale.fr/chainethermale.fr-main.jpg -------------------------------------------------------------------------------- /content/sites/chainethermale.fr/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Chaîne Thermale du Soleil 3 | dateAdded: '2019-03-12' 4 | coverImage: ./chainethermale.fr-main.jpg 5 | url: https://www.chainethermale.fr/ 6 | shortDescription: One of the oldest French Thermes and spa 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | - PWA 11 | frameworks: 12 | - React 13 | backends: 14 | - Front-Commerce 15 | - WordPress 16 | - Algolia 17 | --- 18 | 19 | A multi-store Front-Commerce project including two stores on two sites: 20 | 21 | * https://www.compagniedesspas.fr/ 22 | * https://www.chainethermale.fr/ 23 | 24 |
25 | 26 | > "Front-Commerce middleware retrieves data through WordPress REST API and ElasticSearch projection. Choosing WordPress allowed the team to implement a WYSIWYG editor, used by site managers to easily build content with a beautiful layout..." 27 | 28 | ## References 29 | 30 | * [« La Chaîne Thermale du Soleil » chose Front-Commerce](https://www.front-commerce.com/en/2019/02/la-chaine-thermale-du-soleil-chooses-front-commerce/) 31 | 32 | -------------------------------------------------------------------------------- /content/sites/clare.com/clare.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/clare.com/clare.com-main.jpg -------------------------------------------------------------------------------- /content/sites/clare.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Clare 3 | dateAdded: '2019-03-13' 4 | coverImage: ./clare.com-main.jpg 5 | url: https://www.clare.com/ 6 | shortDescription: Paint shopping simplified. 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | frameworks: 11 | - React 12 | backends: 13 | - Contentful 14 | - Shopify 15 | - Now 16 | --- 17 | 18 | A beautiful site built with React and headless Shopify and using Now by ZEIT and Contenful as well. 19 | -------------------------------------------------------------------------------- /content/sites/collegien-shop.com/collegien-shop.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/collegien-shop.com/collegien-shop.com-main.jpg -------------------------------------------------------------------------------- /content/sites/collegien-shop.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Collégien 3 | dateAdded: '2019-10-31' 4 | coverImage: ./collegien-shop.com-main.jpg 5 | url: https://en.collegien-shop.com/ 6 | shortDescription: Collégien - slippers & socks made in France 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | - PWA 11 | frameworks: 12 | - React 13 | backends: 14 | - Front-Commerce 15 | - Magento 16 | --- 17 | 18 | A Front-Commerce project using a headless Magento 1 store. Multi-store, multi-lingual and multi-currency. 19 | This is the first online store with Magento 1 (OpenMage's Magento LTS) and Front-Commerce. 20 | 21 | ## Features 22 | 23 | - A B2C area 24 | - A B2B area reserved for professionals with efficient cart 25 | - Advanced management of Magento 1 widgets 26 | 27 | ## References 28 | 29 | - [Front-Commerce's showcase page](https://www.front-commerce.com/en/showcase/) 30 | -------------------------------------------------------------------------------- /content/sites/compagniedesspas.fr/compagniedesspas.fr-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/compagniedesspas.fr/compagniedesspas.fr-main.jpg -------------------------------------------------------------------------------- /content/sites/compagniedesspas.fr/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Compagnie des Spas 3 | dateAdded: '2019-10-31' 4 | coverImage: ./compagniedesspas.fr-main.jpg 5 | url: https://www.compagniedesspas.fr/ 6 | shortDescription: One of the oldest French Thermes and spa 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | - PWA 11 | frameworks: 12 | - React 13 | backends: 14 | - Front-Commerce 15 | - WordPress 16 | - Algolia 17 | --- 18 | 19 | A multi-store Front-Commerce project including two stores on two sites: 20 | 21 | - https://www.compagniedesspas.fr/ 22 | - https://www.chainethermale.fr/ 23 | 24 |
25 | 26 | > "Front-Commerce middleware retrieves data through WordPress REST API and ElasticSearch projections. Choosing WordPress allowed the team to implement a WYSIWYG editor, used by site managers to easily build content with a beautiful layout..." 27 | 28 | ## References 29 | 30 | - [« La Chaîne Thermale du Soleil » chose Front-Commerce](https://www.front-commerce.com/en/2019/02/la-chaine-thermale-du-soleil-chooses-front-commerce/) 31 | -------------------------------------------------------------------------------- /content/sites/danielwellington.com/danielwellington.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/danielwellington.com/danielwellington.com-main.jpg -------------------------------------------------------------------------------- /content/sites/danielwellington.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Daniel Wellington 3 | dateAdded: '2019-02-13' 4 | coverImage: ./danielwellington.com-main.jpg 5 | url: https://www.danielwellington.com/us/ 6 | shortDescription: Daniel Wellington, maker of iconic timepieces and accessories, worn on all occasions by men and women all over the world. 7 | tech: 8 | - Headless 9 | - JAMstack 10 | backends: 11 | - Magento 12 | frameworks: 13 | - GatsbyJS 14 | - React 15 | --- 16 | 17 | Built with Gatsby on the front-end and using Magento in a headless way on the back-end. See the reference for Thibaut Remy's writeup on how they handled the static build process for such a large site. 18 | 19 | ## References 20 | 21 | * [Building a large, internationalized e-commerce website with Gatsby at Daniel Wellington | GatsbyJS.org Blog](https://www.gatsbyjs.org/blog/2019-01-28-building-a-large-ecommerce-website-with-gatsby-at-daniel-wellington/) 22 | -------------------------------------------------------------------------------- /content/sites/eleganza-shop.com/eleganza-shop.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/eleganza-shop.com/eleganza-shop.com-main.jpg -------------------------------------------------------------------------------- /content/sites/eleganza-shop.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Eleganza 3 | dateAdded: '2019-11-13' 4 | coverImage: ./eleganza-shop.com-main.jpg 5 | url: https://www.eleganza-shop.com/ 6 | shortDescription: We started our first store in the heart of Hilversum 1981, with the primary objective of offering an alternative to consumers who look beyond the mainstream and have an eye for and interest in international fashion trends. 7 | tech: 8 | - Headless 9 | - Magento PWA Studio 10 | backends: 11 | - Magento 12 | --- 13 | 14 | > "Since the PWA launched they saw a 5x decrease in server response time and a 50% increase in page views per session. And an increased average session time by 19%." 15 | 16 | ## References 17 | 18 | * [PWA Studio Stats](https://pwastudio-stats.com/) 19 | -------------------------------------------------------------------------------- /content/sites/f1vision.com/f1vision.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/f1vision.com/f1vision.com-main.jpg -------------------------------------------------------------------------------- /content/sites/f1vision.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: F1 Vision 3 | dateAdded: '2018-05-02' 4 | coverImage: ./f1vision.com-main.jpg 5 | url: https://www.f1vision.com/ 6 | shortDescription: F1 Vision is a rental device available at Formula 1 events to enhance the fan experience. 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | backends: 11 | - Stripe 12 | framesworks: 13 | - GatsbyJS 14 | - React 15 | --- 16 | 17 | F1 Vision is built with a blazing fast GastbyJS front-end and a checkout powered by Stripe. 18 | 19 | ## References 20 | 21 | * [F1 Vision | GatsbyJS.org Showcase](https://www.gatsbyjs.org/showcase/www.f1vision.com) 22 | -------------------------------------------------------------------------------- /content/sites/george.com/george.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/george.com/george.com-main.jpg -------------------------------------------------------------------------------- /content/sites/george.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: George. 3 | dateAdded: '2018-02-27' 4 | coverImage: ./george.com-main.jpg 5 | url: https://www.george.com/ 6 | shortDescription: Leading UK clothing brand, part of ASDA Walmart. 7 | tech: 8 | - PWA 9 | backends: 10 | - Demandware 11 | --- 12 | 13 | In early 2018 the team at George.com upgraded the site to a PWA and saw dramatic improvements in site speed, engagement and most importantly mobile conversions. 14 | 15 | > "After upgrading their site to a Progressive Web App (PWA), the brand saw a 31 percent increase in mobile conversion." 16 | 17 | ## References 18 | 19 | * [George.com enhances the mobile customer experience with new Progressive Web App](https://developers.google.com/web/showcase/2018/asda-george) 20 | 21 | -------------------------------------------------------------------------------- /content/sites/goat.com/goat.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/goat.com/goat.com-main.jpg -------------------------------------------------------------------------------- /content/sites/goat.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GOAT 3 | dateAdded: '2019-04-30' 4 | coverImage: ./goat.com-main.jpg 5 | url: https://www.goat.com/ 6 | shortDescription: Founded in 2015 and based in Los Angeles, California, GOAT is the safest way to buy and sell sneakers. 7 | tech: 8 | - Headless 9 | frameworks: 10 | - React 11 | --- 12 | 13 | GOAT uses React on the front-end and headless architecture. 14 | 15 | -------------------------------------------------------------------------------- /content/sites/hartsofstur.com/hartsofstur.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/hartsofstur.com/hartsofstur.com-main.jpg -------------------------------------------------------------------------------- /content/sites/hartsofstur.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Harts of Stur 3 | dateAdded: '2019-02-19' 4 | coverImage: ./hartsofstur.com-main.jpg 5 | url: https://www.hartsofstur.com/ 6 | shortDescription: One of the UK's largest in store and on line retailers of Cookware, Kitchenware and Kitchen Electrics 7 | tech: 8 | - PWA 9 | - Headless 10 | - Deity 11 | frameworks: 12 | - React 13 | backends: 14 | - Magento 15 | --- 16 | 17 | Headless Magento, front-end created with Deity PWA, based on React framework. 18 | 19 | ## References 20 | 21 | * [Introduction to Headless eCommerce | Paul Rogers Blog](https://paulnrogers.com/introduction-to-headless-ecommerce/) 22 | 23 | -------------------------------------------------------------------------------- /content/sites/ingmarson.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: INGMARSON 3 | dateAdded: '2019-11-15' 4 | coverImage: ./ingmarson.com-main.jpg 5 | url: https://ingmarson.com/ 6 | shortDescription: High quality, ethically sourced clothing designs 7 | tech: 8 | - Headless 9 | - PWA 10 | - JAMstack 11 | frameworks: 12 | - React 13 | - Gatsby 14 | backends: 15 | - Snipcart 16 | --- 17 | 18 | A fast Gatsby progressive web app (PWA) built by Tim Walpole for INGMARSON using Snipcart, Forestry.io and other JAMstack tech. 19 | 20 | > "As a small (growing) company owner, Robert wants to be able to concentrate on what is important—delivering high quality, ethically sourced clothing designs. We don’t want to have to worry about maintaining a high-cost website, ensuring security, staying up-to-date, or meeting GDPR regulations for data storage." 21 | 22 | ## References 23 | 24 | * [INGMARSON’s Shopping Cart Integration in a Gatsby PWA](https://snipcart.com/blog/ingmarson-case-study) 25 | -------------------------------------------------------------------------------- /content/sites/ingmarson.com/ingmarson.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/ingmarson.com/ingmarson.com-main.jpg -------------------------------------------------------------------------------- /content/sites/klebefieber.de/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Klebefieber 3 | dateAdded: '2019-04-30' 4 | coverImage: ./klebefieber.de-main.jpg 5 | url: https://www.klebefieber.de/ 6 | shortDescription: Leading manufacturer and online retailer of wall tattoos and home decor in Germany. 7 | tech: 8 | - PWA 9 | - Headless 10 | frameworks: 11 | - Vue.js 12 | - Vue Storefront 13 | --- 14 | 15 | Divante CEO Tom Karwatka points out that Klebefieber implements PWA and the front-end is built with Vue Storefront. 16 | -------------------------------------------------------------------------------- /content/sites/klebefieber.de/klebefieber.de-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/klebefieber.de/klebefieber.de-main.jpg -------------------------------------------------------------------------------- /content/sites/kodak.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Kodak Store 3 | dateAdded: '2019-03-12' 4 | coverImage: ./kodak.com-main.jpg 5 | url: https://www.kodak.com/US/en/consumer/products/shop/default.htm 6 | shortDescription: Ubiquitous camera brand 7 | tech: 8 | - Headless 9 | backends: 10 | - BigCommerce 11 | - WordPress 12 | --- 13 | 14 | > "Kodak uses WordPress on the front-end to host their products, blog content, and merchandising. For checkout, they outsource PCI compliance, checkout uptime and security to BigCommerce." 15 | 16 | ## References 17 | 18 | * [Headless Commerce Examples | Big Commerce](https://www.bigcommerce.com/blog/headless-commerce/#headless-commerce-examples) 19 | -------------------------------------------------------------------------------- /content/sites/kodak.com/kodak.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/kodak.com/kodak.com-main.jpg -------------------------------------------------------------------------------- /content/sites/konga.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Konga 3 | dateAdded: '2017-02-09' 4 | coverImage: ./konga.com-main.jpg 5 | url: https://www.konga.com/ 6 | shortDescription: Konga is a leading e-commerce website in Nigeria 7 | tech: 8 | - PWA 9 | --- 10 | 11 | > "Konga cuts data usage 92% with new Progressive Web App" 12 | 13 | ## References 14 | 15 | * [Konga | developers.google.com](https://developers.google.com/web/showcase/2016/konga) 16 | 17 | -------------------------------------------------------------------------------- /content/sites/konga.com/konga.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/konga.com/konga.com-main.jpg -------------------------------------------------------------------------------- /content/sites/lancome-usa.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Lancôme 3 | dateAdded: '2017-05-30' 4 | coverImage: ./lancome-usa.com-main.jpg 5 | url: https://www.lancome-usa.com/ 6 | shortDescription: French luxury perfumes and cosmetics house that distributes products internationally. 7 | tech: 8 | - PWA 9 | backends: 10 | - Demandware 11 | --- 12 | 13 | Lancôme rebuilt their mobile site as a PWA to improve performance and conversions. The PWA launched in October 2016 and has been a great success. 14 | 15 | > "Lancôme saw their mobile sessions rise by more than 50%, and conversions increase by 17%." 16 | 17 | ## References 18 | 19 | * [Lancôme rebuilds their mobile website as a PWA, increases conversions 17%](https://developers.google.com/web/showcase/2017/lancome) 20 | -------------------------------------------------------------------------------- /content/sites/lancome-usa.com/lancome-usa.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/lancome-usa.com/lancome-usa.com-main.jpg -------------------------------------------------------------------------------- /content/sites/net-a-porter.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: NET-A-PORTER 3 | dateAdded: '2017-06-23' 4 | coverImage: ./net-a-porter.com-main.jpg 5 | url: https://www.net-a-porter.com/us/en/ 6 | shortDescription: Global leader in online luxury fashion 7 | frameworks: 8 | - Google Polymer 9 | --- 10 | 11 | > "NET-A-PORTER implemented a component-based design on their online properties using Google's Polymer library. The result was a large saving in development time, standarized code across their sites and an improved SEO performance through use of structured data." 12 | 13 | ## References 14 | 15 | * [NET-A-PORTER](https://developers.google.com/web/showcase/2016/net-a-porter) 16 | * [POLYMER IN PRODUCTION](http://techblog.net-a-porter.com/2016/02/polymer-in-production/) 17 | -------------------------------------------------------------------------------- /content/sites/net-a-porter.com/net-a-porter.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/net-a-porter.com/net-a-porter.com-main.jpg -------------------------------------------------------------------------------- /content/sites/oliverbonas.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Oliver Bonas 3 | dateAdded: '2018-05-09' 4 | coverImage: ./oliverbonas.com-main.jpg 5 | url: https://www.oliverbonas.com/ 6 | shortDescription: Oliver Bonas Is An Independent British Lifestyle Store, Designing Our Own Take On Fashion And Homeware. 7 | tech: 8 | - Headless 9 | backends: 10 | - Magento 11 | frameworks: 12 | - Angular.js 13 | --- 14 | 15 | As part of their replatforming effort (moving from Magento 1 to Magento 2), Oliver Bonas launched an Angular.js powered front-end together with a headless Magento 2 backend. 16 | 17 | ## References 18 | 19 | * [What is Oliver Bonas’s headless e-commerce approach?](https://www.retailconnections.co.uk/articles/oliver-bonas-headless-e-commerce/) 20 | -------------------------------------------------------------------------------- /content/sites/oliverbonas.com/oliverbonas.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/oliverbonas.com/oliverbonas.com-main.jpg -------------------------------------------------------------------------------- /content/sites/paulaschoice.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Paula's Choice Skincare 3 | dateAdded: '2019-05-01' 4 | coverImage: ./paulaschoice.com-main.jpg 5 | url: https://www.paulaschoice.com/ 6 | shortDescription: Signature brand from bestselling beauty author Paula Begoun. 7 | tech: 8 | - PWA 9 | backends: 10 | - Demandware 11 | - Mobify 12 | --- 13 | 14 | Paula's Choice is reporting some impressive stats after launchgin PWA features powered by Mobify. 15 | 16 | > "An A/B test of beauty brand Paula’s Choice Skincare’s Progressive Web App (PWA) carried out by Mobify has yielded a 40 per cent increase in revenue and a 46 per cent rise in conversion rate for the company." 17 | 18 | > "In addition to the revenue and conversion rate increases, the Paula’s Choice PWA also drove a 55 per cent increase in product views and a 61 per cent increase in add-to-cart rates. Additionally, in a time-to-task comparison, the Paula’s Choice PWA decreased the time it takes to search for a product and add it to the customer’s shopping cart by 67 per cent." 19 | 20 | ## References 21 | 22 | * [Paula's Choice PWA A/B test yields huge increases in conversions and revenue](https://mobilemarketingmagazine.com/paulas-choice-pwa-ab-test-yields-huge-increases-in-conversions-and-revenue) 23 | 24 | -------------------------------------------------------------------------------- /content/sites/paulaschoice.com/paulaschoice.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/paulaschoice.com/paulaschoice.com-main.jpg -------------------------------------------------------------------------------- /content/sites/rachio.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Rachio 3 | dateAdded: '2018-05-22' 4 | coverImage: ./rachio.com-main.jpg 5 | url: https://www.rachio.com/ 6 | shortDescription: Sprinkler automation startup - solutions for worry-free watering. 7 | tech: 8 | - Headless 9 | backends: 10 | - Shopify 11 | frameworks: 12 | - GatsbyJS 13 | - React 14 | --- 15 | 16 | The Shopify cart + checkout were used in combination with a headless product catalog fed from Shopify's APIs and a blazing fast front-end built with Gatsby. 17 | 18 | ## References 19 | 20 | * [GatsbyJS — building fast modern websites with React Kyle Mathews (@kylemathews)](https://www.youtube.com/watch?v=-EftEYczRVI) 21 | -------------------------------------------------------------------------------- /content/sites/rachio.com/rachio.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/rachio.com/rachio.com-main.jpg -------------------------------------------------------------------------------- /content/sites/roeckl.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: ROECKL 3 | dateAdded: '2019-11-13' 4 | coverImage: ./roeckl.com-main.jpg 5 | url: https://www.roeckl.com/ 6 | shortDescription: Hochwertige Accessoires für Damen & Herren 7 | tech: 8 | - Headless 9 | - Magento PWA Studio 10 | backends: 11 | - Magento 12 | --- 13 | 14 | > "Since the launch of the PWA ROECKL saw an increase in orders by 198% (mobile 172%). Furthermore, users have increased by 150% (mobile 175%) while their bounce rate decreases by 35% (mobile 39.8%)." 15 | 16 | ## References 17 | 18 | * [PWA Studio Stats](https://pwastudio-stats.com/) 19 | -------------------------------------------------------------------------------- /content/sites/roeckl.com/roeckl.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/roeckl.com/roeckl.com-main.jpg -------------------------------------------------------------------------------- /content/sites/shopflamingo.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Flamingo 3 | dateAdded: '2018-12-19' 4 | coverImage: ./shopflamingo.com-main.jpg 5 | url: https://www.shopflamingo.com 6 | shortDescription: A brand from Harry's for women's body care and hair removal products. 7 | frameworks: 8 | - GatsbyJS 9 | - React 10 | tech: 11 | - Headless 12 | - API-First Back-end 13 | backends: 14 | - Stripe 15 | --- 16 | 17 | The Flamingo site features an amazing design, awesome mobile CX/UX and is topped off with a good helping of Gatsby's "Blazing Fast". 18 | 19 | ## References 20 | 21 | * [Flamingo Case Study | GatsbyJS.org Blog](https://www.gatsbyjs.org/blog/2019-01-30-flamingo-case-study/) 22 | * [How We Used Gatsby.js to Build a Blazing Fast E-Commerce Site | Harry's Engineering Blog](https://medium.com/harrys-engineering/how-we-used-gatsby-js-to-build-a-blazing-fast-e-commerce-site-a9818145c67b) 23 | 24 | -------------------------------------------------------------------------------- /content/sites/shopflamingo.com/shopflamingo.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/shopflamingo.com/shopflamingo.com-main.jpg -------------------------------------------------------------------------------- /content/sites/soboredclub.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: So Bored Club 3 | dateAdded: '2019-02-19' 4 | coverImage: ./soboredclub.com-main.jpg 5 | url: https://soboredclub.com/ 6 | shortDescription: So Bored Club focused on producing streetwear clothing inspired by art, memes, Internet culture. 7 | tech: 8 | - Headless 9 | frameworks: 10 | - Vue.js 11 | - Vue Storefront 12 | --- 13 | 14 | Vue Storefront powered headless front-end. 15 | 16 | ## References 17 | 18 | * [Awesome Vue Storefront](https://github.com/frqnck/awesome-vue-storefront) 19 | -------------------------------------------------------------------------------- /content/sites/soboredclub.com/soboredclub.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/soboredclub.com/soboredclub.com-main.jpg -------------------------------------------------------------------------------- /content/sites/specialmilano.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Special Milano 3 | dateAdded: '2019-02-19' 4 | coverImage: ./specialmilano.com-main.jpg 5 | url: https://www.specialmilano.com/ 6 | shortDescription: Italian fashion retailer. 7 | tech: 8 | - Headless 9 | frameworks: 10 | - Vue.js 11 | - Vue Storefront 12 | --- 13 | 14 | > "Special Milano, the Italian fashion retailer needed to enchant their customers with a unique user experience while shopping online. To do so, they decided to come up with a proof-of-concept for a Progressive Web App Storefront for their online store." 15 | 16 | ## References 17 | 18 | * [Vue Storefront | Proven Implementations](https://www.vuestorefront.io/) 19 | * [Awesome Vue Storefront](https://github.com/frqnck/awesome-vue-storefront) 20 | -------------------------------------------------------------------------------- /content/sites/specialmilano.com/specialmilano.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/specialmilano.com/specialmilano.com-main.jpg -------------------------------------------------------------------------------- /content/sites/store.gatsbyjs.org/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Gatsby Swag Store 3 | dateAdded: '2019-01-31' 4 | coverImage: ./store.gatsbyjs.org-main.jpg 5 | url: https://store.gatsbyjs.org/ 6 | shortDescription: Great swag in exhange for PRs and dollars. 7 | frameworks: 8 | - GatsbyJS 9 | - React 10 | tech: 11 | - Headless 12 | - API-First Back-end 13 | backends: 14 | - Shopify 15 | --- 16 | 17 | Gatsby built their awesome swag store with, you guessed it, GatsbyJS! And they used Shopify for their checkout and as a headless product catalog. Checkout their writeup, linked below, for details about their design decisions and their awesome swag for contributions program. 18 | 19 | ## References 20 | 21 | * [Gatsby Swag Store Case Study | GatsbyJS.org Blog](https://www.gatsbyjs.org/blog/2019-01-24-swag-store/) 22 | 23 | -------------------------------------------------------------------------------- /content/sites/store.gatsbyjs.org/store.gatsbyjs.org-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/store.gatsbyjs.org/store.gatsbyjs.org-main.jpg -------------------------------------------------------------------------------- /content/sites/strivectin.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Strivectin 3 | dateAdded: '2019-11-16' 4 | coverImage: ./strivectin.com-main.jpg 5 | url: https://www.strivectin.com/ 6 | shortDescription: StriVectin is a collection of smart, targeted solutions for aging and changing skin. 7 | tech: 8 | - Headless 9 | - Storybook 10 | frameworks: 11 | - React 12 | - Gatsby 13 | backends: 14 | - Shopify 15 | - Prismic.io 16 | --- 17 | 18 | Headless Shopify site built with Gatsby, Storybook, Prismic.io and other modern tech. 19 | 20 | > "This has also been the smoothest cut-over of my entire career- your team and work are top notch." -Strivectin CDO 21 | 22 | ## References 23 | 24 | - [Headless Shopify: Lessons Learned Building with Gatsby, Part 1](https://www.getelevar.com/shopify/headless-shopify/) 25 | - [Headless Shopify: Lessons Learned Building with Gatsby, Part 2](https://www.getelevar.com/shopify/headless-shopify-learning-lessons/) 26 | -------------------------------------------------------------------------------- /content/sites/strivectin.com/strivectin.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/strivectin.com/strivectin.com-main.jpg -------------------------------------------------------------------------------- /content/sites/supercluster.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Supercluster 3 | dateAdded: '2019-03-13' 4 | coverImage: ./supercluster.com-main.jpg 5 | url: https://www.supercluster.com/store 6 | shortDescription: Supercluster is focused on stories of spacecraft, astronauts, and space exploration. 7 | frameworks: 8 | - GatsbyJS 9 | - React 10 | tech: 11 | - Headless 12 | - API-First Back-end 13 | backends: 14 | - Shopify 15 | - Contentful 16 | - Netlify 17 | --- 18 | 19 | Blazing fast site built with GatsbyJS and headless Shopify, hosted on Netlify. 20 | -------------------------------------------------------------------------------- /content/sites/supercluster.com/supercluster.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/supercluster.com/supercluster.com-main.jpg -------------------------------------------------------------------------------- /content/sites/sweetwater.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Sweetwater 3 | dateAdded: '2018-07-26' 4 | coverImage: ./sweetwater.com-main.jpg 5 | url: https://www.sweetwater.com/ 6 | shortDescription: Leading musical instruments retailer. 7 | tech: 8 | - PWA 9 | backends: 10 | - Custom Back-end 11 | --- 12 | 13 | Sweetwater has very deep site, filled with asset-rich content. And with those parameters, they were able to leverage PWA service workers to make a huge improvement in load time and performance, particularly on low-bandwidth mobile connections. Sweetwater was also able to create a limited offline mode with phone ordering and customer service information. That is a huge step forward vs. leaving their offline customers stuck with a never-ending page loading animation. 14 | 15 | ## References 16 | 17 | * [What is PWA (Progressive Web Application) and how does it apply to e-commerce?](https://medium.com/subscribe-pro-dev-blog/pwa-for-e-commerce-1b8db3d07a16) 18 | * [Sweetwater.com builds a PWA to speed up its mobile site](https://www.digitalcommerce360.com/2018/07/26/sweetwater-com-builds-a-pwa-to-speed-up-its-site/) 19 | -------------------------------------------------------------------------------- /content/sites/sweetwater.com/sweetwater.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/sweetwater.com/sweetwater.com-main.jpg -------------------------------------------------------------------------------- /content/sites/takearecess.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Recess 3 | dateAdded: '2019-03-13' 4 | coverImage: ./takearecess.com-main.jpg 5 | url: https://www.takearecess.com/ 6 | shortDescription: Recess is a sparkling water infused with hemp extract and adaptogens for balance and clarity. 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | backends: 11 | - Shopify 12 | - TakeShape 13 | - Netlify 14 | --- 15 | 16 | An innovative and beaitiful site built with headless Shopify and the TakeShape CMS, hosted on Netlify. -------------------------------------------------------------------------------- /content/sites/takearecess.com/takearecess.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/takearecess.com/takearecess.com-main.jpg -------------------------------------------------------------------------------- /content/sites/terrang.fr/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Terräng 3 | dateAdded: '2019-10-31' 4 | coverImage: ./terrang.fr-main.jpg 5 | url: https://www.terrang.fr/ 6 | shortDescription: Online military equipment and material 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | - PWA 11 | frameworks: 12 | - React 13 | backends: 14 | - Front-Commerce 15 | - Magento 16 | --- 17 | 18 | A full-featured Front-Commerce project using a headless Magento2 store. 19 | 20 |
21 | 22 | > "Advanced brand management with product attributes managed in the frontend, 23 | > Advanced filter and categorization management, 24 | > Search on large catalog (15,000 items)." 25 | 26 | ## References 27 | 28 | - [Front-Commerce's showcase page](https://www.front-commerce.com/en/showcase/) 29 | -------------------------------------------------------------------------------- /content/sites/terrang.fr/terrang.fr-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/terrang.fr/terrang.fr-main.jpg -------------------------------------------------------------------------------- /content/sites/tiltaing.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Tiltaing 3 | dateAdded: '2019-11-04' 4 | coverImage: ./tiltaing.com-main.jpg 5 | url: https://tiltaing.com/ 6 | shortDescription: Modular camera accessories for professionals in film, television, and video. 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | - Serverless 11 | - Server Side Rendered 12 | - PWA 13 | frameworks: 14 | - Vue.js 15 | - Nuxt.js 16 | backends: 17 | - WooCommerce 18 | - WPGraphQL 19 | - Prismic.io 20 | - Zeit Now 21 | --- 22 | 23 | > "ZEIT Now makes it effortless to deploy a Nuxt/Vue.js site for client review, staging, and production. With zero-config deployments and high performance serverless pre-rendering, I exclusively use ZEIT Now on Tiltaing." 24 | 25 | ## References 26 | 27 | * [Vue.js Solutions - ZEIT](https://zeit.co/solutions/vue) 28 | -------------------------------------------------------------------------------- /content/sites/tiltaing.com/tiltaing.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/tiltaing.com/tiltaing.com-main.jpg -------------------------------------------------------------------------------- /content/sites/ukmeds.co.uk/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: UK Meds 3 | dateAdded: '2019-11-13' 4 | coverImage: ./ukmeds.co.uk-main.jpg 5 | url: https://www.ukmeds.co.uk/ 6 | shortDescription: Online Pharmacy, Prescriptions and Doctor Service 7 | tech: 8 | - Headless 9 | - Magento PWA Studio 10 | backends: 11 | - Magento 12 | --- 13 | 14 | > "With the new PWA orders have increased by 30%. Their new PWA is 300% faster than their old platform and 5x faster than the Magento 2 store." 15 | 16 | ## References 17 | 18 | * [PWA Studio Stats](https://pwastudio-stats.com/) 19 | * [PWA for UK Meds redefines performance on Magento](https://wearejh.com/case-study/pwa-uk-meds-redefines-performance-magento/) 20 | -------------------------------------------------------------------------------- /content/sites/ukmeds.co.uk/ukmeds.co.uk-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/ukmeds.co.uk/ukmeds.co.uk-main.jpg -------------------------------------------------------------------------------- /content/sites/underarmour.co.uk/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Under Armour 3 | dateAdded: '2019-02-01' 4 | coverImage: ./underarmour.co.uk-main.jpg 5 | url: https://www.underarmour.co.uk/ 6 | shortDescription: Global sportswear brand. 7 | tech: 8 | - PWA 9 | - Mobify 10 | backends: 11 | - Demandware 12 | --- 13 | 14 | A global + fast and fully featured front-end, with PWA features and preformance and built with Mobify and Demandware. 15 | -------------------------------------------------------------------------------- /content/sites/underarmour.co.uk/underarmour.co.uk-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/underarmour.co.uk/underarmour.co.uk-main.jpg -------------------------------------------------------------------------------- /content/sites/yogagirl.com/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yoga Girl 3 | dateAdded: '2019-01-03' 4 | coverImage: ./yogagirl.com-main.jpg 5 | url: https://www.yogagirl.com/ 6 | shortDescription: A community, a movement and a lifestyle. 7 | tech: 8 | - Headless 9 | - API-First Back-end 10 | backends: 11 | - Contentful 12 | - Shopify 13 | frameworks: 14 | - Nuxt.js 15 | - Vue.js 16 | --- 17 | 18 | The Yoga Girl site features a front-end built with Nuxt.js and Contentful + Shopify on the backend. 19 | 20 | ## References 21 | 22 | * [Yoga Girl – Contentful CMS + Shopify | Paul Rogers](https://paulnrogers.com/headless-shopify/) 23 | -------------------------------------------------------------------------------- /content/sites/yogagirl.com/yogagirl.com-main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/content/sites/yogagirl.com/yogagirl.com-main.jpg -------------------------------------------------------------------------------- /gatsby-browser.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Implement Gatsby's Browser APIs in this file. 3 | * 4 | * See: https://www.gatsbyjs.org/docs/browser-apis/ 5 | */ 6 | 7 | // You can delete this file if you're not using it 8 | -------------------------------------------------------------------------------- /gatsby-config.js: -------------------------------------------------------------------------------- 1 | const siteName = 'Headless.page' 2 | const siteSlogan = 'A curated list of modern e-commerce sites' 3 | const siteUrl = `https://headless.page/` 4 | 5 | module.exports = { 6 | siteMetadata: { 7 | title: `${siteName} | ${siteSlogan}`, 8 | description: `A curated list of modern, headless e-commerce sites. We've listed sites which are taking advantage of technologies such as PWA (Progress Web Application), Headless, JAMstack, API-first back-ends, and similar.`, 9 | author: `Garth Brantley `, 10 | twitterSite: `@subscribeprosw`, 11 | twitterCreator: `@garthbrantley`, 12 | siteName, 13 | siteSlogan, 14 | siteUrl, 15 | }, 16 | plugins: [ 17 | { 18 | resolve: `gatsby-source-filesystem`, 19 | options: { 20 | path: `${__dirname}/content/sites`, 21 | name: `sites`, 22 | }, 23 | }, 24 | { 25 | resolve: `gatsby-transformer-remark`, 26 | options: { 27 | plugins: [ 28 | { 29 | resolve: `gatsby-remark-images`, 30 | options: { 31 | maxWidth: 800, 32 | }, 33 | }, 34 | { 35 | resolve: "gatsby-remark-external-links", 36 | options: { 37 | target: "_blank", 38 | rel: "noopener noreferrer" 39 | } 40 | } 41 | ] 42 | }, 43 | }, 44 | { 45 | resolve: `gatsby-source-filesystem`, 46 | options: { 47 | name: `images`, 48 | path: `${__dirname}/src/images`, 49 | }, 50 | }, 51 | `gatsby-transformer-sharp`, 52 | `gatsby-plugin-sharp`, 53 | `gatsby-plugin-react-helmet`, 54 | { 55 | resolve: `gatsby-plugin-manifest`, 56 | options: { 57 | name: `Headless.page`, 58 | short_name: `Headless.page`, 59 | start_url: siteUrl, 60 | background_color: `#fff`, 61 | theme_color: `#fff`, 62 | display: `minimal-ui`, 63 | icon: `src/images/headless-icon.png`, // This path is relative to the root of the site. 64 | }, 65 | }, 66 | { 67 | resolve: `gatsby-plugin-canonical-urls`, 68 | options: { 69 | siteUrl, 70 | }, 71 | }, 72 | { 73 | resolve: `gatsby-plugin-google-analytics`, 74 | options: { 75 | trackingId: "UA-124605239-2", 76 | anonymize: true, 77 | respectDNT: true, 78 | }, 79 | }, 80 | 'gatsby-plugin-offline', 81 | `gatsby-plugin-styled-components`, 82 | `gatsby-plugin-sitemap`, 83 | `gatsby-plugin-netlify`, // make sure to put last in the array 84 | ], 85 | } 86 | -------------------------------------------------------------------------------- /gatsby-node.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Implement Gatsby's Node APIs in this file. 3 | * 4 | * See: https://www.gatsbyjs.org/docs/node-apis/ 5 | */ 6 | 7 | const path = require(`path`) 8 | const { createFilePath } = require(`gatsby-source-filesystem`) 9 | 10 | exports.createPages = ({ graphql, actions }) => { 11 | const { createPage } = actions 12 | 13 | const siteDetailsPageComponent = path.resolve(`./src/templates/site-details.js`) 14 | return graphql( 15 | ` 16 | { 17 | allMarkdownRemark( 18 | sort: { fields: [frontmatter___dateAdded], order: DESC } 19 | limit: 1000 20 | ) { 21 | edges { 22 | node { 23 | fields { 24 | slug 25 | } 26 | frontmatter { 27 | title 28 | } 29 | } 30 | } 31 | } 32 | } 33 | ` 34 | ).then(result => { 35 | if (result.errors) { 36 | throw result.errors 37 | } 38 | 39 | // Create pages. 40 | const pages = result.data.allMarkdownRemark.edges 41 | 42 | pages.forEach((page, index) => { 43 | const previous = index === pages.length - 1 ? null : pages[index + 1].node 44 | const next = index === 0 ? null : pages[index - 1].node 45 | 46 | createPage({ 47 | path: `sites${page.node.fields.slug}`, 48 | component: siteDetailsPageComponent, 49 | context: { 50 | slug: page.node.fields.slug, 51 | previous, 52 | next, 53 | }, 54 | }) 55 | }) 56 | }) 57 | } 58 | 59 | exports.onCreateNode = ({ node, actions, getNode }) => { 60 | const { createNodeField } = actions 61 | 62 | if (node.internal.type === `MarkdownRemark`) { 63 | const value = createFilePath({ node, getNode }) 64 | createNodeField({ 65 | name: `slug`, 66 | node, 67 | value, 68 | }) 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /gatsby-ssr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Implement Gatsby's SSR (Server Side Rendering) APIs in this file. 3 | * 4 | * See: https://www.gatsbyjs.org/docs/ssr-apis/ 5 | */ 6 | 7 | // You can delete this file if you're not using it 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "headless-page", 3 | "private": true, 4 | "description": "A curated list of headless e-commerce sites", 5 | "version": "1.1.0", 6 | "author": "Garth Brantley ", 7 | "dependencies": { 8 | "babel-plugin-styled-components": "^1.10.0", 9 | "gatsby": "^2.17.15", 10 | "gatsby-image": "^2.2.33", 11 | "gatsby-plugin-canonical-urls": "^2.1.15", 12 | "gatsby-plugin-google-analytics": "^2.0.9", 13 | "gatsby-plugin-manifest": "^2.2.28", 14 | "gatsby-plugin-netlify": "^2.1.25", 15 | "gatsby-plugin-offline": "^2.2.10", 16 | "gatsby-plugin-react-helmet": "^3.1.15", 17 | "gatsby-plugin-sharp": "^2.3.0", 18 | "gatsby-plugin-sitemap": "^2.2.21", 19 | "gatsby-plugin-styled-components": "^3.1.13", 20 | "gatsby-remark-external-links": "0.0.4", 21 | "gatsby-remark-images": "^3.1.31", 22 | "gatsby-source-filesystem": "^2.1.37", 23 | "gatsby-transformer-remark": "^2.6.35", 24 | "gatsby-transformer-sharp": "^2.3.5", 25 | "prop-types": "^15.7.2", 26 | "qs": "^6.9.1", 27 | "react": "^16.12.0", 28 | "react-dom": "^16.12.0", 29 | "react-helmet": "^5.2.1", 30 | "styled-components": "^4.4.1" 31 | }, 32 | "keywords": [ 33 | "headless", 34 | "eCommerce", 35 | "e-commerce", 36 | "subscribe pro", 37 | "api-first", 38 | "pwa", 39 | "progressive web application" 40 | ], 41 | "license": "MIT", 42 | "scripts": { 43 | "build": "gatsby build", 44 | "develop": "gatsby develop", 45 | "start": "npm run develop", 46 | "format": "prettier --write \"src/**/*.js\"", 47 | "test": "echo \"Write tests! -> https://gatsby.app/unit-testing\"" 48 | }, 49 | "devDependencies": { 50 | "prettier": "^1.19.1" 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/components/filters.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import PropTypes from 'prop-types' 3 | import styled from 'styled-components' 4 | 5 | import Cancel from './svg/cancel' 6 | 7 | const Wrapper = styled.div` 8 | display: flex; 9 | flex-direction: column; 10 | // Button resets 11 | button { 12 | background: none; 13 | color: inherit; 14 | border: none; 15 | padding: 0; 16 | font: inherit; 17 | cursor: pointer; 18 | } 19 | button:focus { 20 | outline: 0; 21 | } 22 | ul { 23 | margin: 12px 0; 24 | padding: 0; 25 | display: flex; 26 | flex-wrap: wrap; 27 | li { 28 | display: block; 29 | list-style: none; 30 | button { 31 | background-color: #e0970b; 32 | color: #fff; 33 | margin: 0 8px 10px 0; 34 | padding: 6px 12px; 35 | transition: background-color 0.2s ease; 36 | svg { 37 | width: 10px; 38 | height: 10px; 39 | margin: 1px 6px 1px 0; 40 | stroke: #fff; 41 | } 42 | } 43 | button:hover { 44 | background-color: #008673; 45 | } 46 | } 47 | } 48 | .clear { 49 | margin-left: 8px; 50 | button { 51 | transition: color 0.2s ease; 52 | } 53 | button:hover { 54 | color: #ffac0d; 55 | } 56 | } 57 | ` 58 | 59 | const Filters = ({ values, update }) => ( 60 | 61 | {values.length > 0 && ( 62 | <> 63 |
    64 | {values.map(value => { 65 | return ( 66 |
  • 67 | 78 |
  • 79 | ) 80 | })} 81 |
82 | 83 | 84 | 85 | 86 | )} 87 |
88 | ) 89 | 90 | Filters.propTypes = { 91 | values: PropTypes.array.isRequired, 92 | } 93 | 94 | export default Filters 95 | -------------------------------------------------------------------------------- /src/components/layout.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import PropTypes from 'prop-types' 3 | import styled, { createGlobalStyle } from 'styled-components' 4 | import { Helmet } from 'react-helmet' 5 | import { Link, StaticQuery, graphql } from 'gatsby' 6 | import Img from 'gatsby-image' 7 | import { OutboundLink } from 'gatsby-plugin-google-analytics' 8 | 9 | import GitHubMark from '../components/svg/github-mark' 10 | 11 | const GlobalStyles = createGlobalStyle` 12 | body { 13 | margin: 0; 14 | font-family: 'Open Sans', sans-serif; 15 | text-rendering: optimizeLegibility; 16 | color: #464646; 17 | } 18 | 19 | h1 { 20 | font-size: 2rem; 21 | font-weight: normal; 22 | } 23 | 24 | h2 { 25 | font-weight: 600; 26 | font-size: 28px; 27 | margin-top: 32px; 28 | } 29 | 30 | p { 31 | line-height: 2; 32 | margin: 1rem 0 2rem; 33 | letter-spacing: 0.4px; 34 | } 35 | 36 | blockquote { 37 | border-left: 1px solid #000; 38 | margin-left: 8px; 39 | padding-left: 32px; 40 | } 41 | 42 | strong { 43 | font-weight: 600; 44 | } 45 | 46 | a, a:link { 47 | color: #777; 48 | } 49 | a:visited { 50 | color: #777; 51 | } 52 | a:hover { 53 | color: #ffac0d; 54 | } 55 | ` 56 | 57 | const Wrapper = styled.div` 58 | .site-header { 59 | padding: 20px; 60 | border-bottom: 1px solid #eaecef; 61 | display: flex; 62 | justify-content: space-between; 63 | align-items: flex-end; 64 | } 65 | 66 | section.content { 67 | margin: 40px 20px 20px; 68 | } 69 | 70 | .logo-area { 71 | display: flex; 72 | flex-direction: column; 73 | 74 | .site-name { 75 | font-family: 'Indie Flower', cursive; 76 | font-size: 40px; 77 | font-weight: 700; 78 | line-height: 1; 79 | margin: 0; 80 | a, a:link, a:visited, a:hover, a:active { 81 | text-decoration: none; 82 | cursor: pointer; 83 | color: #464646; 84 | } 85 | } 86 | .by-subscribe-pro { 87 | display: flex; 88 | margin-top: 4px; 89 | 90 | .by { 91 | display: block; 92 | font-size: 14px; 93 | } 94 | 95 | .subscribe-pro-logo { 96 | width: 140px; 97 | margin-left: 6px; 98 | } 99 | } 100 | } 101 | } 102 | 103 | .search-box { 104 | margin: 6px 20px 4px auto; 105 | position: relative; 106 | 107 | input { 108 | display: inline-block; 109 | cursor: text; 110 | outline: none; 111 | width: 160px; 112 | padding: 0 8px 0 40px; 113 | border: 1px solid #eaecef; 114 | border-radius: 32px; 115 | font-size: 16px; 116 | line-height: 32px; 117 | color: #747474; 118 | transition: border-color .2s ease; 119 | } 120 | input:focus { 121 | border-color: #ffac0d; 122 | } 123 | 124 | svg { 125 | position: absolute; 126 | top: 10px; 127 | left: 12px; 128 | fill: #747474; 129 | } 130 | } 131 | .search-box:hover { 132 | input { 133 | border-color: #ffac0d; 134 | } 135 | } 136 | 137 | .nav { 138 | display: flex; 139 | justify-content: space-around; 140 | align-items: center; 141 | padding: 0; 142 | margin: 0; 143 | 144 | li { 145 | list-style: none; 146 | padding: 0; 147 | margin: 10px 10px; 148 | line-height: 1; 149 | font-size: 16px; 150 | 151 | a, a:link, a:visited, a:active { 152 | text-decoration: none; 153 | color: #464646; 154 | transition: color .2s ease; 155 | } 156 | a:hover { 157 | text-decoration: none; 158 | color: #ffac0d; 159 | } 160 | 161 | svg { 162 | fill: #464646; 163 | width: 18px; 164 | height: 18px; 165 | padding-top: 4px; 166 | transition: fill .2s ease; 167 | } 168 | svg:hover { 169 | fill: #ffac0d; 170 | } 171 | } 172 | } 173 | ` 174 | 175 | const Layout = ({ children }) => ( 176 | ( 191 | <> 192 | 193 | 194 | 199 | 204 | 205 | 206 |
207 |
208 | 209 | Headless.page 210 | 211 | 212 | 213 | by 214 | 215 | 216 | 220 | 221 | 222 | 223 | 224 |
225 |
    226 |
  • 227 | About 228 |
  • 229 |
  • 230 | 236 | 237 | 238 |
  • 239 |
240 |
241 |
{children}
242 |
243 | 244 | )} 245 | /> 246 | ) 247 | 248 | Layout.propTypes = { 249 | children: PropTypes.node.isRequired, 250 | } 251 | 252 | export default Layout 253 | -------------------------------------------------------------------------------- /src/components/seo.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import PropTypes from 'prop-types' 3 | import Helmet from 'react-helmet' 4 | import { StaticQuery, graphql } from 'gatsby' 5 | 6 | function SEO({ 7 | description, 8 | lang, 9 | meta, 10 | keywords, 11 | title, 12 | titleTemplate, 13 | ogImageUrl, 14 | twitterCard, 15 | pageUrl, 16 | }) { 17 | return ( 18 | { 21 | const siteMetadata = data.site.siteMetadata 22 | const metaDescription = description || siteMetadata.description 23 | const metaKeywords = keywords.concat([ 24 | `headless`, 25 | `e-commerce`, 26 | `ecommerce`, 27 | `pwa`, 28 | `curated`, 29 | `list`, 30 | `api-first`, 31 | `jamstack`, 32 | ]) 33 | 34 | return ( 35 | 0 103 | ? { 104 | name: `keywords`, 105 | content: metaKeywords.join(`, `).toLowerCase(), 106 | } 107 | : [] 108 | ) 109 | .concat(meta)} 110 | /> 111 | ) 112 | }} 113 | /> 114 | ) 115 | } 116 | 117 | SEO.defaultProps = { 118 | lang: `en`, 119 | meta: [], 120 | keywords: [], 121 | twitterCard: `summary`, 122 | } 123 | 124 | SEO.propTypes = { 125 | description: PropTypes.string, 126 | lang: PropTypes.string, 127 | meta: PropTypes.array, 128 | keywords: PropTypes.arrayOf(PropTypes.string), 129 | title: PropTypes.string.isRequired, 130 | titleTemplate: PropTypes.string, 131 | ogImageUrl: PropTypes.string.isRequired, 132 | twitterCard: PropTypes.string, 133 | pageUrl: PropTypes.string, 134 | } 135 | 136 | export default SEO 137 | 138 | const detailsQuery = graphql` 139 | query DefaultSEOQuery { 140 | site { 141 | siteMetadata { 142 | title 143 | description 144 | author 145 | twitterSite 146 | twitterCreator 147 | siteUrl 148 | } 149 | } 150 | } 151 | ` 152 | -------------------------------------------------------------------------------- /src/components/siteCard.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Img from 'gatsby-image' 3 | import { Link } from 'gatsby' 4 | 5 | import Tags from './tags' 6 | 7 | const SiteCard = ({ node, filters, update }) => { 8 | // Collect tags 9 | var tags = [] 10 | if (node.frontmatter.tech) { 11 | tags = tags.concat(node.frontmatter.tech) 12 | } 13 | if (node.frontmatter.frameworks) { 14 | tags = tags.concat(node.frontmatter.frameworks) 15 | } 16 | if (node.frontmatter.backends) { 17 | tags = tags.concat(node.frontmatter.backends) 18 | } 19 | 20 | if (filters.length === 0 || filters.every(f => tags.includes(f))) { 21 | return ( 22 |
23 |
24 | 25 |
26 | 27 |
28 |
View Details
29 |
30 |
31 | 32 | {node.frontmatter.title || node.fields.slug} 33 | 34 | 35 | 36 |
37 |
38 | ) 39 | } 40 | return null 41 | } 42 | 43 | export default SiteCard 44 | -------------------------------------------------------------------------------- /src/components/svg/cancel.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Cancel = () => ( 4 | 5 | 6 | 12 | 18 | 19 | 20 | ) 21 | 22 | export default Cancel 23 | -------------------------------------------------------------------------------- /src/components/svg/github-mark.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const GitHubMark = () => ( 4 | 10 | GitHub Mark 11 | 15 | 16 | ) 17 | 18 | export default GitHubMark 19 | -------------------------------------------------------------------------------- /src/components/svg/search.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Search = () => ( 4 | 10 | Search Magnifier Glass 11 | 15 | 16 | ) 17 | 18 | export default Search 19 | -------------------------------------------------------------------------------- /src/components/tags.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import PropTypes from 'prop-types' 3 | import { navigate } from 'gatsby' 4 | import styled from 'styled-components' 5 | import qs from 'qs' 6 | 7 | const Wrapper = styled.div` 8 | ul { 9 | margin: 0; 10 | padding: 0; 11 | li { 12 | display: inline; 13 | list-style: none; 14 | cursor: pointer; 15 | transition: color 0.2s ease; 16 | } 17 | li:hover { 18 | color: #ffac0d; 19 | } 20 | } 21 | ` 22 | 23 | const Tags = ({ values, className, update }) => { 24 | const click = value => 25 | update 26 | ? update(({ filters }) => 27 | filters.indexOf(value) === -1 ? filters.concat([value]) : filters 28 | ) 29 | : navigate(`/?${qs.stringify({ tag: [value] })}`) 30 | 31 | return ( 32 | 33 |
    34 | {values.map((value, index) => { 35 | const isLastItem = index + 1 === values.length 36 | 37 | return ( 38 |
  • click(value)} key={value}> 39 | {value} 40 | {!isLastItem && <>, } 41 |
  • 42 | ) 43 | })} 44 |
45 |
46 | ) 47 | } 48 | 49 | Tags.propTypes = { 50 | values: PropTypes.array.isRequired, 51 | } 52 | 53 | export default Tags 54 | -------------------------------------------------------------------------------- /src/images/headless-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/src/images/headless-icon.png -------------------------------------------------------------------------------- /src/images/subscribe-pro-logo-800x168.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/src/images/subscribe-pro-logo-800x168.png -------------------------------------------------------------------------------- /src/pages/404.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | import Layout from '../components/layout' 4 | import SEO from '../components/seo' 5 | 6 | const NotFoundPage = () => ( 7 | 8 | 9 |

NOT FOUND

10 |

You just hit a route that doesn't exist... the sadness.

11 |
12 | ) 13 | 14 | export default NotFoundPage 15 | -------------------------------------------------------------------------------- /src/pages/about.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import styled from 'styled-components' 3 | 4 | import Layout from '../components/layout' 5 | import SEO from '../components/seo' 6 | 7 | const Wrapper = styled.div` 8 | p { 9 | line-height: 2; 10 | margin: 1rem 0 2rem; 11 | letter-spacing: 0.4px; 12 | } 13 | ` 14 | 15 | const AboutPage = ({ data }) => ( 16 | 17 | 30 | 31 |

About Headless.page

32 |

33 | Headless.page is a curated list of modern e-commerce sites. We have 34 | searched high and low to find the e-commerce sites who are doing things 35 | correctly with regard to modern tech and architectural patterns like: PWA 36 | (Progress Web Applications), Headless, API-First Back-end. Where we can, 37 | we call out which JavaScript framework(s) a site was built with (React, 38 | Vue, Gatsby, etc) and which e-commerce back-ends a site is powered by 39 | (Magento, Shopify, Stripe, Hybris, etc). 40 |

41 |

42 | This site was created by Garth Brantley and is sponsored by Subscribe 43 | Pro. Subscribe Pro enables brands to add subscription commerce features 44 | and programs to their existing DTC eCommerce businesses quickly and 45 | efficiently. 46 |

47 |

48 | If you have suggestions for sites we should add or new information, 49 | don't hesitate to get in touch. Email us at{' '} 50 | info@subscribepro.com. 51 |

52 |
53 |
54 | ) 55 | 56 | export default AboutPage 57 | 58 | export const query = graphql` 59 | query { 60 | site { 61 | siteMetadata { 62 | siteUrl 63 | } 64 | } 65 | } 66 | ` 67 | -------------------------------------------------------------------------------- /src/pages/index.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react' 2 | import { graphql, navigate } from 'gatsby' 3 | import styled from 'styled-components' 4 | import qs from 'qs' 5 | 6 | import Layout from '../components/layout' 7 | import SEO from '../components/seo' 8 | import SiteCard from '../components/siteCard' 9 | import Filters from '../components/filters' 10 | 11 | const Wrapper = styled.div` 12 | .grid { 13 | margin-top: 40px; 14 | 15 | display: grid; 16 | grid-gap: 20px; 17 | grid-template-columns: repeat(1, 1fr); 18 | @media only screen and (min-width: 768px) { 19 | grid-template-columns: repeat(2, 1fr); 20 | } 21 | @media only screen and (min-width: 1024px) { 22 | grid-template-columns: repeat(3, 1fr); 23 | } 24 | @media only screen and (min-width: 1280px) { 25 | grid-template-columns: repeat(4, 1fr); 26 | } 27 | @media only screen and (min-width: 1680px) { 28 | grid-template-columns: repeat(5, 1fr); 29 | } 30 | 31 | .site-container { 32 | display: flex; 33 | justify-content: center; 34 | 35 | .site { 36 | width: 100%; 37 | max-width: 400px; 38 | 39 | a, 40 | a:visited, 41 | a:link, 42 | a:hover, 43 | a:active { 44 | text-decoration: none; 45 | cursor: pointer; 46 | } 47 | 48 | .thumbnail { 49 | position: relative; 50 | border: 1px solid #eaecef; 51 | .gatsby-image-wrapper { 52 | transition: filter, opacity 0.2s ease-in-out; 53 | -webkit-filter: grayscale(0%); /* Ch 23+, Saf 6.0+, BB 10.0+ */ 54 | filter: grayscale(0%); /* FF 35+ */ 55 | opacity: 1; 56 | } 57 | } 58 | .thumbnail:hover { 59 | .gatsby-image-wrapper { 60 | -webkit-filter: grayscale(80%); /* Ch 23+, Saf 6.0+, BB 10.0+ */ 61 | filter: grayscale(80%); /* FF 35+ */ 62 | opacity: 0.6; 63 | } 64 | .overlay { 65 | opacity: 1; 66 | } 67 | } 68 | .overlay { 69 | transition: opacity 0.2s ease; 70 | opacity: 0; 71 | position: absolute; 72 | top: 50%; 73 | left: 50%; 74 | transform: translate(-50%, -50%); 75 | -ms-transform: translate(-50%, -50%); 76 | text-align: center; 77 | 78 | .view-button { 79 | background-color: #e0970b; 80 | color: #fff; 81 | padding: 12px 16px; 82 | line-height: 1; 83 | } 84 | } 85 | .title { 86 | display: block; 87 | margin: 12px 0 6px; 88 | color: #464646; 89 | font-size: 24px; 90 | font-weight: 300; 91 | transition: color 0.2s ease; 92 | } 93 | a:hover .title { 94 | color: #000000; 95 | } 96 | .tags { 97 | margin: 0 0 12px; 98 | font-size: 14px; 99 | font-weight: 600; 100 | } 101 | } 102 | } 103 | } 104 | ` 105 | 106 | class IndexPage extends Component { 107 | state = { 108 | filters: [], 109 | } 110 | 111 | componentDidMount = () => { 112 | const { 113 | location: { search }, 114 | } = this.props 115 | 116 | this.getDerivedStateFromQuery(search) 117 | } 118 | 119 | getDerivedStateFromQuery = search => { 120 | const { tag } = qs.parse(search.replace(`?`, ``)) 121 | this.setState(() => { 122 | return { 123 | filters: tag || [], 124 | } 125 | }) 126 | } 127 | 128 | updateQuery = fn => { 129 | const { 130 | location: { pathname }, 131 | } = this.props 132 | 133 | const newQuery = fn(this.state) 134 | const queryString = qs.stringify({ tag: newQuery }) 135 | 136 | navigate(`${pathname}?${queryString}`) 137 | this.getDerivedStateFromQuery(queryString) 138 | } 139 | 140 | render() { 141 | const { data } = this.props 142 | const { filters } = this.state 143 | const sites = data.allMarkdownRemark.edges 144 | 145 | return ( 146 | 147 | 155 | 156 |

{data.site.siteMetadata.siteSlogan}.

157 | 158 |
159 | {sites.map(({ node }) => ( 160 | 166 | ))} 167 |
168 |
169 |
170 | ) 171 | } 172 | } 173 | 174 | export default IndexPage 175 | 176 | export const query = graphql` 177 | query { 178 | site { 179 | siteMetadata { 180 | title 181 | siteUrl 182 | siteSlogan 183 | } 184 | } 185 | allMarkdownRemark( 186 | sort: { fields: [frontmatter___dateAdded], order: DESC } 187 | ) { 188 | edges { 189 | node { 190 | excerpt 191 | fields { 192 | slug 193 | } 194 | frontmatter { 195 | dateAdded(formatString: "MMMM DD, YYYY") 196 | title 197 | url 198 | tech 199 | frameworks 200 | backends 201 | coverImage { 202 | childImageSharp { 203 | fluid(maxWidth: 400) { 204 | ...GatsbyImageSharpFluid 205 | } 206 | } 207 | } 208 | } 209 | } 210 | } 211 | } 212 | } 213 | ` 214 | -------------------------------------------------------------------------------- /src/templates/site-details.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { graphql } from 'gatsby' 3 | import styled from 'styled-components' 4 | import { OutboundLink } from 'gatsby-plugin-google-analytics' 5 | import Img from 'gatsby-image' 6 | 7 | import Layout from '../components/layout' 8 | import SEO from '../components/seo' 9 | import Tags from '../components/tags' 10 | 11 | const Wrapper = styled.div` 12 | margin: 0 auto 8rem; 13 | max-width: 800px; 14 | 15 | header { 16 | margin-bottom: 32px; 17 | display: flex; 18 | justify-content: space-between; 19 | align-items: flex-end; 20 | @media only screen and (max-width: 480px) { 21 | flex-direction: column; 22 | align-items: flex-start; 23 | } 24 | 25 | h1 { 26 | margin-bottom: 0; 27 | font-size: 36px; 28 | font-weight: 600; 29 | } 30 | span { 31 | margin-top: 8px; 32 | 33 | a, 34 | a:link, 35 | a:visited, 36 | a:active, 37 | a:hover { 38 | text-decoration: none; 39 | font-size: 14px; 40 | font-weight: 600; 41 | color: #777; 42 | transition: color 0.2s ease; 43 | } 44 | a:hover { 45 | color: #464646; 46 | } 47 | } 48 | } 49 | .attributes { 50 | margin-bottom: 32px; 51 | 52 | .attribute { 53 | display: flex; 54 | margin-bottom: 4px; 55 | 56 | .title { 57 | margin-right: 8px; 58 | } 59 | } 60 | } 61 | ` 62 | 63 | class SiteDetailsTemplate extends React.Component { 64 | render() { 65 | const siteDetailsPage = this.props.data.markdownRemark 66 | const mainImage = 67 | siteDetailsPage.frontmatter.coverImage.childImageSharp.fluid 68 | 69 | return ( 70 | 71 | 84 | 85 |
86 | 87 |
88 | 89 |
90 |

{siteDetailsPage.frontmatter.title}

91 | 92 | 97 | {siteDetailsPage.frontmatter.url} 98 | 99 | 100 |
101 |
102 |
103 | Date Added: 104 | {siteDetailsPage.frontmatter.dateAdded} 105 |
106 | {siteDetailsPage.frontmatter.tech && ( 107 |
108 | Tech: 109 | 113 |
114 | )} 115 | {siteDetailsPage.frontmatter.frameworks && ( 116 |
117 | Frameworks: 118 | 122 |
123 | )} 124 | {siteDetailsPage.frontmatter.backends && ( 125 |
126 | Back-ends: 127 | 131 |
132 | )} 133 |
134 |
135 | 136 | 137 | ) 138 | } 139 | } 140 | 141 | export default SiteDetailsTemplate 142 | 143 | export const pageQuery = graphql` 144 | query SiteDetailsBySlug($slug: String!) { 145 | site { 146 | siteMetadata { 147 | title 148 | siteUrl 149 | siteSlogan 150 | } 151 | } 152 | markdownRemark(fields: { slug: { eq: $slug } }) { 153 | id 154 | excerpt(pruneLength: 160) 155 | html 156 | frontmatter { 157 | title 158 | dateAdded(formatString: "MMMM DD, YYYY") 159 | url 160 | tech 161 | frameworks 162 | backends 163 | coverImage { 164 | childImageSharp { 165 | fluid(maxWidth: 800) { 166 | ...GatsbyImageSharpFluid 167 | } 168 | fixed(width: 800) { 169 | ...GatsbyImageSharpFixed 170 | } 171 | } 172 | } 173 | } 174 | } 175 | } 176 | ` 177 | -------------------------------------------------------------------------------- /static/_redirects: -------------------------------------------------------------------------------- 1 | # Redirect default Netlify subdomain to primary domain 2 | http://headless-page.netlify.com/* http://headless.page/:splat 301! 3 | -------------------------------------------------------------------------------- /static/googled50c7766767274ff.html: -------------------------------------------------------------------------------- 1 | google-site-verification: googled50c7766767274ff.html -------------------------------------------------------------------------------- /static/headless-page-home-1200x600.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/subscribepro-archive/headless-page/9e66377980de843b59497b3e9ccd5cd4ba788836/static/headless-page-home-1200x600.png -------------------------------------------------------------------------------- /static/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | 3 | sitemap: https://headless.page/sitemap.xml --------------------------------------------------------------------------------