Skip to content

Commit 5b5addd

Browse files
piperodcursoragent
andcommitted
Add Next.js site with lemniscate background, CV download, and GitHub Pages deploy
Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent ad3eedb commit 5b5addd

84 files changed

Lines changed: 12958 additions & 27 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/deploy.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [master]
6+
7+
permissions:
8+
contents: read
9+
pages: write
10+
id-token: write
11+
12+
concurrency:
13+
group: "pages"
14+
cancel-in-progress: false
15+
16+
jobs:
17+
build:
18+
runs-on: ubuntu-latest
19+
steps:
20+
- uses: actions/checkout@v4
21+
22+
- name: Setup Node
23+
uses: actions/setup-node@v4
24+
with:
25+
node-version: "18"
26+
cache: "npm"
27+
28+
- name: Install dependencies
29+
run: npm ci
30+
31+
- name: Build
32+
run: npm run build
33+
34+
- name: Setup Pages
35+
uses: actions/configure-pages@v4
36+
37+
- name: Upload artifact
38+
uses: actions/upload-pages-artifact@v3
39+
with:
40+
path: ./out
41+
42+
deploy:
43+
environment:
44+
name: github-pages
45+
url: ${{ steps.deployment.outputs.page_url }}
46+
runs-on: ubuntu-latest
47+
needs: build
48+
steps:
49+
- name: Deploy to GitHub Pages
50+
id: deployment
51+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,29 @@
1-
_site
1+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2+
23
.DS_Store
3-
*.sublime-project
4-
*.sublime-workspace
5-
codekit-config.json
6-
node_modules
7-
Gemfile.lock
8-
.sass-cache
4+
5+
# dependencies
6+
/node_modules
7+
8+
# next.js
9+
/.next/
10+
/out/
11+
12+
# production
13+
/build
14+
15+
# debug
16+
npm-debug.log*
17+
yarn-debug.log*
18+
yarn-error.log*
19+
.pnpm-debug.log*
20+
21+
# env files
22+
.env*
23+
24+
# vercel
25+
.vercel
26+
27+
# typescript
28+
*.tsbuildinfo
29+
next-env.d.ts

.nvmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
18

