diff --git a/app/layout.tsx b/app/layout.tsx
index b9ea46ea..7a8f7e61 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -4,9 +4,9 @@ import './globals.css'
import 'katex/dist/katex.min.css';
import { cn } from '@/lib/utils'
import { ThemeProvider } from '@/components/theme-provider'
-import Header from '@/components/header'
-import Footer from '@/components/footer'
-import { Sidebar } from '@/components/sidebar'
+// import Header from '@/components/header'
+// import Footer from '@/components/footer'
+// import { Sidebar } from '@/components/sidebar'
import { Analytics } from "@vercel/analytics/next"
import { SpeedInsights } from "@vercel/speed-insights/next"
import { Toaster } from '@/components/ui/sonner'
@@ -109,11 +109,11 @@ export default function RootLayout({
>
-
+ {/* */}
{children}
-
-
+ {/* */}
+ {/* */}
diff --git a/app/page.tsx b/app/page.tsx
index e098417e..a8e005a9 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -1,18 +1,11 @@
-import { Chat } from '@/components/chat'
-import { nanoid } from '@/lib/utils'
-import { AI } from './actions'
+import { JSpaceUI } from '@/components/j-space-ui'
export const maxDuration = 60
-import { MapDataProvider } from '@/components/map/map-data-context'
-
export default function Page() {
- const id = nanoid()
return (
-
-
-
-
-
+
+
+
)
}
diff --git a/bun.lock b/bun.lock
index f101e5d7..19c740ad 100644
--- a/bun.lock
+++ b/bun.lock
@@ -1,9 +1,12 @@
{
"lockfileVersion": 1,
+ "configVersion": 0,
"workspaces": {
"": {
"name": "QCX",
"dependencies": {
+ "98-components": "^0.1.1",
+ "98.css": "^0.1.21",
"@ai-sdk/amazon-bedrock": "^1.1.6",
"@ai-sdk/anthropic": "^1.2.12",
"@ai-sdk/google": "^1.2.22",
@@ -107,6 +110,10 @@
},
},
"packages": {
+ "98-components": ["98-components@0.1.1", "", { "dependencies": { "98.css": "^0.1.20" } }, "sha512-2HLoFk8P6gldO5iO8ae5l/78+wynN8LaQQENRxx9BPCOjq1ObCEfvLACOWMg5i+pHwSK3g4g4Jy4ECpDX0B/gA=="],
+
+ "98.css": ["98.css@0.1.21", "", {}, "sha512-ddk5qtUWyapM0Bzd5jwGExoE5fdSEGrP+F5VbYjyZLf2c9UVmn6w2NPTvCsoD4BWdGsjdLjlkQGhWwWTJcYQJQ=="],
+
"@ai-sdk/amazon-bedrock": ["@ai-sdk/amazon-bedrock@1.1.6", "", { "dependencies": { "@ai-sdk/provider": "1.0.7", "@ai-sdk/provider-utils": "2.1.6", "@aws-sdk/client-bedrock-runtime": "^3.663.0" }, "peerDependencies": { "zod": "^3.0.0" } }, "sha512-h6SJWpku+i8OsSz0A4RT2g2uD+3E0SUgWHsWRIpxmPNgM1DnH6lgSby5sxqAZDY5xJyJtRFW5vB9G3GEBjHy/g=="],
"@ai-sdk/anthropic": ["@ai-sdk/anthropic@1.2.12", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "@ai-sdk/provider-utils": "2.2.8" }, "peerDependencies": { "zod": "^3.0.0" } }, "sha512-YSzjlko7JvuiyQFmI9RN1tNZdEiZxc+6xld/0tq/VkJaHpEzGAb1yiNxxvmYVcjvfu/PcvCxAAYXmTYQQ63IHQ=="],
diff --git a/components/j-space-content.ts b/components/j-space-content.ts
new file mode 100644
index 00000000..977a5c0f
--- /dev/null
+++ b/components/j-space-content.ts
@@ -0,0 +1,62 @@
+export const content = {
+ aboutMe: {
+ name: "Jeremy Liu",
+ title: "Computer Engineer Undergrad @ UofT",
+ bio: "I am dedicated to inspiring people and creating positive spaces around the world.",
+ currentActivities: [
+ "Building personal tools & student projects",
+ "Expanding my knowledge in object-oriented programming",
+ "Learning full-stack web dev",
+ "Exploring robotics and AI",
+ ],
+ },
+ skills: {
+ programmingLanguages: "Python, C, JavaScript, TypeScript, MATLAB, SQL",
+ webUI: "React, Next.js, HTML, CSS, Bootstrap, Tailwind, Vite",
+ roboticsSystems: "ROS2, Linux (Ubuntu), Arduino, OpenCV",
+ dataML: "Pytorch, Scikit-learn, Matplotlib, Pandas, NumPy, OpenCV, BeautifulSoup, Selenium",
+ developerTools: "Git, Node.js, AWS, PostgreSQL, Postman, VS Code, Claude, Cursor.ai",
+ },
+ projects: [
+ {
+ title: "Sinatra",
+ description: "A DAW that turns your voice into any instrument of your choice.",
+ image: "sinatra",
+ github: "https://github.com/e-yang6/sinatra",
+ website: "https://sinatra-daw.vercel.app/",
+ },
+ {
+ title: "LockBlock",
+ description: "A smart security system using Arduino and computer vision to block deadbolts when unknown faces are detected.",
+ image: "lockblock",
+ github: "https://github.com/Jeremyliu-621/lockblock",
+ },
+ {
+ title: "UFC Index website",
+ description: "A website that shows scraped stats for UFC Fighters.",
+ image: "ufc-search",
+ github: "https://github.com/Jeremyliu-621/UFC-Elo-Calculator",
+ website: "https://ufc-elo-calculator.vercel.app/",
+ },
+ {
+ title: "Binder",
+ description: "A swipe-based interface for thrifting.",
+ image: "binder_action",
+ github: "https://github.com/Jeremyliu-621/binder",
+ },
+ {
+ title: "stop! don't go on.",
+ description: "Water Sprayer that stops bad habits.",
+ image: "stop_dont_go_on_grey",
+ website: "https://stop-dont-go-on.vercel.app/",
+ github: "https://github.com/Jeremyliu-621/stop-dont-go-on",
+ },
+ {
+ title: "j-space",
+ description: "A space that focuses on my creativity and ideas.",
+ image: "j-gif-space",
+ website: "https://j-space.vercel.app/",
+ github: "https://github.com/Jeremyliu-621/j-space",
+ },
+ ],
+};
diff --git a/components/j-space-ui.tsx b/components/j-space-ui.tsx
new file mode 100644
index 00000000..25426516
--- /dev/null
+++ b/components/j-space-ui.tsx
@@ -0,0 +1,146 @@
+'use client'
+
+import React, { useEffect, useState } from 'react'
+import '98.css'
+import { content } from './j-space-content'
+
+export function JSpaceUI() {
+ const [isLoaded, setIsLoaded] = useState(false)
+
+ useEffect(() => {
+ // Import 98-components only on the client side
+ import('98-components').then(() => {
+ setIsLoaded(true)
+ })
+ }, [])
+
+ if (!isLoaded) return null
+
+ const getImageUrl = (filename: string) => {
+ return `/j-space/assets/${filename}`
+ }
+
+ return (
+
+ {/* @ts-ignore */}
+
+ {/* About Me Window */}
+ {/* @ts-ignore */}
+
+
+
+
})
+
+
{content.aboutMe.name}
+
{content.aboutMe.title}
+
{content.aboutMe.bio}
+
+
Current Activities:
+
+ {content.aboutMe.currentActivities.map((activity, i) => (
+ - {activity}
+ ))}
+
+
+ {/* @ts-ignore */}
+
+
+ {/* Skills Window */}
+ {/* @ts-ignore */}
+
+
+
Programming Languages
+
{content.skills.programmingLanguages}
+
+
Web & UI
+
{content.skills.webUI}
+
+
Developer Tools
+
{content.skills.developerTools}
+
+ {/* @ts-ignore */}
+
+
+ {/* Projects Window */}
+ {/* @ts-ignore */}
+
+
+ {content.projects.map((project, i) => (
+
+
{project.title}
+
{project.description}
+ {project.image && (
+
})
{ (e.target as HTMLImageElement).src = getImageUrl(`${project.image}.gif`) }} />
+ )}
+
+
+ ))}
+
+ {/* @ts-ignore */}
+
+
+ {/* Taskbar */}
+ {/* @ts-ignore */}
+
+
+
+
+
+ )
+}
diff --git a/package.json b/package.json
index 87066925..beaf2bbc 100644
--- a/package.json
+++ b/package.json
@@ -16,6 +16,8 @@
"test:e2e:debug": "playwright test --debug"
},
"dependencies": {
+ "98-components": "^0.1.1",
+ "98.css": "^0.1.21",
"@ai-sdk/amazon-bedrock": "^1.1.6",
"@ai-sdk/anthropic": "^1.2.12",
"@ai-sdk/google": "^1.2.22",
diff --git a/public/j-space/assets/Backgroundpixels.png b/public/j-space/assets/Backgroundpixels.png
new file mode 100644
index 00000000..69428fd7
Binary files /dev/null and b/public/j-space/assets/Backgroundpixels.png differ
diff --git a/public/j-space/assets/Happy Charles Oliveira GIF by UFC.gif b/public/j-space/assets/Happy Charles Oliveira GIF by UFC.gif
new file mode 100644
index 00000000..1af6315d
Binary files /dev/null and b/public/j-space/assets/Happy Charles Oliveira GIF by UFC.gif differ
diff --git a/public/j-space/assets/Jeremypixel.png b/public/j-space/assets/Jeremypixel.png
new file mode 100644
index 00000000..e80298a4
Binary files /dev/null and b/public/j-space/assets/Jeremypixel.png differ
diff --git a/public/j-space/assets/Rodney Mullen Skate GIF.gif b/public/j-space/assets/Rodney Mullen Skate GIF.gif
new file mode 100644
index 00000000..0d4b6340
Binary files /dev/null and b/public/j-space/assets/Rodney Mullen Skate GIF.gif differ
diff --git a/public/j-space/assets/all-icon.png b/public/j-space/assets/all-icon.png
new file mode 100644
index 00000000..ad7f6b7e
Binary files /dev/null and b/public/j-space/assets/all-icon.png differ
diff --git a/public/j-space/assets/animation GIF by INSA's GIF-ITI.gif b/public/j-space/assets/animation GIF by INSA's GIF-ITI.gif
new file mode 100644
index 00000000..61d46916
Binary files /dev/null and b/public/j-space/assets/animation GIF by INSA's GIF-ITI.gif differ
diff --git a/public/j-space/assets/ascii-gif.gif b/public/j-space/assets/ascii-gif.gif
new file mode 100644
index 00000000..178dd88f
Binary files /dev/null and b/public/j-space/assets/ascii-gif.gif differ
diff --git a/public/j-space/assets/back-icon.png b/public/j-space/assets/back-icon.png
new file mode 100644
index 00000000..b2f8d004
Binary files /dev/null and b/public/j-space/assets/back-icon.png differ
diff --git a/public/j-space/assets/bear.gif b/public/j-space/assets/bear.gif
new file mode 100644
index 00000000..681698fe
Binary files /dev/null and b/public/j-space/assets/bear.gif differ
diff --git a/public/j-space/assets/binder_action.gif b/public/j-space/assets/binder_action.gif
new file mode 100644
index 00000000..6eb1d28a
Binary files /dev/null and b/public/j-space/assets/binder_action.gif differ
diff --git a/public/j-space/assets/bjj-grappling.gif b/public/j-space/assets/bjj-grappling.gif
new file mode 100644
index 00000000..ca7c90c0
Binary files /dev/null and b/public/j-space/assets/bjj-grappling.gif differ
diff --git a/public/j-space/assets/conormcgregor.gif b/public/j-space/assets/conormcgregor.gif
new file mode 100644
index 00000000..2fa73b3e
Binary files /dev/null and b/public/j-space/assets/conormcgregor.gif differ
diff --git a/public/j-space/assets/cookie-clicker-bot.gif b/public/j-space/assets/cookie-clicker-bot.gif
new file mode 100644
index 00000000..ebacb976
Binary files /dev/null and b/public/j-space/assets/cookie-clicker-bot.gif differ
diff --git a/public/j-space/assets/cruisesunset.JPG b/public/j-space/assets/cruisesunset.JPG
new file mode 100644
index 00000000..64daacf5
Binary files /dev/null and b/public/j-space/assets/cruisesunset.JPG differ
diff --git a/public/j-space/assets/daneilcaesar-gif.gif b/public/j-space/assets/daneilcaesar-gif.gif
new file mode 100644
index 00000000..c58d4caa
Binary files /dev/null and b/public/j-space/assets/daneilcaesar-gif.gif differ
diff --git a/public/j-space/assets/dark-Backgroundpixels.png b/public/j-space/assets/dark-Backgroundpixels.png
new file mode 100644
index 00000000..01145349
Binary files /dev/null and b/public/j-space/assets/dark-Backgroundpixels.png differ
diff --git a/public/j-space/assets/devpost-icon.png b/public/j-space/assets/devpost-icon.png
new file mode 100644
index 00000000..610b19ad
Binary files /dev/null and b/public/j-space/assets/devpost-icon.png differ
diff --git a/public/j-space/assets/directory_computer-0.png b/public/j-space/assets/directory_computer-0.png
new file mode 100644
index 00000000..5006c563
Binary files /dev/null and b/public/j-space/assets/directory_computer-0.png differ
diff --git a/public/j-space/assets/do you even lift like a boss GIF.gif b/public/j-space/assets/do you even lift like a boss GIF.gif
new file mode 100644
index 00000000..b9893495
Binary files /dev/null and b/public/j-space/assets/do you even lift like a boss GIF.gif differ
diff --git a/public/j-space/assets/email-icon.png b/public/j-space/assets/email-icon.png
new file mode 100644
index 00000000..801212db
Binary files /dev/null and b/public/j-space/assets/email-icon.png differ
diff --git a/public/j-space/assets/favicon.png b/public/j-space/assets/favicon.png
new file mode 100644
index 00000000..aa24ff3d
Binary files /dev/null and b/public/j-space/assets/favicon.png differ
diff --git a/public/j-space/assets/forward-icon.png b/public/j-space/assets/forward-icon.png
new file mode 100644
index 00000000..7dceaefe
Binary files /dev/null and b/public/j-space/assets/forward-icon.png differ
diff --git a/public/j-space/assets/github-icon.png b/public/j-space/assets/github-icon.png
new file mode 100644
index 00000000..e0a65ab1
Binary files /dev/null and b/public/j-space/assets/github-icon.png differ
diff --git a/public/j-space/assets/instagram-icon.png b/public/j-space/assets/instagram-icon.png
new file mode 100644
index 00000000..5c5ef9c6
Binary files /dev/null and b/public/j-space/assets/instagram-icon.png differ
diff --git a/public/j-space/assets/j-gif-space.gif b/public/j-space/assets/j-gif-space.gif
new file mode 100644
index 00000000..2b1ad8bc
Binary files /dev/null and b/public/j-space/assets/j-gif-space.gif differ
diff --git a/public/j-space/assets/linkedin-icon.png b/public/j-space/assets/linkedin-icon.png
new file mode 100644
index 00000000..0a01f68a
Binary files /dev/null and b/public/j-space/assets/linkedin-icon.png differ
diff --git a/public/j-space/assets/lockblock.png b/public/j-space/assets/lockblock.png
new file mode 100644
index 00000000..3fc054ca
Binary files /dev/null and b/public/j-space/assets/lockblock.png differ
diff --git a/public/j-space/assets/music-player.png b/public/j-space/assets/music-player.png
new file mode 100644
index 00000000..68bb414d
Binary files /dev/null and b/public/j-space/assets/music-player.png differ
diff --git a/public/j-space/assets/netshow_arrow-2.png b/public/j-space/assets/netshow_arrow-2.png
new file mode 100644
index 00000000..ad82b39a
Binary files /dev/null and b/public/j-space/assets/netshow_arrow-2.png differ
diff --git a/public/j-space/assets/paint_old.png b/public/j-space/assets/paint_old.png
new file mode 100644
index 00000000..092f83b6
Binary files /dev/null and b/public/j-space/assets/paint_old.png differ
diff --git a/public/j-space/assets/picture-painting.png b/public/j-space/assets/picture-painting.png
new file mode 100644
index 00000000..26738ad9
Binary files /dev/null and b/public/j-space/assets/picture-painting.png differ
diff --git a/public/j-space/assets/pixelbjj.jpg b/public/j-space/assets/pixelbjj.jpg
new file mode 100644
index 00000000..66e1f110
Binary files /dev/null and b/public/j-space/assets/pixelbjj.jpg differ
diff --git a/public/j-space/assets/portfolio-website-cover.png b/public/j-space/assets/portfolio-website-cover.png
new file mode 100644
index 00000000..78626717
Binary files /dev/null and b/public/j-space/assets/portfolio-website-cover.png differ
diff --git a/public/j-space/assets/portfolio-works-gif.gif b/public/j-space/assets/portfolio-works-gif.gif
new file mode 100644
index 00000000..6732537a
Binary files /dev/null and b/public/j-space/assets/portfolio-works-gif.gif differ
diff --git a/public/j-space/assets/qhacksbus.png b/public/j-space/assets/qhacksbus.png
new file mode 100644
index 00000000..ec003aa9
Binary files /dev/null and b/public/j-space/assets/qhacksbus.png differ
diff --git a/public/j-space/assets/resume-icon.png b/public/j-space/assets/resume-icon.png
new file mode 100644
index 00000000..52c712e8
Binary files /dev/null and b/public/j-space/assets/resume-icon.png differ
diff --git a/public/j-space/assets/rref_calculator.PNG b/public/j-space/assets/rref_calculator.PNG
new file mode 100644
index 00000000..0fcfc067
Binary files /dev/null and b/public/j-space/assets/rref_calculator.PNG differ
diff --git a/public/j-space/assets/sinatrademo.gif b/public/j-space/assets/sinatrademo.gif
new file mode 100644
index 00000000..cfebd573
Binary files /dev/null and b/public/j-space/assets/sinatrademo.gif differ
diff --git a/public/j-space/assets/slot-machine.PNG b/public/j-space/assets/slot-machine.PNG
new file mode 100644
index 00000000..60b15eb5
Binary files /dev/null and b/public/j-space/assets/slot-machine.PNG differ
diff --git a/public/j-space/assets/specifics-icon.png b/public/j-space/assets/specifics-icon.png
new file mode 100644
index 00000000..51f19d33
Binary files /dev/null and b/public/j-space/assets/specifics-icon.png differ
diff --git a/public/j-space/assets/startupgif.gif b/public/j-space/assets/startupgif.gif
new file mode 100644
index 00000000..691e082b
Binary files /dev/null and b/public/j-space/assets/startupgif.gif differ
diff --git a/public/j-space/assets/stop motion animation GIF by Ryan Seslow.gif b/public/j-space/assets/stop motion animation GIF by Ryan Seslow.gif
new file mode 100644
index 00000000..1b34f57c
Binary files /dev/null and b/public/j-space/assets/stop motion animation GIF by Ryan Seslow.gif differ
diff --git a/public/j-space/assets/stop_action.gif b/public/j-space/assets/stop_action.gif
new file mode 100644
index 00000000..f3fe1876
Binary files /dev/null and b/public/j-space/assets/stop_action.gif differ
diff --git a/public/j-space/assets/stop_dont_go_on_grey.jpg b/public/j-space/assets/stop_dont_go_on_grey.jpg
new file mode 100644
index 00000000..61821aff
Binary files /dev/null and b/public/j-space/assets/stop_dont_go_on_grey.jpg differ
diff --git a/public/j-space/assets/ufc-elo-calculator-vid.mp4 b/public/j-space/assets/ufc-elo-calculator-vid.mp4
new file mode 100644
index 00000000..5c6fc744
Binary files /dev/null and b/public/j-space/assets/ufc-elo-calculator-vid.mp4 differ
diff --git a/public/j-space/assets/ufc-search.gif b/public/j-space/assets/ufc-search.gif
new file mode 100644
index 00000000..23339365
Binary files /dev/null and b/public/j-space/assets/ufc-search.gif differ
diff --git a/public/j-space/assets/ufc_elo.png b/public/j-space/assets/ufc_elo.png
new file mode 100644
index 00000000..082ca97c
Binary files /dev/null and b/public/j-space/assets/ufc_elo.png differ
diff --git a/public/j-space/assets/user-chatbox.png b/public/j-space/assets/user-chatbox.png
new file mode 100644
index 00000000..348659c8
Binary files /dev/null and b/public/j-space/assets/user-chatbox.png differ
diff --git a/public/j-space/assets/user-world.png b/public/j-space/assets/user-world.png
new file mode 100644
index 00000000..f7e134d1
Binary files /dev/null and b/public/j-space/assets/user-world.png differ
diff --git a/public/j-space/assets/website-icon.png b/public/j-space/assets/website-icon.png
new file mode 100644
index 00000000..201decb6
Binary files /dev/null and b/public/j-space/assets/website-icon.png differ
diff --git a/public/j-space/favicon.png b/public/j-space/favicon.png
new file mode 100644
index 00000000..aa24ff3d
Binary files /dev/null and b/public/j-space/favicon.png differ