A high-performance portfolio website showcasing software engineering, AI architecture, and research in distributed systems. Features technical projects, IEEE publications, and AI-powered solutions.
This is the source repository for minhtran.com, a professional portfolio of a software engineer and researcher specializing in distributed computing, AI systems, and backend architecture.
- Next.js 16.0.0 - React framework for production-grade applications with server-side rendering and static generation
- React 19.2.0 - Modern UI library with latest features and concurrent rendering
- Tailwind CSS 4.1.11 - Utility-first CSS framework for responsive design
- DaisyUI 5.3.8 - Tailwind CSS component library
- Markdown Processing
- react-markdown - Markdown to React component conversion
- remark-gfm - GitHub Flavored Markdown support
- rehype-raw - Raw HTML in markdown
- reading-time - Article reading time estimation
- Image Optimization
- next/image - Next.js optimized image component
- sharp - Image processing and optimization
- Plaiceholder - Responsive placeholder generation
- API Integration
- Apollo Client - GraphQL client for data fetching
- SWR - Data fetching with caching and revalidation
- Axios - HTTP client
- External Services
- Spotify API - Music tracking
- WakaTime API - Coding activity metrics
- Vercel AI - AI-powered agent capabilities
- Vercel Analytics - Web analytics
- Vercel Speed Insights - Performance monitoring
- Umami - Privacy-focused analytics
- Package Manager: Bun 1.3.0
- Node Version: >=18.18.0 (Node.js)
- Build Tool: Turbopack - Next.js bundler
- Code Quality
- ESLint - JavaScript linting
- Prettier - Code formatting
- Husky - Git hooks management
- lint-staged - Pre-commit linting
-
Data Visualization
- Recharts - React charting library
-
Utilities
- clsx - Conditional className management
- tailwind-merge - Tailwind CSS class merging
- date-fns - Date manipulation library
- date-fns-tz - Timezone support
- theme-change - Dark mode switching
- jsdom - DOM implementation for server-side rendering
- Node.js 18.18.0 or higher
- Bun 1.3.0 or higher (recommended package manager)
# Clone the repository
git clone https://github.com/minhtran241/minhtran.com.git
cd minhtran.com
# Install dependencies using Bun (recommended)
bun install
# Or using npm
npm install
# Or using yarn
yarn installCreate a .env.local file in the root directory by copying from the example:
cp .env.example .env.localRequired environment variables for basic functionality:
# Required for site URL generation
NEXT_PUBLIC_BASE_URL=http://localhost:3000
# Optional: GitHub integration
GITHUB_TOKEN=your-github-token
GITHUB_USERNAME=your-username
# Optional: WakaTime coding stats
WAKATIME_API_KEY=your-api-key
WAKATIME_USERNAME=your-username
# Optional: AI chatbot feature
COHERE_API_KEY=your-cohere-api-key
# Optional: Analytics
UMAMI_WEBSITE_ID=your-website-idNote: The website will work without these optional services, but features like GitHub stats, WakaTime integration, and AI chatbot will be disabled.
# Start development server with Turbopack
bun run dev
# Server will be available at http://localhost:3000# Build for production
bun run build
# Start production server
bun run start# Check code formatting
bun run check
# Fix code formatting
bun run format
# Run linting
bun run prettier- Comprehensive employment history with detailed experience descriptions
- Educational background and certifications
- Published research and academic contributions
- Integration with external services for real-time activity tracking
- Markdown-based content with syntax highlighting
- Reading time estimation
- GitHub Flavored Markdown support
- Responsive image handling with optimization
- Category and tag organization
- Featured projects with thumbnails and descriptions
- Direct links to GitHub repositories
- Project filtering and organization
- Embedded project metadata
- Integration with Spotify API for currently playing tracks
- WakaTime integration for coding activity visualization
- Real-time analytics and performance monitoring
- Server-side rendering with dynamic data
- Turbopack for fast builds and HMR
- Image optimization with responsive sizing
- CSS and JavaScript code splitting
- Caching strategies for static assets
- Server-side rendering and static generation
- Content Security Policy headers
- X-Frame-Options protection
- XSS protection headers
- Referrer policy configuration
- HTTPS enforcement
- Semantic HTML structure
- ARIA labels and landmarks
- Keyboard navigation support
- Responsive design for all devices
- Dark mode support with theme switching
Create a .env.local file for local development:
NEXT_PUBLIC_SITE_URL=http://localhost:3000
NEXT_PUBLIC_GITHUB_USERNAME=minhtran241The site includes privacy-focused analytics via Umami and Vercel Analytics. Configure endpoints in the environment as needed.
API routes are configured in src/app/api/ directory. Services for Spotify and WakaTime integration are located in src/services/.
The project includes bundle analysis capabilities:
# Generate bundle analysis
bun run analyzeThe Next.js configuration includes:
- Turbopack for rapid development builds
- Optimized package imports to reduce bundle size
- Source maps in production for debugging
- Compression and header optimization
The website is optimized for deployment on Vercel but can be deployed to any Node.js hosting platform:
# Build for production
bun run build
# Test production build locally
bun run start- Node.js runtime environment
- Support for Next.js 16.0.0
- Environment variable configuration capability
- Optional: CDN for static asset caching
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
For bug reports and feature requests, please open an issue on the GitHub repository. The repository is primarily maintained as a personal portfolio but welcomes technical discussions and suggestions.
Current performance metrics:
- Next.js 16.0 with Turbopack for optimized builds
- Lighthouse scores optimized for Core Web Vitals
- Real-time monitoring via Vercel Speed Insights
- Responsive image optimization with sharp
- Automatic code splitting and lazy loading
For technical questions or feedback regarding the website, please refer to the GitHub issues page or contact through the website's contact methods.