Public: anyone can read this; the crew can change it.
Website improvement and enhancement #23
Check · Review · Land · Live — Its check is red.
claude/website-improvements-011CUu8oLgg98ynXG3RDfAzG → main 1 commit
A guest
This pull comes from a guest: its preview runs without the app's variables or a forge token until a person who can write here approves it.
This pull waits for a person who can write here to review it; it never lands on its own.
12 files
changed +59
−59
src/app/globals.css +32 −32
| @@ -4,33 +4,33 @@ | ||
| 4 | 4 | |
| 5 | 5 | @layer base { |
| 6 | 6 | :root { |
| 7 | : 222.2 84% 4.9%; | |
| 8 | : 210 40% 98%; | |
| 9 | ||
| 10 | : 222.2 84% 4.9%; | |
| 11 | : 210 40% 98%; | |
| 12 | ||
| 13 | : 222.2 84% 4.9%; | |
| 14 | : 210 40% 98%; | |
| 15 | ||
| 16 | : 217.2 91.2% 59.8%; | |
| 17 | : 222.2 47.4% 11.2%; | |
| 18 | ||
| 19 | : 217.2 32.6% 17.5%; | |
| 20 | : 210 40% 98%; | |
| 21 | ||
| 22 | : 217.2 32.6% 17.5%; | |
| 23 | : 215 20.2% 65.1%; | |
| 24 | ||
| 25 | : 217.2 32.6% 17.5%; | |
| 26 | : 210 40% 98%; | |
| 27 | ||
| 7 | : 160 84% 4.9%; | |
| 8 | : 150 40% 98%; | |
| 9 | ||
| 10 | : 160 84% 4.9%; | |
| 11 | : 150 40% 98%; | |
| 12 | ||
| 13 | : 160 84% 4.9%; | |
| 14 | : 150 40% 98%; | |
| 15 | ||
| 16 | : 142 91.2% 49.8%; | |
| 17 | : 160 47.4% 11.2%; | |
| 18 | ||
| 19 | : 155 32.6% 17.5%; | |
| 20 | : 150 40% 98%; | |
| 21 | ||
| 22 | : 155 32.6% 17.5%; | |
| 23 | : 150 20.2% 65.1%; | |
| 24 | ||
| 25 | : 155 32.6% 17.5%; | |
| 26 | : 150 40% 98%; | |
| 27 | ||
| 28 | 28 | : 0 62.8% 30.6%; |
| 29 | : 210 40% 98%; | |
| 30 | ||
| 31 | : 217.2 32.6% 17.5%; | |
| 32 | : 217.2 32.6% 17.5%; | |
| 33 | : 224.3 76.3% 48%; | |
| 29 | : 150 40% 98%; | |
| 30 | ||
| 31 | : 155 32.6% 17.5%; | |
| 32 | : 155 32.6% 17.5%; | |
| 33 | : 142 76.3% 48%; | |
| 34 | 34 | } |
| 35 | 35 | } |
| 36 | 36 | |
| @@ -45,16 +45,16 @@ | ||
| 45 | 45 | |
| 46 | 46 | /* Custom styles */ |
| 47 | 47 | body { |
| 48 | background: linear-gradient(to bottom, #000000, #001f3f); | |
| 48 | background: linear-gradient(to bottom, #000000, #003f20); | |
| 49 | 49 | min-height: 100vh; |
| 50 | 50 | } |
| 51 | 51 | |
| 52 | 52 | .text-glow { |
| 53 | text-shadow: 0 0 10px rgba(59, 130, 246, 0.5); | |
| 53 | text-shadow: 0 0 10px rgba(34, 197, 94, 0.5); | |
| 54 | 54 | } |
| 55 | 55 | |
| 56 | 56 | .neon-border { |
| 57 | box-shadow: 0 0 10px rgba(59, 130, 246, 0.5), inset 0 0 10px rgba(59, 130, 246, 0.5); | |
| 57 | box-shadow: 0 0 10px rgba(34, 197, 94, 0.5), inset 0 0 10px rgba(34, 197, 94, 0.5); | |
| 58 | 58 | } |
| 59 | 59 | |
| 60 | 60 | @keyframes pulse { |
| @@ -88,13 +88,13 @@ body { | ||
| 88 | 88 | |
| 89 | 89 | @keyframes glow { |
| 90 | 90 | 0% { |
| 91 | box-shadow: 0 0 5px rgba(59, 130, 246, 0.5); | |
| 91 | box-shadow: 0 0 5px rgba(34, 197, 94, 0.5); | |
| 92 | 92 | } |
| 93 | 93 | 50% { |
| 94 | box-shadow: 0 0 20px rgba(59, 130, 246, 0.8); | |
| 94 | box-shadow: 0 0 20px rgba(34, 197, 94, 0.8); | |
| 95 | 95 | } |
| 96 | 96 | 100% { |
| 97 | box-shadow: 0 0 5px rgba(59, 130, 246, 0.5); | |
| 97 | box-shadow: 0 0 5px rgba(34, 197, 94, 0.5); | |
| 98 | 98 | } |
| 99 | 99 | } |
| 100 | 100 |
src/app/playground/page.tsx +2 −2
| @@ -32,9 +32,9 @@ export default function PlaygroundPage() { | ||
| 32 | 32 | <div className="max-w-4xl mx-auto grid grid-cols-1 md:grid-cols-3 gap-4"> |
| 33 | 33 | {tools.map((tool) => ( |
| 34 | 34 | <Link key={tool.href} href={tool.href}> |
| 35 | <Card className="bg-black/50 backdrop-blur-md border-blue-500 p-6 hover:border-blue-400 transition-all duration-200 cursor-pointer h-full"> | |
| 35 | <Card className="bg-black/50 backdrop-blur-md border-green-500 p-6 hover:border-green-400 transition-all duration-200 cursor-pointer h-full"> | |
| 36 | 36 | <div className="flex flex-col items-center text-center space-y-3"> |
| 37 | <tool.icon className="w-12 h-12 text-blue-400" /> | |
| 37 | <tool.icon className="w-12 h-12 text-green-400" /> | |
| 38 | 38 | <h2 className="text-xl font-semibold text-white">{tool.title}</h2> |
| 39 | 39 | <p className="text-sm text-gray-300">{tool.description}</p> |
| 40 | 40 | </div> |
src/app/projects/page.tsx +1 −1
| @@ -42,7 +42,7 @@ export default async function Page() { | ||
| 42 | 42 | <p className="text-sm text-gray-400 group-hover:text-gray-300 transition-colors duration-300 mb-4"> |
| 43 | 43 | {description} |
| 44 | 44 | </p> |
| 45 | <div className="w-12 h-1 bg-blue-500 group-hover:w-full transition-all duration-500 ease-in-out"></div> | |
| 45 | <div className="w-12 h-1 bg-green-500 group-hover:w-full transition-all duration-500 ease-in-out"></div> | |
| 46 | 46 | </Link> |
| 47 | 47 | </Card> |
| 48 | 48 | ))} |
src/components/GitHubProject.tsx +2 −2
| @@ -35,7 +35,7 @@ export const GitHubProject: React.FC<GitHubProjectProps> = ({ | ||
| 35 | 35 | }) => { |
| 36 | 36 | return ( |
| 37 | 37 | <section className="py-8 px-4 max-w-4xl mx-auto"> |
| 38 | <Card className="bg-black/30 backdrop-blur-lg border-blue-500/50 overflow-hidden shadow-lg"> | |
| 38 | <Card className="bg-black/30 backdrop-blur-lg border-green-500/50 overflow-hidden shadow-lg"> | |
| 39 | 39 | <CardContent className="p-6 shadow-inner"> |
| 40 | 40 | <div className="mb-6"> |
| 41 | 41 | <h2 className="text-2xl font-semibold text-gray-100 flex items-center"> |
| @@ -64,7 +64,7 @@ export const GitHubProject: React.FC<GitHubProjectProps> = ({ | ||
| 64 | 64 | href={repoUrl} |
| 65 | 65 | target="_blank" |
| 66 | 66 | rel="noopener noreferrer" |
| 67 | className="text-blue-400 hover:text-blue-300 flex items-center justify-center" | |
| 67 | className="text-green-400 hover:text-green-300 flex items-center justify-center" | |
| 68 | 68 | > |
| 69 | 69 | <FaGithub className="mr-2" /> View on GitHub |
| 70 | 70 | </Link> |
src/components/HeroSection.tsx +3 −3
| @@ -26,7 +26,7 @@ export const HeroSection: React.FC = () => { | ||
| 26 | 26 | initial={{ opacity: 0 }} |
| 27 | 27 | animate={{ opacity: 1 }} |
| 28 | 28 | transition={{ duration: 0.5, delay: 0.5 }} |
| 29 | className="text-xl md:text-2xl mb-8 text-blue-200" | |
| 29 | className="text-xl md:text-2xl mb-8 text-green-200" | |
| 30 | 30 | > |
| 31 | 31 | <TypeAnimation |
| 32 | 32 | sequence={[ |
| @@ -48,10 +48,10 @@ export const HeroSection: React.FC = () => { | ||
| 48 | 48 | transition={{ duration: 0.5, delay: 0.8 }} |
| 49 | 49 | className="space-x-4" |
| 50 | 50 | > |
| 51 | <Button asChild className="bg-blue-600 hover:bg-blue-700 text-white neon-border"> | |
| 51 | <Button asChild className="bg-green-600 hover:bg-green-700 text-white neon-border"> | |
| 52 | 52 | <Link href="#booking">Book a Call ($500)</Link> |
| 53 | 53 | </Button> |
| 54 | <Button variant="outline" asChild className="border-blue-500 text-blue-500 hover:bg-blue-900 neon-border"> | |
| 54 | <Button variant="outline" asChild className="border-green-500 text-green-500 hover:bg-green-900 neon-border"> | |
| 55 | 55 | <Link href="/projects">Explore My Work</Link> |
| 56 | 56 | </Button> |
| 57 | 57 | </motion.div> |
src/components/InteractiveBackground.tsx +1 −1
| @@ -40,7 +40,7 @@ export const InteractiveBackground: React.FC = () => { | ||
| 40 | 40 | particles.forEach((particle) => { |
| 41 | 41 | ctx.beginPath() |
| 42 | 42 | ctx.arc(particle.x, particle.y, particle.size, 0, Math.PI * 2) |
| 43 | ctx.fillStyle = `rgba(59, 130, 246, ${0.3 + particle.speed * 0.4})` | |
| 43 | ctx.fillStyle = `rgba(34, 197, 94, ${0.3 + particle.speed * 0.4})` | |
| 44 | 44 | ctx.fill() |
| 45 | 45 | |
| 46 | 46 | particle.x += Math.cos(particle.angle) * particle.speed |
src/components/Me.tsx +6 −6
| @@ -39,7 +39,7 @@ export const Me: React.FC = () => { | ||
| 39 | 39 | animate={{ opacity: 1, y: 0 }} |
| 40 | 40 | transition={{ duration: 0.5 }} |
| 41 | 41 | > |
| 42 | <Card className="bg-black/50 backdrop-blur-md border-blue-500 hover:border-blue-300 transition-colors max-w-2xl mx-4"> | |
| 42 | <Card className="bg-black/50 backdrop-blur-md border-green-500 hover:border-green-300 transition-colors max-w-2xl mx-4"> | |
| 43 | 43 | <CardHeader className="flex flex-col sm:flex-row items-center sm:space-x-4 space-y-4 sm:space-y-0"> |
| 44 | 44 | <div className="w-24 h-24 rounded-full overflow-hidden"> |
| 45 | 45 | <Image |
| @@ -50,7 +50,7 @@ export const Me: React.FC = () => { | ||
| 50 | 50 | className="object-cover w-full h-full" |
| 51 | 51 | /> |
| 52 | 52 | </div> |
| 53 | <CardTitle className="text-blue-300 text-center sm:text-left"> | |
| 53 | <CardTitle className="text-green-300 text-center sm:text-left"> | |
| 54 | 54 | {person.name} |
| 55 | 55 | </CardTitle> |
| 56 | 56 | </CardHeader> |
| @@ -63,7 +63,7 @@ export const Me: React.FC = () => { | ||
| 63 | 63 | href={person.github} |
| 64 | 64 | target="_blank" |
| 65 | 65 | rel="noopener noreferrer" |
| 66 | className="text-blue-300 hover:text-blue-100 flex items-center" | |
| 66 | className="text-green-300 hover:text-green-100 flex items-center" | |
| 67 | 67 | > |
| 68 | 68 | <FaGithub className="mr-2" /> GitHub |
| 69 | 69 | </Link> |
| @@ -71,7 +71,7 @@ export const Me: React.FC = () => { | ||
| 71 | 71 | href={person.linkedin} |
| 72 | 72 | target="_blank" |
| 73 | 73 | rel="noopener noreferrer" |
| 74 | className="text-blue-300 hover:text-blue-100 flex items-center" | |
| 74 | className="text-green-300 hover:text-green-100 flex items-center" | |
| 75 | 75 | > |
| 76 | 76 | <FaLinkedin className="mr-2" /> LinkedIn |
| 77 | 77 | </Link> |
| @@ -79,7 +79,7 @@ export const Me: React.FC = () => { | ||
| 79 | 79 | href={person.x} |
| 80 | 80 | target="_blank" |
| 81 | 81 | rel="noopener noreferrer" |
| 82 | className="text-blue-300 hover:text-blue-100 flex items-center" | |
| 82 | className="text-green-300 hover:text-green-100 flex items-center" | |
| 83 | 83 | > |
| 84 | 84 | <FaXTwitter className="mr-2" /> Twitter |
| 85 | 85 | </Link> |
| @@ -87,7 +87,7 @@ export const Me: React.FC = () => { | ||
| 87 | 87 | href="/resume-trevor-dobbertin.pdf" |
| 88 | 88 | target="_blank" |
| 89 | 89 | rel="noopener noreferrer" |
| 90 | className="text-blue-300 hover:text-blue-100 flex items-center" | |
| 90 | className="text-green-300 hover:text-green-100 flex items-center" | |
| 91 | 91 | > |
| 92 | 92 | <FaFilePdf className="mr-2" /> Resume |
| 93 | 93 | </Link> |
src/components/ProjectsList.tsx +3 −3
| @@ -25,9 +25,9 @@ export const ProjectsList: React.FC = () => { | ||
| 25 | 25 | animate={{ opacity: 1, y: 0 }} |
| 26 | 26 | transition={{ duration: 0.5, delay: index * 0.1 }} |
| 27 | 27 | > |
| 28 | <Card className="bg-black/50 backdrop-blur-md border-blue-500 hover:border-blue-300 transition-colors h-full flex flex-col overflow-hidden"> | |
| 28 | <Card className="bg-black/50 backdrop-blur-md border-green-500 hover:border-green-300 transition-colors h-full flex flex-col overflow-hidden"> | |
| 29 | 29 | <CardHeader> |
| 30 | <CardTitle className="text-blue-300">{project.title}</CardTitle> | |
| 30 | <CardTitle className="text-green-300">{project.title}</CardTitle> | |
| 31 | 31 | </CardHeader> |
| 32 | 32 | <CardContent className="flex-grow flex flex-col"> |
| 33 | 33 | <div className="relative h-48 mb-4"> |
| @@ -35,7 +35,7 @@ export const ProjectsList: React.FC = () => { | ||
| 35 | 35 | </div> |
| 36 | 36 | <p className="text-white mb-4">{project.description}</p> |
| 37 | 37 | <div className="flex justify-between mt-auto"> |
| 38 | <Link href={project.github} target="_blank" rel="noopener noreferrer" className="flex items-center text-blue-400 hover:text-blue-300 transition-colors"> | |
| 38 | <Link href={project.github} target="_blank" rel="noopener noreferrer" className="flex items-center text-green-400 hover:text-green-300 transition-colors"> | |
| 39 | 39 | <Github className="mr-2 h-4 w-4" /> |
| 40 | 40 | GitHub |
| 41 | 41 | </Link> |
src/components/ServicesOverview.tsx +3 −3
| @@ -15,13 +15,13 @@ export const ServicesOverview: React.FC = () => { | ||
| 15 | 15 | transition={{ duration: 0.5 }} |
| 16 | 16 | > |
| 17 | 17 | <h2 className="text-3xl font-bold mb-8 text-center text-white">Start Here</h2> |
| 18 | <Card className="bg-black/50 backdrop-blur-md border-blue-500 max-w-3xl mx-auto"> | |
| 18 | <Card className="bg-black/50 backdrop-blur-md border-green-500 max-w-3xl mx-auto"> | |
| 19 | 19 | <CardHeader> |
| 20 | <CardTitle className="text-blue-300">Got an idea? A problem you can't stop thinking about?</CardTitle> | |
| 20 | <CardTitle className="text-green-300">Got an idea? A problem you can't stop thinking about?</CardTitle> | |
| 21 | 21 | </CardHeader> |
| 22 | 22 | <CardContent> |
| 23 | 23 | <p className="text-gray-300 mb-4">Book a consultation. We'll talk through it, figure out if it's something we should build together.</p> |
| 24 | <p className="text-blue-300 font-semibold mb-4">$500. 30 minutes. No nonsense.</p> | |
| 24 | <p className="text-green-300 font-semibold mb-4">$500. 30 minutes. No nonsense.</p> | |
| 25 | 25 | <div className="relative"> |
| 26 | 26 | <Cal |
| 27 | 27 | calLink="trevato/consultation" |
src/components/SkillsSection.tsx +3 −3
| @@ -23,12 +23,12 @@ export const SkillsSection: React.FC = () => { | ||
| 23 | 23 | initial={{ opacity: 0, x: -20 }} |
| 24 | 24 | animate={{ opacity: 1, x: 0 }} |
| 25 | 25 | transition={{ duration: 0.5, delay: index * 0.1 }} |
| 26 | className="bg-black/50 backdrop-blur-md border border-blue-500 rounded-lg p-4" | |
| 26 | className="bg-black/50 backdrop-blur-md border border-green-500 rounded-lg p-4" | |
| 27 | 27 | > |
| 28 | <h3 className="text-xl font-semibold text-blue-300 mb-2">{skill.name}</h3> | |
| 28 | <h3 className="text-xl font-semibold text-green-300 mb-2">{skill.name}</h3> | |
| 29 | 29 | <div className="w-full bg-gray-700 rounded-full h-2.5"> |
| 30 | 30 | <motion.div |
| 31 | className="bg-blue-600 h-2.5 rounded-full" | |
| 31 | className="bg-green-600 h-2.5 rounded-full" | |
| 32 | 32 | initial={{ width: 0 }} |
| 33 | 33 | animate={{ width: `${skill.level}%` }} |
| 34 | 34 | transition={{ duration: 1, delay: 0.5 + index * 0.1 }} |
src/components/SpaceBackground.tsx +1 −1
| @@ -125,7 +125,7 @@ export const SpaceBackground: React.FC<{ children: React.ReactNode }> = ({ child | ||
| 125 | 125 | }, []) |
| 126 | 126 | |
| 127 | 127 | return ( |
| 128 | <div className="relative min-h-screen overflow-hidden bg-gradient-to-b from-black to-blue-900"> | |
| 128 | <div className="relative min-h-screen overflow-hidden bg-gradient-to-b from-black to-green-900"> | |
| 129 | 129 | <canvas |
| 130 | 130 | ref={canvasRef} |
| 131 | 131 | className="absolute inset-0 w-full h-full" |