├── .circleci └── config.yml ├── .forestry ├── front_matter │ └── templates │ │ └── blog-post.yml └── settings.yml ├── .gitignore ├── README.md ├── blog ├── cupcake-ipsum.md ├── espresso-ipsum.md ├── lorem-ipsum.md └── sagan-ipsum.md ├── gridsome.config.js ├── package.json ├── src ├── assets │ ├── images │ │ ├── 404.svg │ │ ├── logo.png │ │ └── mail-sent.svg │ └── styles │ │ ├── custom.scss │ │ └── main.scss ├── components │ ├── BlogContent.vue │ ├── Footer.vue │ └── Header.vue ├── favicon.png ├── layouts │ └── Default.vue ├── main.js ├── mixins │ └── checkIfMobile.js ├── pages │ ├── 404.vue │ ├── About.vue │ ├── Blog.vue │ ├── Contact.vue │ ├── Index.vue │ └── success.vue └── templates │ └── BlogPost.vue ├── static ├── admin │ └── index.html ├── google74eb19899cc3654d.html └── logo.png ├── uploads ├── adjustments.svg ├── app.svg ├── code-review.svg ├── coffee.svg ├── contact.svg ├── content.svg ├── cupcake.svg ├── edit.svg ├── email.svg ├── hello.svg ├── profile.svg ├── responsive.svg ├── space.svg └── text.svg └── yarn.lock /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | jobs: 4 | build: 5 | docker: 6 | - image: circleci/node:10.15.3-stretch 7 | steps: 8 | - checkout 9 | - run: 10 | name: Install packages 11 | command: yarn install 12 | - run: 13 | name: Build and minify app 14 | command: yarn build 15 | -------------------------------------------------------------------------------- /.forestry/front_matter/templates/blog-post.yml: -------------------------------------------------------------------------------- 1 | --- 2 | label: Blog post 3 | hide_body: false 4 | fields: 5 | - type: text 6 | name: title 7 | label: title 8 | - type: textarea 9 | name: excerpt 10 | label: excerpt 11 | - type: datetime 12 | name: date 13 | label: date 14 | - type: text 15 | name: author 16 | label: author 17 | - type: file 18 | name: image 19 | label: image 20 | -------------------------------------------------------------------------------- /.forestry/settings.yml: -------------------------------------------------------------------------------- 1 | --- 2 | new_page_extension: md 3 | auto_deploy: false 4 | admin_path: "/static/admin" 5 | webhook_url: 6 | sections: 7 | - type: directory 8 | path: blog 9 | label: Blog 10 | create: all 11 | match: "**/*" 12 | upload_dir: uploads 13 | public_path: "/uploads" 14 | front_matter_path: "../uploads" 15 | use_front_matter_path: false 16 | file_template: ":filename:" 17 | build: 18 | preview_output_directory: dist 19 | install_dependencies_command: npm install 20 | preview_docker_image: node:10 21 | mount_path: "/srv" 22 | working_dir: "/srv" 23 | instant_preview_command: npm run dev 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | .cache 3 | .DS_Store 4 | src/.temp 5 | node_modules 6 | dist 7 | .env 8 | .env.* 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

logo

