├── .eslintrc
├── .gitignore
├── .prettierrc
├── LICENSE
├── README.md
├── contributing.md
├── gatsby-config.js
├── gatsby-node.js
├── package-lock.json
├── package.json
├── src
├── components
│ ├── BackBtn.js
│ ├── Container.js
│ ├── ContributeBtn.js
│ ├── Footer.js
│ ├── PortfolioItem.js
│ ├── PortfolioName.js
│ ├── PortfolioPage.js
│ ├── PortfoliosList.js
│ ├── SubTitle.js
│ └── Title.js
├── pages
│ ├── 404.js
│ ├── global.js
│ ├── head.js
│ └── index.js
├── portfolios
│ ├── bruno-simon
│ │ ├── bruno-simon.md
│ │ └── bruno-simon.png
│ ├── danny-garcia
│ │ ├── danny-garcia.md
│ │ └── danny-garcia.png
│ ├── diana-ilithya
│ │ ├── diana-ilithya.md
│ │ └── ilithya.png
│ ├── eli-fitch
│ │ ├── eli-fitch-portfolio.png
│ │ └── eli-fitch.md
│ ├── fabio-ottaviani
│ │ ├── fabio-ottaviani-portfolio.png
│ │ └── fabio-ottaviani.md
│ ├── julian-garnier
│ │ ├── julian-garnier.md
│ │ └── julian-garnier.png
│ ├── louis-hoebregts
│ │ ├── louis-hoebregts.md
│ │ └── louis-hoebregts.png
│ ├── lynn-fisher
│ │ ├── lynn-fisher.md
│ │ └── lynn-fisher.png
│ ├── nick-jones
│ │ ├── nick-jones-portfolio.png
│ │ └── nick-jones.md
│ ├── pierre-reimertz
│ │ ├── pierre-reimertz-portfolio.png
│ │ └── pierre-reimertz.md
│ ├── rogie-king
│ │ ├── rogie-king-portfolio.png
│ │ └── rogie-king.md
│ └── shanteli-martin
│ │ ├── shanteli-martin-portfolio.png
│ │ └── shanteli-martin.md
└── templates
│ └── Portfolio.js
├── static
├── cp-screenshot-2.png
└── favicon.ico
└── yarn.lock
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "wesbos"
4 | ],
5 | "rules": {
6 | "react/prop-types": false
7 | }
8 | }
--------------------------------------------------------------------------------
/.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 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "endOfLine": "lf",
3 | "semi": false,
4 | "singleQuote": false,
5 | "tabWidth": 2,
6 | "trailingComma": "es5"
7 | }
8 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 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 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Creative Portfolios 🌀
2 | > This project was created with [React](https://reactjs.org/), [Gatsby](https://www.gatsbyjs.org/) and [GraphQL](https://graphql.org/).
3 | - Contributions are more than welcome. Please see [contribution guide](contributing.md).
4 |
5 | 
6 |
7 | ### Portfolios ✨
8 | - [Danny Garcia](https://danny-garcia.com/)
9 | - [Diana Ilithya](https://www.ilithya.rocks/)
10 | - [Bruno Simon](https://bruno-simon.com/)
11 | - [Lynn Fisher](https://lynnandtonic.com/)
12 | - [Rogie King](https://rog.ie/)
13 | - [Shanteli Martin](https://shantellmartin.art/)
14 | - [Pierre Reimertz](https://www.reimertz.co/)
15 | - [Nick Jones](http://www.narrowdesign.com/)
16 | - [Eli Fitch](http://eli.wtf/)
17 | - [Fabio Ottaviani](http://www.supah.it/)
18 | - [Julian Garnier](https://juliangarnier.com/)
19 | - [Louis Hoebregts](https://mamboleoo.be/)
20 |
21 | ### Install ⚙️
22 | ```
23 | npm install / yarn install
24 | ```
25 |
26 | ### Start 🏃
27 |
28 | ```
29 | npm run develop / yarn develop
30 | ```
31 |
32 | ### Build 😷
33 |
34 | ```
35 | npm run build / yarn build
36 | ```
37 |
--------------------------------------------------------------------------------
/contributing.md:
--------------------------------------------------------------------------------
1 | # Rules:
2 | 1. **Creative Portfolios** IS NOT FOR SELF-PROMOTION!
3 | 2. The content of the portfolio is not relevent.
4 | 3. Please compare your portfolio with the existing ones.
5 | 4. Make sure the portfolio meet any of this descriptors:
6 | - [x] Creative/Cool
7 | - [x] Unique/Original
8 | - [x] Beautiful
9 | - [x] Expertly executed
10 |
11 | # Contribution Guidelines
12 | - Search previous suggestions before making a new one, as yours may be a duplicate.
13 | - Open an issue with the label **new portfolio** that I created with the **name** of the person who's portfolio you submit in the title and the **link** to the portfolio in the description.
14 | - Improvements to the existing code or other features are more than welcome.
15 |
16 | Thank you for contributing 😃
17 |
--------------------------------------------------------------------------------
/gatsby-config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | siteMetadata: {
3 | title: 'Creative Portfolios',
4 | author: 'Raul Dronca',
5 | },
6 | plugins: [
7 | 'gatsby-plugin-react-helmet',
8 | 'gatsby-plugin-react-helmet',
9 | {
10 | resolve: 'gatsby-source-filesystem',
11 | options: {
12 | name: 'src',
13 | path: `${__dirname}/src/`,
14 | },
15 | },
16 | 'gatsby-transformer-sharp',
17 | 'gatsby-plugin-sharp',
18 | {
19 | resolve: 'gatsby-transformer-remark',
20 | options: {
21 | plugins: [
22 | {
23 | resolve: 'gatsby-remark-video',
24 | options: {
25 | width: '100%',
26 | height: 'auto',
27 | preload: 'auto',
28 | muted: true,
29 | autoplay: true,
30 | loop: true,
31 | },
32 | },
33 | 'gatsby-remark-relative-images',
34 | {
35 | resolve: 'gatsby-remark-images',
36 | options: {
37 | maxWidth: 750,
38 | linkImagesToOriginal: false,
39 | },
40 | },
41 | {
42 | resolve: `gatsby-plugin-styled-components`,
43 | },
44 | ],
45 | },
46 | },
47 | ],
48 | }
49 |
--------------------------------------------------------------------------------
/gatsby-node.js:
--------------------------------------------------------------------------------
1 | const path = require('path')
2 |
3 | module.exports.onCreateNode = ({ node, actions }) => {
4 | const { createNodeField } = actions
5 |
6 | if (node.internal.type === 'MarkdownRemark') {
7 | const slug = path.basename(node.fileAbsolutePath, '.md')
8 |
9 | createNodeField({
10 | node,
11 | name: 'slug',
12 | value: slug,
13 | })
14 | }
15 | }
16 |
17 | module.exports.createPages = async ({ graphql, actions }) => {
18 | const { createPage } = actions
19 | const portfolioTemplate = path.resolve('./src/templates/Portfolio.js')
20 |
21 | const res = await graphql(`
22 | {
23 | allMarkdownRemark {
24 | edges {
25 | node {
26 | fields {
27 | slug
28 | }
29 | }
30 | }
31 | }
32 | }
33 | `)
34 |
35 | res.data.allMarkdownRemark.edges.forEach(edge => {
36 | createPage({
37 | component: portfolioTemplate,
38 | path: `/${edge.node.fields.slug}`,
39 | context: {
40 | slug: edge.node.fields.slug,
41 | },
42 | })
43 | })
44 | }
45 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gatsby-starter-hello-world",
3 | "private": true,
4 | "description": "A simplified bare-bones starter for Gatsby",
5 | "version": "0.1.0",
6 | "license": "MIT",
7 | "scripts": {
8 | "build": "gatsby build",
9 | "develop": "gatsby develop",
10 | "format": "prettier --write src/**/*.{js,jsx}",
11 | "start": "npm run develop",
12 | "serve": "gatsby serve",
13 | "test": "echo \"Write tests! -> https://gatsby.dev/unit-testing\""
14 | },
15 | "dependencies": {
16 | "babel-plugin-styled-components": "^1.10.6",
17 | "gatsby": "^2.9.8",
18 | "gatsby-image": "^2.2.7",
19 | "gatsby-plugin-react-helmet": "^3.1.13",
20 | "gatsby-plugin-sharp": "^2.2.9",
21 | "gatsby-plugin-styled-components": "^3.1.11",
22 | "gatsby-remark-images": "^3.1.7",
23 | "gatsby-remark-relative-images": "^0.2.2",
24 | "gatsby-remark-video": "^1.2.1",
25 | "gatsby-source-filesystem": "^2.1.5",
26 | "gatsby-transformer-remark": "^2.6.6",
27 | "gatsby-transformer-sharp": "^2.2.5",
28 | "react": "^16.8.6",
29 | "react-dom": "^16.8.6",
30 | "react-helmet": "^5.2.1",
31 | "react-parallax-tilt": "^1.3.27",
32 | "styled-components": "^4.3.2"
33 | },
34 | "devDependencies": {
35 | "babel-eslint": "^9.0.0",
36 | "eslint": "^5.14.1",
37 | "eslint-config-airbnb": "^17.1.0",
38 | "eslint-config-prettier": "^4.1.0",
39 | "eslint-config-wesbos": "0.0.19",
40 | "eslint-plugin-html": "^5.0.3",
41 | "eslint-plugin-import": "^2.16.0",
42 | "eslint-plugin-jsx-a11y": "^6.2.1",
43 | "eslint-plugin-prettier": "^3.0.1",
44 | "eslint-plugin-react": "^7.12.4",
45 | "eslint-plugin-react-hooks": "^1.3.0",
46 | "prettier": "^1.16.4"
47 | },
48 | "repository": {
49 | "type": "git",
50 | "url": "https://github.com/gatsbyjs/gatsby-starter-hello-world"
51 | },
52 | "bugs": {
53 | "url": "https://github.com/gatsbyjs/gatsby/issues"
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/components/BackBtn.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import styled from 'styled-components'
3 |
4 | const BackBtnStyle = styled.span`
5 | width: 100px;
6 | display: flex;
7 | align-items: center;
8 | color: #fff;
9 | text-decoration: none;
10 | font-size: 18px;
11 | font-weight: 600;
12 |
13 | &:hover svg {
14 | transform: translateX(-5px);
15 | }
16 |
17 | svg {
18 | transition: transform 0.3s cubic-bezier(0.165, 0.84, 0.44, 1);
19 | margin-right: 10px;
20 | }
21 |
22 | @media (max-width: 768px) {
23 | font-size: 16px;
24 | }
25 | `
26 |
27 | const BackBtn = () => (
28 |
48 |
49 |
75 |
26 |
27 |