Repository: hbollon/portfolio-vuejs Branch: master Commit: 174ec803c440 Files: 29 Total size: 40.4 KB Directory structure: gitextract_g9zataws/ ├── .github/ │ └── FUNDING.yml ├── .gitignore ├── .python-version ├── LICENSE ├── README.md ├── babel.config.js ├── data/ │ └── portfolio-vuejs_import.json ├── package.json ├── public/ │ ├── .htaccess │ └── index.html └── src/ ├── App.vue ├── components/ │ ├── AnimateOnVisible.vue │ ├── Description.vue │ ├── Experience.vue │ ├── ExperienceColumn.vue │ ├── Footer.vue │ ├── LandingPage.vue │ ├── PersonnalCard.vue │ ├── Photo.vue │ ├── Presentation.vue │ ├── Projects.vue │ ├── Skills.vue │ ├── SocialBar.vue │ └── Title.vue ├── cosmic.js ├── main.js └── styles/ ├── animation.scss ├── constants.scss └── global.scss ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms github: [hbollon] ko_fi: hugobollon custom: ['paypal.me/hugobollon'] ================================================ FILE: .gitignore ================================================ .DS_Store node_modules /dist # local env files .env.local .env.*.local # Log files npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* # Editor directories and files .idea .vscode *.suo *.ntvs* *.njsproj *.sln *.sw? ================================================ FILE: .python-version ================================================ portfolio-vuejs ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2020 Hugo Bollon Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================

VueJS portfolio template

> Portfolio template using VueJs framework, CosmicJS API and Bootstrap

Live demo with my personnal data here !