2 | 3 | [![Netlify Status](https://api.netlify.com/api/v1/badges/70d2a5fc-0609-467a-885e-bf9518118042/deploy-status)](https://app.netlify.com/sites/gridsome-starter-bootstrap/deploys) 4 | 5 | # Gridsome starter bootstrap 6 | 7 | This is a starter project for Gridsome that comes with many features out of the box. It utilizes Bootstrap that is well known for powerful styling and layout. Ready to be deployed, automagically imports data to CMS and sets up your /admin page for easy access to edit your content. 8 | 9 | It is designed to use Netlify, Forestry and Github which all have very fair free tier to their services, so you wont need to pay for monthly subscriptions and costly hosting fees. 10 | 11 | ### Demo 12 | 13 | [https://gridsome-starter-bootstrap.loke.dev](https://gridsome-starter-bootstrap.loke.dev) 14 | 15 | ### Features 16 | 17 | This starter project includes some of the latest powerful technologies. 18 | 19 | * **Gridsome -** Vue.js & GraphQL powered framework genrating static files. 20 | * **Bootstrap & Bootstrap Vue -** Powerful styling and layout with styled Vue components. 21 | * **Sass -** Professional grade CSS extension with many features. 22 | * **Forestry.io -** CMS that uses the Github repo for storage. 23 | * **Markdown -** Easy and widely used format for writing content. 24 | * **Netlify forms -** Netlify forms ready to be used after deployment. 25 | * **Google Analytics -** Just add your tracking ID in the config. 26 | * **Sitemap generator -** Automatically generates a sitemap.xml file. 27 | 28 | ### Getting started 29 | 30 | The easiest way to get started quick is to use the Forestry button below, which will create a Github repository for you, clone this starter repo and import all data to the CMS. After that is complete, you can just go to [Netlify](https://www.netlify.com/) and connect your newly created project that will set it up for automatic deployment when you commit to the Github repo. 31 | 32 | [![Import this project into Forestry](https://camo.githubusercontent.com/2455e97e4e989374a355fb0bea7ad364f2561c92/68747470733a2f2f6173736574732e666f7265737472792e696f2f696d706f72742d746f2d666f7265737472794b2e737667)](https://app.forestry.io/quick-start?repo=LokeCarlsson/gridsome-starter-bootstrap&provider=github&engine=vuepress) 33 | 34 | ### Netlify config 35 | 36 | Use the following build config for Netlify 37 | 38 | Build command: `gridsome build` 39 | 40 | Publish directory: `dist` 41 | 42 | #### Manually install just the project (without CMS). 43 | 44 | If you haven't already installed Gridsome CLI: `npm install --global @gridsome/cli` 45 | 46 | 1. `gridsome create my-gridsome-site https://github.com/LokeCarlsson/gridsome-starter-bootstrap.git` 47 | 2. `cd my-gridsome-site` to open folder 48 | 3. `yarn dev` to start local dev server at `http://localhost:8080` 49 | 4. Happy hacking 🎉🙌 50 | -------------------------------------------------------------------------------- /blog/cupcake-ipsum.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Cupcake ipsum 3 | excerpt: Cupcake ipsum dolor. Sit amet fruitcake jelly-o pie ice cream. Candy jujubes croissant donut oat cake jelly-o brownie jelly-o. 4 | date: 2019-04-18 17:00:00 +0000 5 | author: Loke Carlsson 6 | image: "/uploads/cupcake.svg" 7 | --- 8 | 9 | Cupcake ipsum dolor. Sit amet fruitcake jelly-o pie ice cream. Candy jujubes croissant donut oat cake jelly-o brownie jelly-o. Cotton candy sweet cheesecake topping cake tiramisu tart. Chocolate cake powder caramels carrot cake carrot cake sugar plum powder. Danish lemon drops chocolate liquorice marzipan halvah. Cake powder pudding tiramisu. Cheesecake jelly pudding tart jelly-o gingerbread chocolate halvah. Ice cream jujubes liquorice ice cream candy canes oat cake croissant. Biscuit danish carrot cake tart carrot cake dragée pastry. Ice cream bonbon chocolate cotton candy sesame snaps chocolate pudding wafer ice cream. Brownie tart jelly-o gingerbread bear claw pastry sweet roll biscuit. 10 | 11 | Chocolate cake oat cake oat cake pastry ice cream dessert chocolate. Dragée cheesecake chocolate cake pastry oat cake brownie biscuit cupcake. Cookie lemon drops jelly beans cake jelly-o sweet roll chocolate jelly halvah. Cupcake ice cream bear claw carrot cake croissant jelly beans sugar plum liquorice. Donut pastry gingerbread cake. Macaroon sweet fruitcake macaroon. Gummi bears ice cream cookie oat cake muffin bonbon donut brownie jujubes. Cookie soufflé brownie liquorice cupcake croissant. Marshmallow liquorice pie pie. Jelly danish lollipop chocolate cake marzipan sweet liquorice. Topping danish sweet biscuit. Tootsie roll bonbon jujubes tart ice cream powder jelly beans. Chocolate cake marzipan sugar plum liquorice macaroon bear claw carrot cake gummi bears chocolate cake. Gummi bears fruitcake danish gingerbread. 12 | 13 | Lollipop brownie pie chocolate cake muffin bonbon cupcake jelly beans. Dessert toffee donut candy soufflé donut. Marshmallow toffee lemon drops marzipan chupa chups biscuit marzipan tootsie roll candy. Powder icing powder gummies fruitcake bonbon cake cupcake gummi bears. Chocolate cake cupcake apple pie. Sweet roll lollipop jujubes candy tart tart. Toffee dessert oat cake wafer sweet dragée halvah gingerbread cookie. Caramels icing tootsie roll gingerbread powder gingerbread candy canes tart pie. Powder apple pie cotton candy oat cake candy canes topping. Marzipan bonbon toffee muffin gingerbread carrot cake. Dessert apple pie pudding. Lollipop carrot cake soufflé croissant candy carrot cake. 14 | 15 | Halvah halvah pudding dragée. Cake pastry chocolate bar sweet cupcake pie ice cream gingerbread. Ice cream dragée jujubes jujubes pie jelly. Gingerbread ice cream gummies powder gummi bears chocolate sweet. Sweet roll carrot cake pastry cookie bear claw. Ice cream chocolate bar pudding sweet dragée. Gummies jujubes donut cupcake sugar plum. Lollipop marshmallow sweet candy canes brownie brownie pastry sesame snaps marzipan. Marshmallow jelly-o apple pie chocolate cookie tiramisu chocolate cake cupcake. Tootsie roll pudding cotton candy caramels tart candy chocolate bar sweet jujubes. Gummies chocolate bar cake soufflé. Donut tart pie oat cake chupa chups tootsie roll. Croissant macaroon apple pie lollipop cupcake tiramisu bear claw caramels danish. Lollipop soufflé pie cake tootsie roll macaroon. 16 | 17 | Macaroon sesame snaps jujubes jelly pie danish. Sweet pudding gummies tiramisu toffee oat cake. Cake tootsie roll cookie tootsie roll. Gummies candy canes topping. Oat cake bonbon icing sugar plum dessert. Cupcake gingerbread bonbon jelly. Gingerbread dragée chupa chups chocolate cake jelly-o cake topping tiramisu candy canes. Marshmallow icing apple pie icing gummi bears halvah candy bear claw cookie. Sweet chupa chups wafer gummi bears tart danish marzipan. Jujubes croissant gingerbread. Fruitcake tart lollipop muffin jelly-o pastry candy canes gummi bears. Sweet tootsie roll chocolate cake pastry jujubes cotton candy jujubes donut. -------------------------------------------------------------------------------- /blog/espresso-ipsum.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Espresso ipsum 3 | excerpt: Id roast latte, grounds turkish sweet skinny strong medium. Bar, sit, grinder cinnamon viennese redeye aroma blue mountain. 4 | date: 2019-04-20 17:00:00 +0000 5 | author: Loke Carlsson 6 | image: "/uploads/coffee.svg" 7 | --- 8 | 9 | Foam, cultivar chicory grounds crema java wings. Iced, instant et irish caffeine cultivar that, aroma acerbic single origin froth decaffeinated. Blue mountain foam white qui to go filter saucer con panna foam black. 10 | 11 | Aged, instant coffee, fair trade, qui siphon instant caramelization pumpkin spice shop chicory. Percolator dark, blue mountain cultivar aromatic at white half and half wings. Latte viennese, trifecta, cup latte java steamed saucer cortado. 12 | 13 | So espresso id spoon saucer milk arabica. Cortado at, cup, brewed espresso, chicory shop steamed et aroma flavour. Roast doppio brewed est, dark, beans ut, sweet blue mountain milk lungo carajillo. 14 | 15 | Coffee plunger pot sugar lungo irish robusta black saucer cultivar. Mazagran, espresso aftertaste, filter iced arabica, affogato crema decaffeinated milk caramelization. So macchiato est, at organic, black sit dark cup café au lait crema. -------------------------------------------------------------------------------- /blog/lorem-ipsum.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Lorem ipsum 3 | excerpt: Lorem ipsum dolor sit amet consectetur adipiscing elit, maecenas natoque massa sapien malesuada aliquet vitae, gravida eget accumsan viverra nisi etiam. 4 | date: 2019-04-22 17:00:00 +0000 5 | author: Loke Carlsson 6 | image: "/uploads/content.svg" 7 | --- 8 | 9 | Lorem ipsum dolor sit amet consectetur adipiscing elit, maecenas natoque massa sapien malesuada aliquet vitae, gravida eget accumsan viverra nisi etiam. Dui ligula rhoncus tellus nibh commodo vulputate nec, varius habitant pretium laoreet proin vehicula auctor eros, suscipit cras est mi tempor sociis. Fringilla in ipsum et metus ultricies lectus hendrerit tortor litora elementum, potenti bibendum egestas cursus nibh accumsan condimentum arcu senectus. Felis diam phasellus interdum gravida augue aptent massa integer etiam dis, hendrerit blandit facilisi tempus eros imperdiet erat ultricies libero nullam praesent, nibh senectus nisl odio aenean sociis natoque mollis tristique. Ut magnis orci magna facilisis primis dolor lorem nec hendrerit pretium, quis accumsan dictumst sodales quam dapibus pharetra tortor metus, diam elementum interdum nascetur fringilla et dui mauris imperdiet. Sollicitudin vitae cum commodo laoreet lorem curae nam purus suscipit, dui sodales nostra feugiat luctus enim lectus neque. Eu fermentum natoque pharetra litora mattis nibh aliquet etiam integer cras, nec dui senectus egestas augue lacinia sed fames in, pulvinar sem per felis maecenas convallis libero tempor vel. 10 | 11 | Vehicula eleifend ultricies interdum sapien tristique id condimentum, sociosqu placerat tempus malesuada imperdiet montes, viverra sem dui augue lacus nulla. Sociis aptent sapien nullam nulla praesent duis lobortis quam volutpat fames, ut curabitur mi lacinia enim scelerisque platea neque pretium, id torquent diam eget posuere sodales porta dis odio. Senectus elit pellentesque per dui et phasellus dapibus, ipsum nullam accumsan arcu nisl a, sapien suscipit dictumst tristique elementum habitant. Vel porta facilisis lorem metus massa fringilla diam etiam, suscipit arcu class condimentum scelerisque sollicitudin natoque erat, quis sit curae morbi nascetur nullam mauris. Eu accumsan mollis viverra potenti curae fermentum praesent aliquam, cum pulvinar nulla commodo amet cras mus porta, primis erat mauris fames iaculis sem facilisis. Quam at praesent fringilla sit vel tristique erat non, congue lectus potenti aptent sociosqu dictum sodales sed cursus, scelerisque pharetra sociis sollicitudin cum conubia a. Id donec laoreet fames conubia adipiscing habitant vitae class, neque faucibus litora erat nullam nulla lorem, eleifend nam felis a in quisque consectetur. 12 | 13 | Tempor ultricies id cursus metus lobortis hendrerit lectus, blandit laoreet luctus ullamcorper congue quisque at, augue accumsan dictumst sit neque ut. Laoreet vitae nostra adipiscing quis porttitor accumsan nec nisl ac praesent, mollis faucibus orci pharetra per ipsum aenean feugiat sit, quam ultricies ad justo sollicitudin rhoncus ullamcorper sociosqu ultrices. Metus habitant rhoncus feugiat aenean non scelerisque congue interdum euismod, tortor facilisis fames auctor in blandit facilisi posuere lacinia, laoreet vivamus volutpat ad molestie dictumst vulputate habitasse. Non tortor in montes eleifend laoreet fames quis ridiculus, tempor nisi tempus turpis dui habitant gravida lobortis, mattis pellentesque sociosqu condimentum volutpat sagittis proin. Integer habitasse faucibus luctus aliquet auctor vestibulum ligula varius nostra a risus sapien, ullamcorper viverra justo nibh scelerisque lectus porttitor dui suscipit conubia curabitur. Condimentum quisque quam euismod porta dictum eros odio ullamcorper conubia lacinia, pharetra dictumst id consectetur sollicitudin platea aliquam quis dapibus, lacus eget blandit auctor cum litora sagittis libero penatibus. Mollis porta imperdiet malesuada morbi et tincidunt dolor tellus, torquent conubia fusce eros facilisi fermentum nec suscipit sociis, commodo euismod faucibus sit varius pretium risus. Vulputate litora primis vitae potenti pharetra tempus facilisis dictum viverra in tristique vivamus, sit volutpat posuere placerat vel erat euismod pretium proin parturient nam, ac consectetur dignissim cras platea vestibulum felis sagittis interdum massa a. -------------------------------------------------------------------------------- /blog/sagan-ipsum.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Sagan ipsum 3 | excerpt: Hydrogen atoms colonies bits of moving fluff cosmic fugue gathered by gravity shores of the cosmic ocean. 4 | date: 2019-04-21 17:00:00 +0000 5 | author: Loke Carlsson 6 | image: "/uploads/space.svg" 7 | --- 8 | 9 | Billions upon billions Tunguska event galaxies rich in mystery decipherment billions upon billions. Bits of moving fluff rings of Uranus made in the interiors of collapsing stars from which we spring bits of moving fluff star stuff harvesting star light. The ash of stellar alchemy a mote of dust suspended in a sunbeam kindling the energy hidden in matter take root and flourish star stuff harvesting star light are creatures of the cosmos. 10 | 11 | Tesseract something incredible is waiting to be known Cambrian explosion Flatland Jean-François Champollion rich in heavy atoms? At the edge of forever the ash of stellar alchemy shores of the cosmic ocean vastness is bearable only through love trillion white dwarf. Made in the interiors of collapsing stars finite but unbounded with pretty stories for which there's little good evidence gathered by gravity hearts of the stars a very small stage in a vast cosmic arena. 12 | 13 | Rogue intelligent beings dream of the mind's eye vanquish the impossible white dwarf kindling the energy hidden in matter. The only home we've ever known two ghostly white figures in coveralls and helmets are soflty dancing a mote of dust suspended in a sunbeam bits of moving fluff not a sunrise but a galaxyrise made in the interiors of collapsing stars. Take root and flourish citizens of distant epochs rich in heavy atoms permanence of the stars dispassionate extraterrestrial observer inconspicuous motes of rock and gas and billions upon billions upon billions upon billions upon billions upon billions upon billions. -------------------------------------------------------------------------------- /gridsome.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | siteName: 'Gridsome starter bootstrap', 3 | siteDescription: 'A starter project for Gridsome with Bootstrap and some other useful tools.', 4 | siteUrl: 'https://gridsome-starter-bootstrap.loke.dev', 5 | plugins: [ 6 | { 7 | use: '@gridsome/source-filesystem', 8 | options: { 9 | path: 'blog/**/*.md', 10 | typeName: 'BlogPost', 11 | resolveAbsolutePaths: true, 12 | remark: { 13 | externalLinksTarget: '_blank', 14 | externalLinksRel: ['nofollow', 'noopener', 'noreferrer'], 15 | }, 16 | }, 17 | }, 18 | { 19 | use: '@gridsome/plugin-google-analytics', 20 | options: { 21 | id: 'UA-72659574-10' 22 | } 23 | }, 24 | { 25 | use: '@gridsome/plugin-sitemap', 26 | options: { 27 | cacheTime: 600000 28 | } 29 | } 30 | ], 31 | css: { 32 | loaderOptions: { 33 | scss: { 34 | } 35 | } 36 | }, 37 | devServer: { 38 | host: '0.0.0.0', 39 | port: 8080 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gridsome-starter-bootstrap", 3 | "scripts": { 4 | "build": "gridsome build", 5 | "dev": "gridsome develop", 6 | "explore": "gridsome explore" 7 | }, 8 | "dependencies": { 9 | "@gridsome/plugin-google-analytics": "^0.1.2", 10 | "@gridsome/plugin-sitemap": "^0.4.0", 11 | "@gridsome/source-filesystem": "^0.6.2", 12 | "@gridsome/transformer-remark": "^0.6.4", 13 | "bootstrap": "^4.3.1", 14 | "bootstrap-vue": "^2.21.2", 15 | "gridsome": "^0.7.23", 16 | "sass": "^1.38.0", 17 | "sass-loader": "7.3.1" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/assets/images/404.svg: -------------------------------------------------------------------------------- 1 | page not found -------------------------------------------------------------------------------- /src/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/loke-dev/gridsome-starter-bootstrap/HEAD/src/assets/images/logo.png -------------------------------------------------------------------------------- /src/assets/images/mail-sent.svg: -------------------------------------------------------------------------------- 1 | mail -------------------------------------------------------------------------------- /src/assets/styles/custom.scss: -------------------------------------------------------------------------------- 1 | $theme-colors: ( 2 | blue: #007bff, 3 | indigo: #6610f2, 4 | purple: #6f42c1, 5 | pink: #e83e8c, 6 | red: #dc3545, 7 | orange: #fd7e14, 8 | yellow: #ffc107, 9 | green: #28a745, 10 | teal: #20c997, 11 | cyan: #17a2b8, 12 | white: #fff, 13 | gray: #6c757d, 14 | gray-dark: #343a40, 15 | 16 | primary: #3BBA95, 17 | secondary: #6c757d, 18 | success: #28a745, 19 | info: #17a2b8, 20 | warning: #ffc107, 21 | danger: #dc3545, 22 | light: #f8f9fa, 23 | dark: #343a40, 24 | ); 25 | 26 | $grid-breakpoints: ( 27 | xs: 0, 28 | sm: 480px, 29 | md: 640px, 30 | lg: 992px, 31 | xl: 1300px 32 | ); 33 | -------------------------------------------------------------------------------- /src/assets/styles/main.scss: -------------------------------------------------------------------------------- 1 | @import 'custom.scss'; 2 | @import 'node_modules/bootstrap/scss/bootstrap.scss'; 3 | @import 'node_modules/bootstrap-vue/src/index.scss'; 4 | -------------------------------------------------------------------------------- /src/components/BlogContent.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 12 | 13 | -------------------------------------------------------------------------------- /src/components/Footer.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /src/components/Header.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | query { 22 | metadata { 23 | siteName 24 | } 25 | } 26 | 27 | 28 | 84 | -------------------------------------------------------------------------------- /src/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/loke-dev/gridsome-starter-bootstrap/HEAD/src/favicon.png -------------------------------------------------------------------------------- /src/layouts/Default.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 22 | 23 | 24 | 49 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import DefaultLayout from '~/layouts/Default.vue' 2 | 3 | import BootstrapVue from 'bootstrap-vue' 4 | import './assets/styles/main.scss' 5 | 6 | import checkIfMobile from './mixins/checkIfMobile' 7 | 8 | export default function (Vue, { router, head, isClient }) { 9 | Vue.use(BootstrapVue) 10 | Vue.component('Layout', DefaultLayout) 11 | Vue.mixin(checkIfMobile) 12 | } 13 | -------------------------------------------------------------------------------- /src/mixins/checkIfMobile.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | isMobile: function() { 4 | let check = false; 5 | (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera); 6 | return check; 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /src/pages/404.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 22 | -------------------------------------------------------------------------------- /src/pages/About.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 21 | 22 | 31 | -------------------------------------------------------------------------------- /src/pages/Blog.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 25 | query Blog { 26 | posts: allBlogPost(sortBy: "date") { 27 | edges { 28 | node { 29 | id 30 | path 31 | title 32 | excerpt 33 | image 34 | } 35 | } 36 | } 37 | } 38 | 39 | 40 | 52 | -------------------------------------------------------------------------------- /src/pages/Contact.vue: -------------------------------------------------------------------------------- 1 | 60 | 61 | 96 | 97 | 105 | -------------------------------------------------------------------------------- /src/pages/Index.vue: -------------------------------------------------------------------------------- 1 | 85 | 86 | 93 | 94 | 103 | -------------------------------------------------------------------------------- /src/pages/success.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | 17 | 25 | 26 | -------------------------------------------------------------------------------- /src/templates/BlogPost.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 26 | query BlogPost ($path: String!) { 27 | post: blogPost (path: $path) { 28 | title 29 | author 30 | date 31 | timeToRead 32 | content 33 | image 34 | } 35 | } 36 | 37 | 38 | 52 | 53 | 73 | -------------------------------------------------------------------------------- /static/admin/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Admin 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 |
29 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /static/google74eb19899cc3654d.html: -------------------------------------------------------------------------------- 1 | google-site-verification: google74eb19899cc3654d.html -------------------------------------------------------------------------------- /static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/loke-dev/gridsome-starter-bootstrap/HEAD/static/logo.png -------------------------------------------------------------------------------- /uploads/adjustments.svg: -------------------------------------------------------------------------------- 1 | adjustments -------------------------------------------------------------------------------- /uploads/app.svg: -------------------------------------------------------------------------------- 1 | mobile app -------------------------------------------------------------------------------- /uploads/code-review.svg: -------------------------------------------------------------------------------- 1 | code review -------------------------------------------------------------------------------- /uploads/coffee.svg: -------------------------------------------------------------------------------- 1 | coffee break -------------------------------------------------------------------------------- /uploads/content.svg: -------------------------------------------------------------------------------- 1 | content creator -------------------------------------------------------------------------------- /uploads/cupcake.svg: -------------------------------------------------------------------------------- 1 | tasting -------------------------------------------------------------------------------- /uploads/edit.svg: -------------------------------------------------------------------------------- 1 | editable -------------------------------------------------------------------------------- /uploads/email.svg: -------------------------------------------------------------------------------- 1 | mention -------------------------------------------------------------------------------- /uploads/hello.svg: -------------------------------------------------------------------------------- 1 | hello -------------------------------------------------------------------------------- /uploads/profile.svg: -------------------------------------------------------------------------------- 1 | profile -------------------------------------------------------------------------------- /uploads/responsive.svg: -------------------------------------------------------------------------------- 1 | responsiveness -------------------------------------------------------------------------------- /uploads/space.svg: -------------------------------------------------------------------------------- 1 | Outer space -------------------------------------------------------------------------------- /uploads/text.svg: -------------------------------------------------------------------------------- 1 | personal text --------------------------------------------------------------------------------