# Personal Website - AI Assistant Rules ## Project Overview This is a professional personal website and academic portfolio built with Next.js 15, TypeScript, Tailwind CSS, and shadcn/ui components. The site showcases academic achievements, research publications, projects, and professional experience. This is a content-focused static website where accuracy, professionalism, and accessibility are paramount. ## Core Development Principles ### 1. Content-First Approach - **Priority**: Accuracy and professionalism over flashy features - **Content Integrity**: All information must be factually accurate and match CV/resume - **User Experience**: Clean, accessible, and intuitive navigation - **Performance**: Fast loading times and optimal Core Web Vitals - **Accessibility**: WCAG compliant design for all users ### 2. Type Safety & Code Quality - **TypeScript**: Use strict TypeScript for all new code - **Static Typing**: Define interfaces for all data structures - **Validation**: Validate all external data sources - **Error Boundaries**: Implement proper error handling at all levels ## Tech Stack Guidelines ### Frontend (Next.js 15 + App Router) - Use App Router patterns consistently - Implement proper loading states and error boundaries - Follow Next.js 15 best practices for performance - Use React Server Components where appropriate - Leverage static generation for optimal performance ### Content Management (Static Data) - Store content data in `src/lib/data.ts` - Use TypeScript interfaces for all content types - Implement proper data validation - Maintain content accuracy across all pages ### Styling & UI (Tailwind CSS + shadcn/ui) - Use shadcn/ui components as the foundation - Follow Tailwind CSS utility-first approach - Implement responsive design (mobile-first) - Support system-based dark mode ### Development Tools - Use ESLint and Prettier for code formatting - Use TypeScript for type safety - Run lints and typechecks when helpful - Avoid starting development servers unless absolutely necessary ## Component Architecture ### UI Components (shadcn/ui) - Use shadcn/ui components as the foundation - Follow existing component patterns - Use `cn()` utility for conditional className merging - Maintain consistent spacing (4px grid system) ### Component Organization - **Base UI Components**: `src/components/ui/` - Pure, portable shadcn/ui components - **Project Components**: `src/components/` - Project-specific reusable components - **Page Components**: Page-specific components within respective page files ### UI Component Rules #### What Belongs in `src/components/ui/` (Portable) - **Pure shadcn/ui components**: button, input, select, dialog, etc. - **Generic layout components**: card, skeleton, progress - **Basic form components**: input, textarea, checkbox, switch - **Navigation components**: breadcrumb, tabs - **Feedback components**: badge, toast - **Data display**: table, skeleton, progress - **Overlay components**: dialog, sheet, popover, dropdown-menu #### What Should Stay in `src/components/` (Project-Specific) - **Navigation**: Navigation, Sidebar, PageBreadcrumb, BreadcrumbWrapper - **Content Display**: AccessibleVideo, Footer - **Layout**: Any site-specific layout components - **Feature Components**: CV PDF viewer, project cards, publication lists #### Component Design Principles - **High Reusability**: Components should accept props for customization - **Composition over Inheritance**: Use children props and render props - **Default Values**: Provide sensible defaults for all optional props - **Type Safety**: Use TypeScript interfaces for all props - **Accessibility**: Include proper ARIA labels and keyboard navigation - **Responsive Design**: Mobile-first approach with responsive variants #### Component Props Pattern ```typescript interface ComponentProps { // Required props title: string; // Optional props with defaults variant?: "default" | "secondary" | "outline"; size?: "sm" | "md" | "lg"; // Styling props className?: string; // Event handlers onClick?: () => void; onChange?: (value: string) => void; // Content children?: React.ReactNode; // Accessibility "aria-label"?: string; } ``` ### Styling Guidelines - **Primary Color**: Use consistent primary color for branding - **Typography**: Professional typography hierarchy - **Tailwind CSS**: Use utility classes consistently - **Dark Mode**: System preference-based dark mode support - **Responsive Design**: Mobile-first approach ## Content Management Patterns ### Data Structure (src/lib/data.ts) ```typescript // Follow this pattern for all content types interface Project { title: string; description: string; longDescription?: string; image?: string; imageAlt?: string; link?: string; tags: string[]; featured: boolean; } interface Publication { title: string; authors: string[]; venue: string; year: number; type: "conference" | "journal" | "workshop" | "thesis"; abstract?: string; paperUrl?: string; doi?: string; } ``` ### Content Accuracy Rules - **CV Synchronization**: All content must match the current CV/resume - **Factual Accuracy**: No embellishments or inaccurate information - **Professional Tone**: Maintain academic and professional language - **Regular Updates**: Keep content current with latest achievements ### External Content Integration - **PDF Documents**: Use secure proxy for GitHub-hosted PDFs - **Media Files**: Optimize images and videos for web delivery - **External Links**: Validate all external links regularly - **Citations**: Proper citation format for publications ## Page Structure Patterns ### Standard Page Header All pages should follow this consistent header pattern: ```typescript

