Reubencf Claude Sonnet 4.6 commited on
Commit
263897a
·
1 Parent(s): ebb6921

update projects: add screenshots for Konkani/PowerPoint AI, replace ISO Language with Reo, update live links

Browse files
.gitattributes CHANGED
@@ -1,2 +1,4 @@
1
  *.png filter=lfs diff=lfs merge=lfs -text
2
  *.mp4 filter=lfs diff=lfs merge=lfs -text
 
 
 
1
  *.png filter=lfs diff=lfs merge=lfs -text
2
  *.mp4 filter=lfs diff=lfs merge=lfs -text
3
+ public/konkani.png -filter -diff -merge -text
4
+ public/powerpoint.png -filter -diff -merge -text
components/portfolio/LiveProjectButton.tsx CHANGED
@@ -2,9 +2,10 @@ import React from 'react';
2
 
3
  interface LiveProjectButtonProps {
4
  href: string;
 
5
  }
6
 
7
- export function LiveProjectButton({ href }: LiveProjectButtonProps) {
8
  return (
9
  <a
10
  href={href}
@@ -12,7 +13,7 @@ export function LiveProjectButton({ href }: LiveProjectButtonProps) {
12
  rel="noopener noreferrer"
13
  className="inline-block w-full sm:w-auto text-center rounded-full border-2 border-[#D7E2EA] text-[#D7E2EA] font-medium uppercase tracking-widest px-8 py-3 sm:px-10 sm:py-3.5 text-sm sm:text-base hover:bg-[#D7E2EA]/10 transition-colors duration-200"
14
  >
15
- Watch Project
16
  </a>
17
  );
18
  }
 
2
 
3
  interface LiveProjectButtonProps {
4
  href: string;
5
+ label?: string;
6
  }
7
 
8
+ export function LiveProjectButton({ href, label = 'Watch Project' }: LiveProjectButtonProps) {
9
  return (
10
  <a
11
  href={href}
 
13
  rel="noopener noreferrer"
14
  className="inline-block w-full sm:w-auto text-center rounded-full border-2 border-[#D7E2EA] text-[#D7E2EA] font-medium uppercase tracking-widest px-8 py-3 sm:px-10 sm:py-3.5 text-sm sm:text-base hover:bg-[#D7E2EA]/10 transition-colors duration-200"
15
  >
16
+ {label}
17
  </a>
18
  );
19
  }
components/portfolio/sections/ProjectsSection.tsx CHANGED
@@ -1,6 +1,7 @@
1
  'use client';
2
 
3
  import React, { useRef } from 'react';
 
4
  import { motion, useScroll, useTransform } from 'motion/react';
5
  import { LiveProjectButton } from '../LiveProjectButton';
6
  import { FadeIn } from '../FadeIn';
@@ -8,34 +9,41 @@ import { FadeIn } from '../FadeIn';
8
  type Project = {
9
  id: string;
10
  title: string;
11
- videoId: string;
 
 
12
  };
13
 
14
  const projects: Project[] = [
15
  {
16
  id: '01',
17
  title: 'Konkani AI',
18
- videoId: 'dQw4w9WgXcQ',
 
19
  },
20
  {
21
  id: '02',
22
  title: 'Tiny AYA Mobile',
23
  videoId: 'M7lc1UVf-VE',
 
24
  },
25
  {
26
  id: '03',
27
  title: 'PowerPoint AI',
28
- videoId: 'jNQXAC9IVRw',
 
29
  },
30
  {
31
  id: '04',
32
  title: 'Multi Model Dataset',
33
  videoId: 'dQw4w9WgXcQ',
 
34
  },
35
  {
36
  id: '05',
37
- title: 'ISO Language',
38
- videoId: 'M7lc1UVf-VE',
 
39
  },
40
  ];
41
 
@@ -96,15 +104,25 @@ function ProjectCard({
96
  >
97
  <div className="absolute inset-0 bg-[#1A0F08] -z-10"></div>
98
  <div className="w-full flex-1 relative bg-black">
99
- <iframe
100
- src={`https://www.youtube.com/embed/${project.videoId}?rel=0&modestbranding=1`}
101
- className="w-full h-full absolute inset-0"
102
- style={{ border: 0 }}
103
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
104
- allowFullScreen
105
- loading="lazy"
106
- title={project.title}
107
- />
 
 
 
 
 
 
 
 
 
 
108
  </div>
109
 
110
  <div className="p-6 sm:p-8 md:p-10 bg-[#1A0F08] border-t border-[rgba(215,226,234,0.1)] flex flex-col sm:flex-row justify-between items-start sm:items-center gap-6">
@@ -113,7 +131,7 @@ function ProjectCard({
113
  <h3 className="text-[#D7E2EA] font-medium text-lg sm:text-xl md:text-2xl uppercase">{project.title}</h3>
114
  </div>
115
  <div className="shrink-0">
116
- <LiveProjectButton href={`https://www.youtube.com/watch?v=${project.videoId}`} />
117
  </div>
118
  </div>
119
  </motion.div>
 
1
  'use client';
2
 
3
  import React, { useRef } from 'react';
4
+ import Image from 'next/image';
5
  import { motion, useScroll, useTransform } from 'motion/react';
6
  import { LiveProjectButton } from '../LiveProjectButton';
7
  import { FadeIn } from '../FadeIn';
 
9
  type Project = {
10
  id: string;
11
  title: string;
12
+ image?: string;
13
+ videoId?: string;
14
+ liveUrl: string;
15
  };
16
 
17
  const projects: Project[] = [
18
  {
19
  id: '01',
20
  title: 'Konkani AI',
21
+ image: '/konkani.png',
22
+ liveUrl: 'https://reuben-fernandes.xyz',
23
  },
24
  {
25
  id: '02',
26
  title: 'Tiny AYA Mobile',
27
  videoId: 'M7lc1UVf-VE',
28
+ liveUrl: 'https://www.youtube.com/watch?v=M7lc1UVf-VE',
29
  },
30
  {
31
  id: '03',
32
  title: 'PowerPoint AI',
33
+ image: '/powerpoint.png',
34
+ liveUrl: 'https://huggingface.co/spaces/Reubencf/Powerpoint_AI',
35
  },
36
  {
37
  id: '04',
38
  title: 'Multi Model Dataset',
39
  videoId: 'dQw4w9WgXcQ',
40
+ liveUrl: 'https://huggingface.co/spaces/Reubencf/dataset-explorer',
41
  },
42
  {
43
  id: '05',
44
+ title: 'Reo',
45
+ videoId: 'zo_UkXzAfLk',
46
+ liveUrl: 'https://reo-fernandes.xyz/',
47
  },
48
  ];
49
 
 
104
  >
105
  <div className="absolute inset-0 bg-[#1A0F08] -z-10"></div>
106
  <div className="w-full flex-1 relative bg-black">
107
+ {project.image ? (
108
+ <Image
109
+ src={project.image}
110
+ alt={project.title}
111
+ fill
112
+ className="object-cover object-top"
113
+ sizes="(max-width: 768px) 100vw, 1200px"
114
+ />
115
+ ) : (
116
+ <iframe
117
+ src={`https://www.youtube.com/embed/${project.videoId}?rel=0&modestbranding=1`}
118
+ className="w-full h-full absolute inset-0"
119
+ style={{ border: 0 }}
120
+ allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
121
+ allowFullScreen
122
+ loading="lazy"
123
+ title={project.title}
124
+ />
125
+ )}
126
  </div>
127
 
128
  <div className="p-6 sm:p-8 md:p-10 bg-[#1A0F08] border-t border-[rgba(215,226,234,0.1)] flex flex-col sm:flex-row justify-between items-start sm:items-center gap-6">
 
131
  <h3 className="text-[#D7E2EA] font-medium text-lg sm:text-xl md:text-2xl uppercase">{project.title}</h3>
132
  </div>
133
  <div className="shrink-0">
134
+ <LiveProjectButton href={project.liveUrl} label={project.image ? 'View Project' : 'Watch Project'} />
135
  </div>
136
  </div>
137
  </motion.div>
public/konkani.png ADDED
public/powerpoint.png ADDED