diff --git a/.env.example b/.env.example index 69287896..475ad34d 100644 --- a/.env.example +++ b/.env.example @@ -1,46 +1,47 @@ # Drizzle -DATABASE_URL="postgresql://root:mysecretpassword@localhost:5432/local" +DATABASE_URL="dummy" # Better Auth # You can generate a new secret on the command line with: # openssl rand -base64 32 # https://next-auth.js.org/configuration/options#secret -BETTER_AUTH_SECRET="" +BETTER_AUTH_SECRET="dummy" # Stripe -NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="" -STRIPE_SECRET_KEY="" -STRIPE_SECRET_WEBHOOK_KEY="" +NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="dummy" +STRIPE_SECRET_KEY="dummy" +STRIPE_SECRET_WEBHOOK_KEY="dummy" # Discord -DISCORD_BOT_TOKEN="" -DISCORD_CLIENT_ID="" -DISCORD_CLIENT_SECRET="" -DISCORD_DAILY_ANIMAL_WEBHOOK_URL="" -DISCORD_LEETCODE_DAILY_WEBHOOK_URL="" -DISCORD_DAILY_REMINDERS_WEBHOOK_URL="" -DISCORD_PRE_DAILY_REMINDERS_WEBHOOK_URL="" -DISCORD_WEATHER_API_KEY="" +DISCORD_BOT_TOKEN="dummy" +DISCORD_CLIENT_ID="dummy" +DISCORD_CLIENT_SECRET="dummy" +DISCORD_DAILY_ANIMAL_WEBHOOK_URL="dummy" +DISCORD_LEETCODE_DAILY_WEBHOOK_URL="dummy" +DISCORD_DAILY_REMINDERS_WEBHOOK_URL="dummy" +DISCORD_PRE_DAILY_REMINDERS_WEBHOOK_URL="dummy" +DISCORD_WEATHER_API_KEY="dummy" # Google -GOOGLE_PRIVATE_KEY_B64="" -GOOGLE_CLIENT_EMAIL="" +GOOGLE_PRIVATE_KEY_B64="dummy" +GOOGLE_CLIENT_EMAIL="dummy" # Minio -MINIO_ENDPOINT="" -MINIO_ACCESS_KEY="" -MINIO_SECRET_KEY="" +MINIO_ENDPOINT="dummy" +MINIO_ACCESS_KEY="dummy" +MINIO_SECRET_KEY="dummy" #can I get a cheese burger -BLADE_URL="" +BLADE_URL="dummy" # Passkit -WWDR_CERT_BASE64= -SIGNER_CERT_BASE64= -SIGNER_KEY_BASE64= -SIGNER_KEY_PASS_BASE64= -PASS_TYPE_IDENTIFIER= -TEAM_IDENTIFIER= +WWDR_CERT_BASE64="dummy" +SIGNER_CERT_BASE64="dummy" +SIGNER_KEY_BASE64="dummy" +SIGNER_KEY_PASS_BASE64="dummy" +PASS_TYPE_IDENTIFIER="dummy" +TEAM_IDENTIFIER="dummy" #Resend -RESEND_API_KEY="" -RESEND_FROM_EMAIL="" +RESEND_API_KEY="dummy" +RESEND_FROM_EMAIL="dummy" + diff --git a/apps/blade/public/Mehdi_Chraibi_Resume.pdf b/apps/blade/public/Mehdi_Chraibi_Resume.pdf new file mode 100644 index 00000000..4a41d5e3 Binary files /dev/null and b/apps/blade/public/Mehdi_Chraibi_Resume.pdf differ diff --git a/apps/blade/public/github.png b/apps/blade/public/github.png new file mode 100644 index 00000000..e7605b02 Binary files /dev/null and b/apps/blade/public/github.png differ diff --git a/apps/blade/public/headshot.jpg b/apps/blade/public/headshot.jpg new file mode 100644 index 00000000..927c2f54 Binary files /dev/null and b/apps/blade/public/headshot.jpg differ diff --git a/apps/blade/public/linkedin.png b/apps/blade/public/linkedin.png new file mode 100644 index 00000000..2c1663fd Binary files /dev/null and b/apps/blade/public/linkedin.png differ diff --git a/apps/blade/public/parkucf.jpg b/apps/blade/public/parkucf.jpg new file mode 100644 index 00000000..fe213e1a Binary files /dev/null and b/apps/blade/public/parkucf.jpg differ diff --git a/apps/blade/public/supchat.jpg b/apps/blade/public/supchat.jpg new file mode 100644 index 00000000..ecbffb6f Binary files /dev/null and b/apps/blade/public/supchat.jpg differ diff --git a/apps/blade/public/wikiparty.png b/apps/blade/public/wikiparty.png new file mode 100644 index 00000000..8da8cc37 Binary files /dev/null and b/apps/blade/public/wikiparty.png differ diff --git a/apps/blade/src/app/mehdi-chraibi/page.tsx b/apps/blade/src/app/mehdi-chraibi/page.tsx new file mode 100644 index 00000000..1fc3d05e --- /dev/null +++ b/apps/blade/src/app/mehdi-chraibi/page.tsx @@ -0,0 +1,188 @@ +"use client"; + +import Image from "next/image"; +import Link from "next/link"; +import { useEffect, useRef } from "react"; + +const projects = [ + { + name: "ParkUCF", + image: "/parkucf.jpg", + link: "https://parkucf.mehdi.ch", + caption: "An AI-powered parking dashboard for UCF students", + date: "October - December 2025", + }, + { + name: "Sup, Chat?", + image: "/supchat.jpg", + link: "https://devpost.com/software/sup-chat", + caption: "Fake AI chat for streamer confidence", + date: "October 2025", + }, + { + name: "WikiParty", + image: "/wikiparty.png", + link: "https://devpost.com/software/ai-oxndzh", + caption: "Multiplayer Wikipedia game desktop app", + date: "October 2025", + }, +]; + +export default function MehdiChraibiPage() { + const carouselRef = useRef(null); + + useEffect(() => { + const carousel = carouselRef.current; + if (!carousel) return; + + let scrollAmount = 0; + const speed = 0.5; + + const scroll = () => { + scrollAmount += speed; + if (scrollAmount >= carousel.scrollWidth / 2) { + scrollAmount = 0; + } + carousel.scrollLeft = scrollAmount; + requestAnimationFrame(scroll); + }; + + const animationId = requestAnimationFrame(scroll); + return () => cancelAnimationFrame(animationId); + }, []); + + return ( +
+ {/* Profile Section */} +
+
+ Mehdi Chraibi +
+

+ Mehdi Chraibi +

+
+ + {/* Intro Section */} +

+ I am currently a junior at the University of Central Florida pursuing a + Bachelor's in Computer Science with a focus in software + engineering, data engineering and machine learning. +

+ + {/* Buttons Section */} +
+ + GitHub + GitHub + + + LinkedIn + LinkedIn + + + + + + + + + + Resume + +
+ + {/* Projects Carousel Section */} +
+

Projects

+
+ {/* Duplicate projects for infinite scroll effect */} + {[...projects, ...projects].map((project, index) => ( + +
+ {/* Left: Image */} +
+ {project.name} +
+ {/* Right: Info */} +
+ + {project.date} + +

{project.name}

+

+ {project.caption} +

+ + View Project + + + + + +
+
+ + ))} +
+
+
+ ); +}