portfolio-vuejs preview --- ## Table of Contents - [Features](#features) - [Setup](#project-setup) - [Edit Content](#how-to-edit-content) - [Author](#author) - [Contributing](#-contributing) - [License](#-license) --- ## Features - Builded with VueJs framework ✨ - One page layout ✨ - Material design ✨ - Bootstrap 4.5 & SCSS ✨ - Responsive ✨ - Animated layout ✨ - Content managed with CosmicJS API ✨ ## Project setup ``` npm install ``` ### Compiles and hot-reloads for development ``` npm run serve ``` ### Compiles and minifies for production ``` npm run build ``` ### Lints and fixes files ``` npm run lint ``` ### Customize configuration See [Configuration Reference](https://cli.vuejs.org/config/). ## How to edit content This template have a CMS support with CosmicJS. You can easily put your content there by creating and linking your CosmicJS account. In order to customize your portfolio, you must create a CosmicJS account and a new fresh bucket on it. Once done, you must update credentials of the **.env** file. To do this, you just have to modify the variables contained in the ENV file (API token, bucket slug and read key). ```env # CosmicJS VUE_APP_COSMICJS_TOKEN=" " VUE_APP_COSMICJS_BUCKET_SLUG=" " VUE_APP_COSMICJS_BUCKET_READ_KEY=" " ``` After that, you need to create the object type and data we will use. To do that properly and easily, you can import the json file, located [inside the data folder of this repo](https://github.com/hbollon/portfolio-vuejs/blob/master/data/portfolio-vuejs_import.json), by accessing import/export settings inside your bucket settings page. Now, you can customize it with your data through CosmicJS interface! ## Author 👤 **Hugo Bollon** * Github: [@hbollon](https://github.com/hbollon) * LinkedIn: [@Hugo Bollon](https://www.linkedin.com/in/hugobollon/) * Portfolio: [hugobollon.me](https://www.hugobollon.me) ## 🤝 Contributing Contributions, issues and feature requests are welcome!
Feel free to check [issues page](https://github.com/hbollon/portfolio-vuejs/issues). ## Show your support Give a ⭐️ if this project helped you! ## 📝 License This project is under [MIT](https://github.com/hbollon/portfolio-vuesjs/blob/master/LICENSE) license. ================================================ FILE: babel.config.js ================================================ module.exports = { presets: [ '@vue/cli-plugin-babel/preset' ] } ================================================ FILE: data/portfolio-vuejs_import.json ================================================ {"bucket":{"_id":"5f00bd777c62a200080e8faf","slug":"hugobollonme","title":"hugobollon.me","object_types":[{"title":"portfolio-contents","slug":"portfolio-contents","singular":"portfolio-content","metafields":[],"options":{"slug_field":1,"content_editor":1},"preview_link":"","priority_locale":null,"extensions":null,"order":2}],"objects":[{"_id":"5f011c5b90e9e00007825ea8","order":5,"slug":"experiences","title":"experiences","content":"","metafields":[{"children":null,"type":"text","title":"description","key":"description","id":"rab2gb3ikerouxtvpewn","value":"Professional and academic"},{"children":null,"type":"text","title":"title","key":"title","id":"drnw6zxqjxpxagtmntqc","value":"Experience"},{"children":null,"type":"json","title":"professional","key":"professional","id":"FtSwl0XI9C","value":[{"year":"01.2020 - 05.2020","title":"Urbalog LAET Project","content":"Digitizing the Urbalog board game on Android with the Nearby Connection API"},{"year":"07.2019","title":"Pfeiffer Vacuum SAS, Annecy","content":"Interim IT mission: implementation of a new Qlickview access management program + Laravel development"},{"year":"07.2018","title":"Pfeiffer Vacuum SAS, Annecy","content":"Interim IT mission: Management of SAP tables and inventory of sub-programs."}],"required":true},{"children":null,"type":"json","title":"academic","key":"academic","id":"b2a969sy7g","value":[{"year":"From September 2020","title":"Computer Science Master at USMB","content":"Specialized in artificial intelligence and collaborative systems"},{"year":"2017 - 2020","title":"IT License","content":"University Savoie Mont-Blanc, France"},{"year":"2013 - 2017","title":"Scientific Baccalaureate","content":"Lycée de l'Albanais at Rumilly, France"}],"required":true}],"bucket":"5f00bd777c62a200080e8faf","type_slug":"portfolio-contents","created_at":"2020-07-05T00:18:35.583Z","created_by":"5f00bd137c62a200080e8fae","modified_at":"2020-07-05T17:32:57.155Z","created":"2020-07-05T00:18:35.583Z","user_id":"5f00bd137c62a200080e8fae","options":{"content_editor":1,"slug_field":1},"status":"published","published_at":"2020-07-05T17:32:57.155Z","modified_by":"5f00bd137c62a200080e8fae","publish_at":null,"unpublish_at":null},{"_id":"5f01fd8350006f00083229f5","order":4,"slug":"description","title":"description","content":"","metafields":[{"children":null,"type":"text","title":"pres_second","key":"pres_second","id":"Igv3UdzOfX","value":"I always liked to get into projects using the skills that I did not have or were even spare pure programming like web design, 3D modeling ect... This allowed me to learn to be autonomous and to learn on my own, certainly not without difficulties far from it, but I always managed to overcome the obstacles and solve the problems I encountered !"},{"children":null,"type":"text","title":"pres_first","key":"pres_first","id":"d6tIa0Bibt","value":"I'm a Full-Stack Developer student. Actually, I have a Licence BAC+3 in IT and I just started a computer science Master specialized in artificial intelligence and collaborative systems. IT is not only my professional background. It is also and above all a passion that has grown since I was 16 years old."},{"children":null,"type":"text","title":"pres_title","key":"pres_title","id":"IqVCE1U7Qb","value":"Who am I ?"},{"children":null,"type":"text","title":"description","key":"description","id":"68UNnxOFq7","value":"Hope to know you after"},{"children":null,"type":"text","title":"title","key":"title","id":"OhyFWRR6Xn","value":"About Me"}],"bucket":"5f00bd777c62a200080e8faf","type_slug":"portfolio-contents","created_at":"2020-07-05T16:19:15.848Z","created_by":"5f00bd137c62a200080e8fae","modified_at":"2020-11-06T14:31:39.945Z","created":"2020-07-05T16:19:15.848Z","user_id":"5f00bd137c62a200080e8fae","options":{"content_editor":1,"slug_field":1},"status":"published","published_at":"2020-11-06T14:31:39.945Z","modified_by":"5f00bd137c62a200080e8fae","publish_at":null,"unpublish_at":null},{"_id":"5f01fee250006f00083229f7","order":3,"slug":"user-data","title":"user-data","content":"","metafields":[{"children":null,"type":"text","title":"name","key":"name","id":"OEkbevb9ch","value":"Hugo Bollon"},{"children":null,"type":"text","title":"status","key":"status","id":"NX8v723S0G","value":"Full-Stack Developer"},{"children":null,"type":"text","title":"email","key":"email","id":"2VhiCIosBh","value":"hugo.bollon@gmail.com"},{"children":null,"type":"text","title":"phone","key":"phone","id":"zSqJFpvOeE","value":"+33 6 51 99 80 78"},{"children":null,"type":"text","title":"city","key":"city","id":"eePnSPzpxY","value":"Chambéry, France"},{"children":null,"type":"text","title":"lang","key":"lang","id":"jh95I8Z7VB","value":"French, English"},{"children":null,"type":"text","title":"photo","key":"photo","id":"D4LfrSKbrc","value":"photo.jpg"}],"bucket":"5f00bd777c62a200080e8faf","type_slug":"portfolio-contents","created_at":"2020-07-05T16:25:06.834Z","created_by":"5f00bd137c62a200080e8fae","modified_at":"2020-07-05T20:33:36.208Z","created":"2020-07-05T16:25:06.834Z","user_id":"5f00bd137c62a200080e8fae","options":{"content_editor":1,"slug_field":1},"status":"published","published_at":"2020-07-05T20:33:36.208Z","modified_by":"5f00bd137c62a200080e8fae","publish_at":null,"unpublish_at":null},{"_id":"5f0204d6ea1bf90007ad680f","order":2,"slug":"links","title":"links","content":"","metafields":[{"children":null,"type":"text","title":"facebook","key":"facebook","id":"gLDrzR50ta","value":"https://www.facebook.com/hugo.bollon"},{"children":null,"type":"text","title":"instagram","key":"instagram","id":"KMi8FlOyrI","value":"https://www.instagram.com/_hbollon"},{"children":null,"type":"text","title":"linkedin","key":"linkedin","id":"qVc8Mh2S5A","value":"https://www.linkedin.com/in/hugobollon"},{"children":null,"type":"text","title":"github","key":"github","id":"NPDNo7uSc9","value":"https://github.com/hbollon"}],"bucket":"5f00bd777c62a200080e8faf","type_slug":"portfolio-contents","created_at":"2020-07-05T16:50:30.087Z","created_by":"5f00bd137c62a200080e8fae","modified_at":"2020-11-06T14:30:59.357Z","created":"2020-07-05T16:50:30.087Z","user_id":"5f00bd137c62a200080e8fae","options":{"content_editor":1,"slug_field":1},"status":"published","published_at":"2020-11-06T14:30:59.357Z","modified_by":"5f00bd137c62a200080e8fae","publish_at":null,"unpublish_at":null},{"_id":"5f02127c1b1b930007b5896c","order":1,"slug":"skills","title":"skills","content":"","metafields":[{"children":null,"type":"json","title":"items","key":"items","id":"IEBchE5swc","value":[{"title":"C","img":"C.png"},{"title":"C++","img":"cplusplus.png"},{"title":"C#","img":"Csharp.png"},{"title":"Java","img":"java.png"},{"title":"Unity","img":"unity.png"},{"title":"HTML","img":"html.png"},{"title":"CSS","img":"css.png"},{"title":"PHP","img":"php.png"},{"title":"Laravel","img":"laravel.png"},{"title":"VueJS","img":"vuejs.png"},{"title":"Android","img":"android.png"},{"title":"Linux","img":"linux.png"},{"title":"Git/Github","img":"Octocat.png"},{"title":"Go","img":"go.png"},{"title":"VPS/Web Hosting","img":"ovh.png"}]},{"children":null,"type":"text","title":"title","key":"title","id":"YtRf42YCsn","value":"Skills"},{"children":null,"type":"text","title":"description","key":"description","id":"QTsdJU1QcF","value":"Here is my armament"}],"bucket":"5f00bd777c62a200080e8faf","type_slug":"portfolio-contents","created_at":"2020-07-05T17:48:44.602Z","created_by":"5f00bd137c62a200080e8fae","modified_at":"2020-11-06T13:55:46.187Z","created":"2020-07-05T17:48:44.602Z","user_id":"5f00bd137c62a200080e8fae","options":{"content_editor":1,"slug_field":1},"status":"published","published_at":"2020-11-06T13:55:46.187Z","modified_by":"5f00bd137c62a200080e8fae","publish_at":null,"unpublish_at":null},{"_id":"5f023635b7e93b000741a246","order":0,"slug":"projects","title":"projects","content":"","metafields":[{"children":null,"type":"json","title":"items","key":"items","id":"nPhh7RXJaN","value":[{"title":"IG_Automation_Bot (Work in progress)","content":"Python script for Instagram automation using Instaloader. Used for auto following and DM. Easily configurable through Yaml config files!

Link : https://github.com/hbollon/IG_Automation_Bot","link":"https://github.com/hbollon/IG_Automation_Bot","image":"ig.gif","tag":"Software","color":"red","date":"2020-11-02"},{"title":"Go-edlib","content":"Golang string comparison and edit distance algorithms library, featuring : Levenshtein, LCS, Hamming, Damerau levenshtein (OSA and Adjacent transpositions algorithms), Jaro-Winkler, Cosine, etc.

Link : https://github.com/hbollon/go-edlib","link":"https://github.com/hbollon/go-edlib","image":"edlib.jpg","tag":"Library","color":"blue","date":"2020-08-25"},{"title":"Gyro'Ball","content":"3D labyrinth game project for Android using Unity. Use device gyroscope.

Link : Google Play","link":"https://play.google.com/store/apps/details?id=com.BitsPlease.GyroBall&hl=fr&fbclid=IwAR0itwUAcbpAl3TgkFGiSrQz_CHTRpWjSXTQZqNGPESikdOJWZ6DIrk5qAA","image":"gyroball.jpg","tag":"Video Game","color":"purple","date":"2020-07-28"},{"title":"GyroscopeControl","content":"Unity script used for smooth and customizable object rotation with gyroscope. It include initial calibration with offset, rotation speed, smoothing parameter editable in Unity inspector and debug overlay.

Link : https://github.com/hbollon/GyroscopeControl","link":"https://github.com/hbollon/GyroscopeControl","image":"","tag":"Script","color":"green","date":"2020-06-17"},{"title":"Urbalog","content":"Android adaptation of board game using Nearby Connections API and Java for the LAET

Link : https://github.com/hbollon/Urbalog","link":"https://github.com/hbollon/Urbalog","image":"urba.jpg","tag":"Video Game","color":"purple","date":"2020-05-19"},{"title":"android-sqlite-toolbox","content":"Android java package designed to manage any sqlite database. Includes creation of the db and interactions with it (CRUD), import and export in several file formats (easily adaptable to any other format) and synchronization in http.

Link : https://github.com/hbollon/android-sqlite-toolbox","link":"https://github.com/hbollon/android-sqlite-toolbox","image":"","tag":"Library","color":"blue","date":"2020-05-08"},{"title":"Le-Parrainage-Boursorama","content":"Website built with Laravel. Used to promote and manage sponsorships for a online bank. Hosted on personnal vps.

Link : https://le-parrainage-boursorama.fr","link":"https://le-parrainage-boursorama.fr","image":"boursoweb.jpg","tag":"Website","color":"orange","date":"2019-09-15"}]},{"children":null,"type":"text","title":"title","key":"title","id":"Di7UyvvoeZ","value":"My projects"},{"children":null,"type":"text","title":"description","key":"description","id":"Cc6brPtb2p","value":"This is my story"}],"bucket":"5f00bd777c62a200080e8faf","type_slug":"portfolio-contents","created_at":"2020-07-05T20:21:09.882Z","created_by":"5f00bd137c62a200080e8fae","modified_at":"2020-11-09T10:16:41.986Z","created":"2020-07-05T20:21:09.882Z","user_id":"5f00bd137c62a200080e8fae","options":{"content_editor":1,"slug_field":1},"status":"published","published_at":"2020-11-09T10:16:41.986Z","modified_by":"5f00bd137c62a200080e8fae","publish_at":null,"unpublish_at":null}],"media":[]}} ================================================ FILE: package.json ================================================ { "name": "portfolio-vuejs", "version": "0.1.0", "private": true, "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint" }, "dependencies": { "@cosmicjs/sdk": "^1.2.0", "@fortawesome/fontawesome-svg-core": "^1.2.36", "@fortawesome/free-brands-svg-icons": "^5.15.4", "@fortawesome/free-solid-svg-icons": "^5.15.4", "@fortawesome/vue-fontawesome": "^2.0.10", "@growthbunker/vuetimeline": "^0.1.17", "bootstrap": "^4.6.2", "core-js": "^3.38.1", "css-loader": "^5.2.7", "vue": "^2.7.16", "vue-carousel": "^0.18.0", "vue-style-loader": "^4.1.3", "vue2-animate": "^2.1.4" }, "devDependencies": { "@vue/cli-plugin-babel": "^4.5.19", "@vue/cli-plugin-eslint": "^4.5.19", "@vue/cli-service": "^4.5.19", "babel-eslint": "^10.1.0", "bootstrap-vue": "^2.23.1", "eslint": "^7.32.0", "eslint-plugin-vue": "^7.20.0", "node-sass": "^5.0.0", "sass-loader": "^10.5.2", "style-loader": "^2.0.0", "vue-template-compiler": "^2.7.16" }, "eslintConfig": { "root": true, "env": { "node": true }, "extends": [ "plugin:vue/essential", "eslint:recommended" ], "parserOptions": { "parser": "babel-eslint" }, "rules": {} }, "browserslist": [ "> 1%", "last 2 versions", "not dead" ] } ================================================ FILE: public/.htaccess ================================================ Options -MultiViews -Indexes RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] ================================================ FILE: public/index.html ================================================ Hugo Bollon Portfolio
================================================ FILE: src/App.vue ================================================ ================================================ FILE: src/components/AnimateOnVisible.vue ================================================ ================================================ FILE: src/components/Description.vue ================================================