[x] You're using svgr, you don't need fontawesome imports, just download the svgs and import accordingly
[x] flowtype, eh?
[x] There's a mix of constants for colors & inlined colors in your theme
[x] Padding/margins should generally be ramped, and done so consistently (i.e. you have .25em, .5em all over the place, xs and sm etc would be a better way to do that and control relational spacing easier)
[x] Compositions vs Components is a bit weird to me. Compositions are just components
[x] Accessibility concerns, looks like you're doing several onClicks that won't work w/ keyboard navigation
[x] Your naming conventions aren't great, it exposes a lot of implementation details throughout the code (i.e. naming things "setShowContactMe" instead of onGetInTouch or something more specific to the action, not the code)
[x] preprocess your images, you're targeting latest browsers, you could use webp
[x] main element padding on the bottom is a bit awkward, would be nice to be flush to the base of the site
[x] SEO, if she really wants to get traffic you'll want to work on that
[ ] You should absolutely consider pre-rendering w/ next or something of the like. The vast majority of the content is static and React is way overkill for this. A pre-render would make this site lightning fast in comparison
[x] lulz mobile
[x] "Work" circle thing that has item highlighted text disappear needs work, very, very confusing, would be massively confusing on mobile
[x] Contact me shadow should probably be blue hued to match the theme better
[x] Don't use display strings as object keys, consider a lookup pattern where the presentation label & value have the same key
[x] scrollToWork doesn't refer to anything inside of the component, can be defined outside the component
[x] tab indexing is horrendous
[x] Stop inlining svg content into elements
[ ] Look into react-hook-form or formik for your forms. Yeah, it's probably overkill, but you're managing error state and all sorts of things that can be done out of the box with very simple integrations
So I've removed all but one of the FontAwesome imports cuz one of them I'm using for their pulsed animation and I can't be bothered to actually animate that myself.
xs
andsm
etc would be a better way to do that and control relational spacing easier)onGetInTouch
or something more specific to the action, not the code)main
element padding on the bottom is a bit awkward, would be nice to be flush to the base of the sitescrollToWork
doesn't refer to anything inside of the component, can be defined outside the componentreact-hook-form
orformik
for your forms. Yeah, it's probably overkill, but you're managing error state and all sorts of things that can be done out of the box with very simple integrations