Personal website/portfolio based on Gatsby, React, theme-ui, Netlify, Netlify CMS and with focus on accessibility and SEO. JAMstack site!
You can check this website at kseniaavdeeva.art.
- ๐ฅ Netlify as deployment service
- ๐ NetlifyCMS as content management system
- ๐คฉ Page Transitions, component-based (with no-js support)
- ๐ฎโโ๏ธ
IntersectionObserver
, component-based (with polyfill) - ๐ฟ React Context for global UI state, with SSR
- ๐
theme-ui
andgatsby-plugin-theme-ui
for build app based on constraint-based design principles - ๐ฏ Optimized with Google Lighthouse (including test)
- ๐ฅ Code Splitting of JS (component based)
- ๐ช Inline SVG support
- โ๏ธ One config file for site-wide settings
- ๐ Most social + meta tags in one component
- ๐ผ All favicons generated, only one icon file needed
- ๐ Offline support
- ๐ Manifest support
- ๐บ Sitemap support
- ๐ Night mode support
- ๐ Prettier for code style
- โ Renovate support
- ๐ Schema JSONLD
- ๐
size-plugin
to keep an eye on your bundle sizes - ๐จโ๐ซ ESLint (based on
eslint-plugin-react
)
Do you have suggestions or feedback? Open an issue!
Lighthouse scores (on Netlify)
# Installation with `gatsby-cli`
gatsby new my-site https://github.com/aandrewww/kseniaavdeeva.art
# Installation with `git clone`
git clone [email protected]:aandrewww/kseniaavdeeva.art.git my-site
cd my-site
npm install
# To develop
npm run develop
# To build
npm run build
# To test SSR (for Lighthouse etc.)
npm run ssr
# To format JS
npm run format
# To generate favicons (included in `build`)
npm run build:favicons
# Up Dependencies
npm run up
Find the site-wide configuration in site-config.js
.
module.exports = {
siteTitle: 'Ksenia Avdeeva | Protfolio',
siteTitleShort: 'Portfolio',
siteDescription: 'Ksenia avdeeva | Portfolio',
siteUrl: 'https://kseniaavdeeva.art',
themeColor: '#000',
backgroundColor: '#fff',
pathPrefix: null,
logo: path.resolve(__dirname, 'src/images/icon.png'),
social: {
twitter: '',
fbAppId: '',
},
googleAnalyticsId: process.env.GA_ID || '',
};
๐จ Don't forget to update your
robots.txt
insidestatic/
!
โโโ gatsby-browser.js # Specify how Gatsby renders pages in the browser
โโโ gatsby-config.js # Gatsby config, mostly taken from `site-config.js`
โโโ gatsby-node.js # Modify webpack config
โโโ gatsby-ssr.js # Specify how Gatsby builds pages
โโโ site-config.js # Global settings for the whole site, used by multiple scripts
โโโ static # Content, data, content images and netlifycms admin folders
โโโ src
โ โโโ cms # Components for preview in NetlifyCMS
โ โโโ components # Different components for pages
โ โโโ constants # Site-wide constants
โ โโโ containers # Container components if store is needed
โ โโโ gatsby-plugin-theme-ui # Folder with theme-ui configs
โ โโโ helpers # Different helpers
โ โโโ images # Images needed by the site/theme (not content)
โ โโโ pages # Website pages
โ โโโ store # Store and provider of a React.createContext instance
โ โโโ templates # Templates for pages
โโโ scripts
โโโ lighthouse.test.js # Tests the site specified inside `site-config.js` with Google Lighthouse (WIP)
โโโ favicons.js # Generates favicons and manifest using one png only.