import React, { useState, useEffect } from 'react';
import {
Terminal, Code2, Cpu, MonitorPlay,
Github, Linkedin, Mail, ExternalLink,
ChevronRight, Sparkles, Layers, Box
} from 'lucide-react';
const useTypewriter = (text, speed = 50, delay = 0) => {
const [displayText, setDisplayText] = useState('');
const [isTyping, setIsTyping] = useState(false);
useEffect(() => {
let timeout;
let typingInterval;
timeout = setTimeout(() => {
setIsTyping(true);
let i = 0;
typingInterval = setInterval(() => {
if (i < text.length) {
setDisplayText((prev) => prev + text.charAt(i));
i++;
} else {
setIsTyping(false);
clearInterval(typingInterval);
}
}, speed);
}, delay);
return () => {
clearTimeout(timeout);
clearInterval(typingInterval);
};
}, [text, speed, delay]);
return { displayText, isTyping };
};
const GlassCard = ({ children, className = '', hoverEffect = true }) => (
{children}
);
const techStack = [
{ name: 'React', icon: , desc: 'Frontend UI' },
{ name: 'Vue 3', icon: , desc: 'Progressive Web' },
{ name: 'Tailwind CSS', icon: , desc: 'Styling' },
{ name: 'Arch Linux', icon: , desc: 'OS & Env' },
{ name: 'ESP32', icon: , desc: 'IoT Hardware' },
];
const projects = [
{
title: 'SIOS',
subtitle: 'School Integrated OS',
description: 'A comprehensive, next-generation school management system designed to unify administrative tasks, student tracking, and communication into a single, seamless platform.',
tags: ['React', 'Tailwind', 'Node.js', 'PostgreSQL'],
glow: 'from-blue-500/20 to-cyan-500/20',
border: 'group-hover:border-cyan-500/50'
},
{
title: 'Modular RC AIoT',
subtitle: 'Robotics & AI',
description: 'An advanced, modular remote-controlled vehicle powered by AI and Internet of Things. Built with ESP32 microcontrollers for real-time telemetry and automated navigation.',
tags: ['ESP32', 'C++', 'Vue 3', 'WebSockets'],
glow: 'from-emerald-500/20 to-teal-500/20',
border: 'group-hover:border-emerald-500/50'
}
];
export default function App() {
const { displayText: titleText } = useTypewriter("Muhammad Yazif Farras", 80, 500);
const { displayText: subtitleText } = useTypewriter("Full-Stack Developer & AIoT Engineer", 50, 2500);
return (
{/* Background ambient effects */}
{/* Navigation */}
{/* Main Content */}
System ready. Welcome to my portfolio.
{titleText}
{subtitleText}
{techStack.map((tech, idx) => (
{tech.icon}
{tech.name}
{tech.desc}
))}
{projects.map((project, idx) => (
{/* Abstract circuit/tech background pattern */}
{project.subtitle}
{project.title}
{project.description}
{project.tags.map((tag, tIdx) => (
{tag}
))}
))}
);
}