// ============================================================================= // Cédrick Picard — Portfolio data // ============================================================================= // // TO ADD A NEW PROJECT // Append an object to the PROJECTS array below. // Required keys: id, title, tagline, role, engine, year, status, // statusColor, cover, accentHue, description, highlights[], // stats[], tech[], links[], log[] // Optional: youtube (YT video ID, e.g. "5vs53SrDuh4") // itch (full itch.io URL) // note (yellow callout shown above the description) // statusColor: "green" | "amber" | "blue" | "purple" | "pink" // cover: must match a key in covers.jsx → window.Covers. // accentHue: OKLCH hue (0-360). Sets per-project tinted glow. // // TO ADD A CERTIFICATION // Append an object { year, issuer, name } to CERTIFICATIONS. // // TO ADD A TIMELINE ENTRY (job / school / etc.) // Append { year, role, where, note } to TIMELINE. // // TO ADD A SKILL / ENGINE // Add { name, abbr } to the relevant group in SKILLS. abbr is the 2-letter // monogram shown on the tile (e.g. "UE" for Unreal). // // TO ADD A DOWNLOAD (build, source zip, etc.) TO A PROJECT // On any project below, set the `download` field. Single download: // download: { // file: "downloads/zeus-demo.zip", // path relative to portfolio.html // label: "Download demo build", // button text // size: "120 MB" // optional, just for display // } // Multiple? Use an array of those objects. // Drop the actual file at the path you specify, then it appears in the // project's Overview tab. Leave the field absent / null to hide it. // ============================================================================= const PROJECTS = [ { id: "projectzeus", title: "Project Zeus", tagline: "Capstone studio project — Unreal C++ gameplay & cinematics", role: "Gameplay Developer", engine: "Unreal Engine 5 / C++ & Blueprints", year: "2024 — 2025", status: "Shipped", statusColor: "green", cover: "zeus", accentHue: 220, youtube: "5vs53SrDuh4", description: "Capstone project built with CtrlAltElite at Algonquin College's Capstone Studio. I owned player mechanics and UI work in Unreal C++ and Blueprints, and built the cinematic systems using Sequencer. We showcased the game weekly at the Canadian Aviation and Space Museum for public playtests — the kind of feedback loop you can't get any other way.", highlights: [ "Built player mechanics and UI in Unreal C++ + Blueprints", "Implemented in-engine cinematics with Sequencer", "Weekly public showcases at the Canadian Aviation and Space Museum", "Worked inside a structured studio pipeline (CtrlAltElite team)" ], stats: [ { label: "Duration", value: "8 months" }, { label: "Engine", value: "UE5" }, { label: "Team", value: "Studio" }, { label: "Showcases", value: "Weekly" } ], tech: ["Unreal Engine 5", "C++", "Blueprints", "Sequencer", "Perforce"], links: [ { label: "Watch trailer", href: "https://youtu.be/5vs53SrDuh4" } ], // download: { file: "downloads/project-zeus-build.zip", label: "Download build", size: "—" }, log: [ { date: "2025.04", note: "Final capstone showcase" }, { date: "2025.02", note: "Cinematics integration complete" }, { date: "2024.11", note: "First public playtest — Museum" }, { date: "2024.09", note: "Project kickoff at Capstone Studio" } ] }, { id: "ghostrunner-trailer", title: "Ghostrunner — Fan Trailer", tagline: "Cinematography class project. Not an official trailer.", role: "Editor & Cinematographer", engine: "CapCut · existing game footage", year: "2024", status: "Coursework", statusColor: "purple", cover: "ghost", accentHue: 350, youtube: "AUjRPGCjjRs", note: "Made for an Algonquin College cinematography class — not affiliated with the Ghostrunner game or its developers.", description: "A fan-made trailer cut for a cinematography class at Algonquin College. I sourced clips from existing Ghostrunner gameplay footage and edited everything in CapCut — focusing on pacing, beat-matching cuts to music, and building tension through shot length. This was about learning the craft of editing, not pretending to be marketing material.", highlights: [ "Edited entirely in CapCut from existing gameplay footage", "Focus on rhythm-cutting and shot pacing", "Cinematography class deliverable — Algonquin College" ], stats: [ { label: "For", value: "Class" }, { label: "Tool", value: "CapCut" }, { label: "Discipline", value: "Editing" }, { label: "School", value: "Algonquin" } ], tech: ["CapCut", "Cinematography", "Sound design", "Color"], links: [ { label: "Watch on YouTube", href: "https://youtu.be/AUjRPGCjjRs" } ], // download: { file: "downloads/ghostrunner-trailer.mp4", label: "Download trailer (.mp4)", size: "—" }, log: [ { date: "2024", note: "Submitted for Cinematography class" } ] }, { id: "konata", title: "Konata — Discord Music Bot", tagline: "A scalable music bot with sharding and persistent state", role: "Solo Developer", engine: "Node.js / SQLite", year: "2025", status: "Open Source", statusColor: "blue", cover: "konata", accentHue: 168, youtube: "VuJqhkwSLtE", description: "A Discord music bot that supports YouTube, Spotify and SoundCloud, with playlists, filters and premium features. I built it around Discord.js sharding so it handles multi-server load efficiently, and tuned audio streaming + SQLite-backed persistent storage to keep performance reliable across reconnects and restarts.", highlights: [ "Sharded architecture for multi-server scale", "Audio streaming optimisation across multiple sources (YouTube / Spotify / SoundCloud)", "Persistent state in SQLite — playlists & settings survive restarts", "Public repo with active development" ], stats: [ { label: "Runtime", value: "Node.js" }, { label: "Storage", value: "SQLite" }, { label: "Sources", value: "3+" }, { label: "Sharding", value: "Yes" } ], tech: ["Node.js", "JavaScript", "Discord.js", "SQLite", "FFmpeg"], links: [ { label: "GitHub repo", href: "https://github.com/C3ddy/konata-discord-music-bot" }, { label: "Demo video", href: "https://youtu.be/VuJqhkwSLtE" } ], // download: { file: "downloads/konata-source.zip", label: "Download source (.zip)", size: "—" }, log: [ { date: "2025", note: "Public release on GitHub" }, { date: "2025", note: "Sharding + persistence rolled in" } ] }, { id: "snowy-parkour", title: "Snowy Parkour", tagline: "Beat the clock, grab the yellow box.", role: "Solo Developer", engine: "WebGL · browser game", year: "2024", status: "Itch.io", statusColor: "amber", cover: "snowy", accentHue: 195, itch: "https://nyxoril.itch.io/snowy-parkour", description: "A short browser parkour racer hosted on itch.io. A tight single-objective loop — get to the yellow box before the timer runs out. Built to practice level layout and timing tuning; the kind of project where the goal is to ship something small and complete.", highlights: [ "Shipped publicly on itch.io", "Single-objective time-attack loop", "Plays in the browser — no install" ], stats: [ { label: "Platform", value: "Browser" }, { label: "Genre", value: "Racing" }, { label: "Goal", value: "Yellow box" }, { label: "Host", value: "itch.io" } ], tech: ["Game design", "Level layout", "Web build"], links: [ { label: "Play on itch.io", href: "https://nyxoril.itch.io/snowy-parkour" }, { label: "Nyxoril on itch.io", href: "https://nyxoril.itch.io/" } ], // download: { file: "downloads/snowy-parkour.zip", label: "Download build (.zip)", size: "—" }, log: [ { date: "2024", note: "Released on itch.io" } ] }, { id: "threejs-porsche", title: "Three.js Porsche", tagline: "Interactive 3D model with custom shaders and HDR lighting", role: "Solo Developer", engine: "Three.js / WebGL", year: "2025", status: "Open Source", statusColor: "blue", cover: "porsche", accentHue: 12, description: "My first Three.js project — a 3D Porsche viewer with interactive controls, HDR environment lighting and a couple of custom shaders. Built as a learning exercise on the way to a fully 3D portfolio. Source is public and the lessons fed directly into the React/Three.js portfolio I'm building next.", highlights: [ "Custom shaders for paint & glass", "HDR environment lighting + image-based reflections", "Orbit controls + interactive scene tuning", "Public repo for anyone learning Three.js" ], stats: [ { label: "Renderer", value: "WebGL" }, { label: "Lighting", value: "HDR / IBL" }, { label: "Shaders", value: "Custom" }, { label: "Goal", value: "Learning" } ], tech: ["Three.js", "JavaScript", "GLSL", "WebGL"], links: [ { label: "GitHub repo", href: "https://github.com/C3ddy/first-threejs-project" } ], // download: { file: "downloads/threejs-porsche.zip", label: "Download source (.zip)", size: "—" }, log: [ { date: "2025", note: "First public Three.js project" } ] }, { id: "this-portfolio", title: "This Portfolio", tagline: "Built with me & Claude. You're looking at it right now.", role: "Designer & Developer", engine: "React · JSX · CSS · animated SVG", year: "2026", status: "Live", statusColor: "green", cover: "portfolio", accentHue: 285, note: "Yes, this is the website you're currently on. Click around — every cover art is hand-written SVG, the modal you're reading is React, and the scope crept exactly as much as you'd expect.", description: "A from-scratch portfolio built over a couple of evenings with Claude as a pair-programmer. No site-builder, no template — just React, hand-written CSS and a pile of animated SVG covers I drew one project at a time. Every interaction was designed to feel like a small game UI: status pills, tabs, mono captions, mouse-tracked spotlights.", highlights: [ "All project covers are hand-coded animated SVG — no images", "Mouse-tracked spotlight + parallax glow on cards", "Per-project accent hues drive every glow & gradient via CSS custom properties", "Built with Claude as a back-and-forth pair-programmer" ], stats: [ { label: "Stack", value: "React" }, { label: "Site builder", value: "None" }, { label: "Cover art", value: "SVG" }, { label: "Tracking", value: "Zero" } ], tech: ["React", "JSX", "CSS", "SVG", "Babel"], links: [ { label: "Built with Claude", href: "https://claude.ai" } ], log: [ { date: "2026", note: "First public version live" } ] } ]; // ============================================================================= // SKILLS — periodic-table-style tiles. abbr = 2-3 character monogram. // ============================================================================= const SKILLS = [ { group: "Game engines", items: [ { name: "Unreal Engine 5", abbr: "UE" }, { name: "Unity", abbr: "Un" }, { name: "Godot", abbr: "Go" }, { name: "Raylib", abbr: "Ra" } ] }, { group: "Languages", items: [ { name: "C++", abbr: "C++" }, { name: "C#", abbr: "C#" }, { name: "JavaScript", abbr: "Js" }, { name: "Node.js", abbr: "Nd" }, { name: "Python", abbr: "Py" }, { name: "Java", abbr: "Jv" }, { name: "Lua", abbr: "Lu" }, { name: "GLSL", abbr: "Gl" } ] }, { group: "Graphics / 3D", items: [ { name: "OpenGL", abbr: "Og" }, { name: "Three.js", abbr: "3j" }, { name: "bgfx", abbr: "Bg" }, { name: "Sequencer", abbr: "Sq" }, { name: "Shaders", abbr: "Sh" } ] }, { group: "Web & data", items: [ { name: "React", abbr: "Re" }, { name: "Tailwind CSS", abbr: "Tw" }, { name: "HTML / CSS", abbr: "Ht" }, { name: "SQLite3", abbr: "Sl" }, { name: "JSON", abbr: "Js" } ] } ]; const CERTIFICATIONS = [ { year: "2026", issuer: "IBM", name: "Back-End Apps with Node.js & Express" }, { year: "2026", issuer: "IBM", name: "Front-End Apps with React" }, { year: "2026", issuer: "IBM", name: "Getting Started with Git & GitHub" }, { year: "2026", issuer: "IBM", name: "Introduction to HTML, CSS & JavaScript" }, { year: "2025", issuer: "Unity", name: "Certified Associate: Programmer" }, { year: "2022", issuer: "Unity", name: "Certified User: Programmer" } ]; const TIMELINE = [ { year: "2024 — 2025", role: "Game Developer · Capstone Studio (CtrlAltElite)", where: "Algonquin College — Ottawa, ON", note: "Player mechanics, UI and cinematics in Unreal C++ + Blueprints. Public showcases at the Canadian Aviation and Space Museum." }, { year: "2025", role: "Mover Helper", where: "AMJ Campbell Moving — North Bay, ON", note: "Supported moving crews on time-sensitive residential & commercial jobs. Physical work that taught coordination and reliability." }, { year: "2022 — 2025", role: "Crew Trainer", where: "McDonald's — Ottawa, ON", note: "Trained new crew on operational procedures and front-line service. Multi-tasking under pressure, every shift." }, { year: "2022 — 2025", role: "Advanced Diploma · Game Development", where: "Algonquin College — Dean's List · GPA 3.18", note: "Focus: C++, Unreal Engine, Unity, Godot and web development." } ]; window.PORTFOLIO_DATA = { PROJECTS, SKILLS, CERTIFICATIONS, TIMELINE };