app/globals.css

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
@tailwind base;
2+
@tailwind components;
3+
@tailwind utilities;
4+
5+
body {
6+
font-family: Arial, Helvetica, sans-serif;
7+
}
8+
9+
@layer utilities {
10+
.text-balance {
11+
text-wrap: balance;
12+
}
13+
}
14+
15+
@layer base {
16+
:root {
17+
--background: 0 0% 100%;
18+
--foreground: 0 0% 3.9%;
19+
--card: 0 0% 100%;
20+
--card-foreground: 0 0% 3.9%;
21+
--popover: 0 0% 100%;
22+
--popover-foreground: 0 0% 3.9%;
23+
--primary: 220 14% 96%;
24+
--primary-foreground: 0 0% 9%;
25+
--secondary: 0 0% 96.1%;
26+
--secondary-foreground: 0 0% 9%;
27+
--muted: 0 0% 96.1%;
28+
--muted-foreground: 0 0% 45.1%;
29+
--accent: 220 14% 96%;
30+
--accent-foreground: 0 0% 9%;
31+
--destructive: 0 84.2% 60.2%;
32+
--destructive-foreground: 0 0% 98%;
33+
--border: 0 0% 89.8%;
34+
--input: 0 0% 89.8%;
35+
--ring: 220 14% 96%;
36+
--chart-1: 12 76% 61%;
37+
--chart-2: 173 58% 39%;
38+
--chart-3: 197 37% 24%;
39+
--chart-4: 43 74% 66%;
40+
--chart-5: 27 87% 67%;
41+
--radius: 0.5rem;
42+
43+
/* Lemniscate background (matches gradient-bg: #667eea, #764ba2) */
44+
--lemniscate-blue: 252 76% 66%;
45+
--lemniscate-dark: 262 37% 35%;
46+
--lemniscate-light-blue: 252 60% 78%;
47+
--lemniscate-dot: 262 37% 46%;
48+
49+
--sidebar-background: 0 0% 98%;
50+
--sidebar-foreground: 240 5.3% 26.1%;
51+
--sidebar-primary: 240 5.9% 10%;
52+
--sidebar-primary-foreground: 0 0% 98%;
53+
--sidebar-accent: 240 4.8% 95.9%;
54+
--sidebar-accent-foreground: 240 5.9% 10%;
55+
--sidebar-border: 220 13% 91%;
56+
--sidebar-ring: 217.2 91.2% 59.8%;
57+
}
58+
.dark {
59+
--background: 0 0% 3.9%;
60+
--foreground: 0 0% 98%;
61+
--card: 0 0% 3.9%;
62+
--card-foreground: 0 0% 98%;
63+
--popover: 0 0% 3.9%;
64+
--popover-foreground: 0 0% 98%;
65+
--primary: 0 0% 98%;
66+
--primary-foreground: 0 0% 9%;
67+
--secondary: 0 0% 14.9%;
68+
--secondary-foreground: 0 0% 98%;
69+
--muted: 0 0% 14.9%;
70+
--muted-foreground: 0 0% 63.9%;
71+
--accent: 0 0% 14.9%;
72+
--accent-foreground: 0 0% 98%;
73+
--destructive: 0 62.8% 30.6%;
74+
--destructive-foreground: 0 0% 98%;
75+
--border: 0 0% 14.9%;
76+
--input: 0 0% 14.9%;
77+
--ring: 0 0% 83.1%;
78+
79+
/* Lemniscate background (dark mode) */
80+
--lemniscate-blue: 252 76% 55%;
81+
--lemniscate-dark: 262 30% 45%;
82+
--lemniscate-light-blue: 252 60% 65%;
83+
--lemniscate-dot: 262 37% 50%;
84+
85+
--chart-1: 220 70% 50%;
86+
--chart-2: 160 60% 45%;
87+
--chart-3: 30 80% 55%;
88+
--chart-4: 280 65% 60%;
89+
--chart-5: 340 75% 55%;
90+
--sidebar-background: 240 5.9% 10%;
91+
--sidebar-foreground: 240 4.8% 95.9%;
92+
--sidebar-primary: 224.3 76.3% 48%;
93+
--sidebar-primary-foreground: 0 0% 100%;
94+
--sidebar-accent: 240 3.7% 15.9%;
95+
--sidebar-accent-foreground: 240 4.8% 95.9%;
96+
--sidebar-border: 240 3.7% 15.9%;
97+
--sidebar-ring: 217.2 91.2% 59.8%;
98+
}
99+
}
100+
101+
@layer base {
102+
* {
103+
@apply border-border;
104+
}
105+
body {
106+
@apply bg-background text-foreground;
107+
}
108+
}
109+
110+
/* Custom gradient backgrounds */
111+
.gradient-bg {
112+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
113+
}
114+
115+
.gradient-bg-light {
116+
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
117+
}
118+
119+
.gradient-bg-blue {
120+
background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
121+
}
122+
123+
.gradient-bg-purple {
124+
background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%);
125+
}
126+
127+
.gradient-bg-orange {
128+
background: linear-gradient(135deg, #ffecd2 0%, #fcb69f 100%);
129+
}
130+
131+
/* Animated gradient */
132+
.animated-gradient {
133+
background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
134+
background-size: 400% 400%;
135+
animation: gradient 15s ease infinite;
136+
}
137+
138+
@keyframes gradient {
139+
0% {
140+
background-position: 0% 50%;
141+
}
142+
50% {
143+
background-position: 100% 50%;
144+
}
145+
100% {
146+
background-position: 0% 50%;
147+
}
148+
}
149+
150+
/* Card hover effects */
151+
.card-hover {
152+
transition: all 0.3s ease;
153+
}
154+
155+
.card-hover:hover {
156+
transform: translateY(-5px);
157+
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
158+
}
159+
160+
/* Research figure styling */
161+
.research-figure {
162+
border-radius: 12px;
163+
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
164+
transition: all 0.3s ease;
165+
}
166+
167+
.research-figure:hover {
168+
transform: scale(1.02);
169+
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
170+
}
171+
172+
/* Colorful badges */
173+
.badge-gradient {
174+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
175+
color: white;
176+
}
177+
178+
.badge-gradient-blue {
179+
background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
180+
color: white;
181+
}
182+
183+
.badge-gradient-purple {
184+
background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%);
185+
color: #333;
186+
}
187+
188+
.badge-gradient-orange {
189+
background: linear-gradient(135deg, #ffecd2 0%, #fcb69f 100%);
190+
color: #333;
191+
}

app/layout.tsx

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import type { Metadata } from 'next'
2+
import './globals.css'
3+
import LemniscateBackground from '@/components/LemniscateBackground'
4+
5+
export const metadata: Metadata = {
6+
title: 'Ivan Felipe Rodriguez, PhD - Advanced ML/AI Research Manager | Agentic AI & Retrieval Systems',
7+
description: 'Advanced ML/AI Research Manager at Accenture. AI research scientist specializing in agentic AI, RAG, LLM agent frameworks, and long-context reasoning. PhD Cognitive Science (Brown). First-author NeurIPS publications.',
8+
generator: 'Next.js',
9+
}
10+
11+
export default function RootLayout({
12+
children,
13+
}: Readonly<{
14+
children: React.ReactNode
15+
}>) {
16+
return (
17+
<html lang="en" className="scroll-smooth">
18+
<body className="min-h-screen bg-background font-sans antialiased">
19+
<LemniscateBackground />
20+
<div className="relative z-10">
21+
{children}
22+
</div>
23+
</body>
24+
</html>
25+
)
26+
}

0 commit comments

Comments
 (0)