- NextJS
- Contentful - CMS
- Cloudinary - Media/asset storage
- Vercel - Hosting
This application requires Node.js v16.13+.
To run development build:
npm run dev
Most assets are kept in cloudinary.
- logos/icons
- images
- videos
Content is configured in Contentful
- skills
If you just need to create a video player you can create a single instances like so
<CloudinaryVideoPlayer
videoPath="cabana_demo_abridged_voiceover"
posterOffset={110}
/>
// video loop on hover
<CloudinaryVideoPlayer
videoPath="cabana_demo_abridged_voiceover"
posterOffset={110}
playOnHover
/>
If you need to a create dynamic video full screen modal/overlay you can use the VideoOverlayProvider. It has an instance of the video player built into it and exposes video controls via context. e.g. Portfolio section displays posters of short demo videos
Wrap app section that needs an instance of the VideoOverlayProvider
<VideoOverlayProvider>{...children}</VideoOverlayProvider>
Usage
ClickableVideoPoster already makes use of the VideoOverlayProvider methods.
<ClickableVideoPoster
videoPath="cabana_demo_abridged_voiceover"
posterOffset={110}
/>
If you need to create a different component you can use the existing context methods or add your own
const { showVideoOverlay, hideVideoOverlay } = useVideoOverlay()
built with nodemailer and gmail api
.env file (1p) is required with to enable the contact email form.
Using https://react-svgr.com/playground/ to convert raw SVG to component type