Page Title

Page description

``` ### Navigation Consistency - **Icons**: Use consistent icons between navigation and breadcrumbs - **Routing**: Follow Next.js App Router conventions - **Active States**: Clear indication of current page - **Mobile Navigation**: Responsive mobile menu ### Content Sections - **Consistent Spacing**: Use standardized spacing between sections - **Loading States**: Implement skeleton loaders for dynamic content - **Empty States**: Handle cases with no content gracefully - **Error States**: Provide clear error messages and recovery options ## Icon System ### Navigation Icons (Lucide React) - **Home**: `Home` icon - **Articles**: `Newspaper` icon - **Projects**: `FolderGit2` icon - **Publications**: `BookOpenText` icon - **Travel**: `Plane` icon - **CV**: `FileText` icon - **Accessibility**: `Accessibility` icon ### Icon Usage Rules - Use consistent icon sizes (h-8 w-8 for headers, h-4 w-4 for small elements) - Apply `text-primary` class for header icons - Maintain consistency between navigation and breadcrumbs - Use semantic icons that clearly represent content ## File Naming Conventions ### Pages & Components - **Pages**: kebab-case (e.g., `latex-intro/page.tsx`) - **Components**: PascalCase (e.g., `AccessibleVideo.tsx`) - **Layouts**: `layout.tsx` (Next.js convention) - **API Routes**: `route.ts` (Next.js convention) ### Assets & Content - **Images**: kebab-case (e.g., `project-thumbnail.jpg`) - **Videos**: kebab-case (e.g., `latex-intro.mp4`) - **Documents**: kebab-case (e.g., `academic-cv.pdf`) - **Data Files**: camelCase (e.g., `publications.bib`) ### Utilities & Helpers - **Utilities**: camelCase (e.g., `formatDate.ts`) - **Constants**: UPPER_SNAKE_CASE - **Types**: PascalCase (e.g., `ProjectType`) ## Development Workflow ### Adding New Content 1. **Data Update**: Update content in `src/lib/data.ts` 2. **Type Definitions**: Update TypeScript interfaces 3. **UI Implementation**: Create/update components 4. **Page Integration**: Implement in appropriate pages 5. **Testing**: Verify functionality and accessibility ### Code Quality - **ESLint**: Follow existing linting rules - **Prettier**: Consistent code formatting - **TypeScript**: Strict type checking - **Performance**: Optimize images and components ## Content Types & Management ### Publications - **BibTeX Integration**: Parse and display academic publications - **Citation Formats**: Proper academic citation formatting - **DOI Links**: Link to official publication sources - **PDF Access**: Secure hosting and viewing of papers ### Projects - **Featured Projects**: Highlight most important work - **Project Categories**: Academic, professional, and personal projects - **Media Integration**: Screenshots, videos, and demonstrations - **Technology Tags**: Clear indication of technologies used ### CV/Resume Management - **PDF Rendering**: High-quality PDF.js implementation - **Version Control**: Track CV updates with timestamps - **Multiple Formats**: Support both academic CV and professional resume - **Download Options**: Easy access to latest versions ### Travel & Personal Content - **Image Optimization**: Compress and optimize travel photos - **Content Curation**: Select meaningful and professional content - **Privacy Considerations**: Avoid overly personal information ## Performance Guidelines ### Image Optimization - Use Next.js Image component for all images - Implement proper alt text for accessibility - Compress images for web delivery - Use responsive image loading ### Loading Performance - Implement skeleton loading states - Use React.memo for expensive components - Optimize bundle size with proper imports - Leverage Next.js static optimization ### Accessibility - **WCAG Compliance**: Follow WCAG 2.1 AA guidelines - **Keyboard Navigation**: Ensure full keyboard accessibility - **Screen Readers**: Proper ARIA labels and semantic HTML - **Color Contrast**: Maintain sufficient contrast ratios - **Focus Management**: Clear focus indicators ## Security & Privacy ### Content Security - **External Links**: Validate all external links - **PDF Security**: Secure proxy for document access - **Personal Information**: Limit exposure of personal details - **Professional Boundaries**: Maintain professional presentation ### Performance Security - **Content Validation**: Validate all external content - **Safe Rendering**: Prevent XSS in dynamic content - **External Resources**: Use trusted CDNs and sources ## SEO & Meta Data ### Page Metadata - **Title Tags**: Descriptive and professional titles - **Meta Descriptions**: Clear page descriptions - **Open Graph**: Proper social media previews - **Structured Data**: Academic and professional markup ### Content Optimization - **URL Structure**: Clean and descriptive URLs - **Internal Linking**: Proper cross-page navigation - **Content Hierarchy**: Clear heading structure - **Loading Speed**: Optimize for search engine performance ## Testing & Quality Assurance ### Manual Testing Checklist - [ ] All navigation links work correctly - [ ] Responsive design on all screen sizes - [ ] Dark mode functions properly - [ ] PDF viewing works correctly - [ ] All external links are functional - [ ] Accessibility features work as expected - [ ] Content accuracy verified against CV ### Code Review Guidelines - Check for proper error handling - Verify type safety and TypeScript compliance - Ensure consistent styling and spacing - Review accessibility implementation - Validate content accuracy ## Content Update Procedures ### Regular Maintenance - **Content Review**: Quarterly review of all content - **Link Validation**: Check all external links monthly - **CV Synchronization**: Update website when CV changes - **Performance Monitoring**: Regular performance audits ### Publication Updates - **New Publications**: Add to publications.bib immediately - **Citation Updates**: Maintain proper citation formats - **PDF Updates**: Update hosted documents as needed - **Archive Management**: Maintain historical accuracy ## Common Patterns & Anti-Patterns ### ✅ Do's - Keep content accurate and professional - Use consistent component patterns - Implement proper loading states - Follow accessibility guidelines - Maintain responsive design - Use semantic HTML and proper TypeScript ### ❌ Don'ts - Don't add inaccurate or embellished content - Don't skip accessibility considerations - Don't ignore responsive design - Don't use hardcoded content where data structures exist - Don't skip proper error handling - Don't start unnecessary development servers ## Emergency Procedures ### Content Issues - **Inaccurate Information**: Immediate correction required - **Broken Links**: Priority fix for external resources - **Performance Issues**: Optimize images and components - **Accessibility Problems**: High priority accessibility fixes ### Technical Issues - **Build Failures**: Check TypeScript and ESLint errors - **Performance Degradation**: Audit and optimize components - **Browser Compatibility**: Test across major browsers ## Remember This is a professional academic and personal website where accuracy, accessibility, and professional presentation are critical. Every decision should prioritize these values over development convenience or flashy features. - Exclusively use bun, not any other runtime. no npm commands. - Don't create demo content unless absolutely necessary - Don't add inaccurate or embellished information - Don't run builds unless absolutely necessary - Don't start new dev servers unless asked - Always verify content accuracy against source documents - Maintain professional and academic standards in all content