feat: YC application answers + Remotion video component + gitignore updates

- Add YC_APPLICATION_ANSWERS.md with full Summer 2026 application draft
  (all fields answered, updated with mortgage broker user interview quote)
- Wire OffthreadVideo into YCAppVideo.tsx for founder recording playback
- Ignore .mov files and .gstack/ in .gitignore

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
garfieldheron
2026-05-13 18:20:17 -04:00
parent 660b7cdf18
commit 22117a34a8
3 changed files with 387 additions and 4 deletions

View File

@@ -1,10 +1,20 @@
import { AbsoluteFill, interpolate, spring, useCurrentFrame, useVideoConfig } from "remotion";
import {
AbsoluteFill,
OffthreadVideo,
Sequence,
staticFile,
interpolate,
spring,
useCurrentFrame,
useVideoConfig,
} from "remotion";
import { COLORS, FONT, SPRING_CFG } from "./styles";
// ─── CONFIG ──────────────────────────────────────────────────────────
const INTRO_DURATION = 3; // seconds
const OUTRO_DURATION = 2; // seconds
const TOTAL_DURATION = 60; // seconds (YC wants ~1 min)
const TALKING_HEAD_DURATION = TOTAL_DURATION - INTRO_DURATION - OUTRO_DURATION;
// ─── INTRO CARD ──────────────────────────────────────────────────────
const IntroCard = () => {
@@ -126,7 +136,7 @@ const VideoFrame = ({ children }: { children?: React.ReactNode }) => {
// Fade in from intro
const fadeIn = interpolate(
frame,
[INTRO_DURATION * fps, (INTRO_DURATION + 0.5) * fps],
[0, 0.5 * fps],
[0, 1],
{ extrapolateLeft: "clamp", extrapolateRight: "clamp" }
);
@@ -134,7 +144,7 @@ const VideoFrame = ({ children }: { children?: React.ReactNode }) => {
// Fade out to outro
const fadeOut = interpolate(
frame,
[(TOTAL_DURATION - OUTRO_DURATION - 0.5) * fps, (TOTAL_DURATION - OUTRO_DURATION) * fps],
[(TALKING_HEAD_DURATION - 0.5) * fps, TALKING_HEAD_DURATION * fps],
[1, 0],
{ extrapolateLeft: "clamp", extrapolateRight: "clamp" }
);
@@ -328,7 +338,21 @@ export const YCAppVideo = () => {
return (
<AbsoluteFill style={{ background: "#000" }}>
{showIntro && <IntroCard />}
{!showIntro && !showOutro && <VideoFrame />}
<Sequence
from={INTRO_DURATION * fps}
durationInFrames={TALKING_HEAD_DURATION * fps}
>
<VideoFrame>
<OffthreadVideo
src={staticFile("yc-founder-recording.mov")}
style={{
width: "100%",
height: "100%",
objectFit: "cover",
}}
/>
</VideoFrame>
</Sequence>
{showOutro && <OutroCard />}
</AbsoluteFill>
);