{"id":42629073,"url":"https://github.com/iamdhakrey/terminal-portfolio","last_synced_at":"2026-01-29T05:11:42.359Z","repository":{"id":303955914,"uuid":"1017117619","full_name":"iamdhakrey/terminal-portfolio","owner":"iamdhakrey","description":"A modern, terminal-style portfolio website that's fully configurable through a single configuration file. Perfect for developers who want to showcase their skills and projects in a unique way.","archived":false,"fork":false,"pushed_at":"2025-12-02T03:53:06.000Z","size":7636,"stargazers_count":49,"open_issues_count":2,"forks_count":12,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-04T20:40:23.094Z","etag":null,"topics":["backend-developer","developer-site","developer-website","github","github-api","github-cli","portfolio","portfolio-page","portfolio-project","portfolio-site","portfolio-website","react","react-po","template","terminal-based"],"latest_commit_sha":null,"homepage":"https://terminal-portfolio.iamdhakrey.dev","language":"Astro","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iamdhakrey.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-10T03:59:40.000Z","updated_at":"2025-12-02T03:45:03.000Z","dependencies_parsed_at":"2025-07-17T11:26:10.608Z","dependency_job_id":"e3aaf16b-e61c-415e-9add-3f60bc222bcc","html_url":"https://github.com/iamdhakrey/terminal-portfolio","commit_stats":null,"previous_names":["iamdhakrey/github-profile","iamdhakrey/github-portfolio","iamdhakrey/terminal-portfolio"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/iamdhakrey/terminal-portfolio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamdhakrey%2Fterminal-portfolio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamdhakrey%2Fterminal-portfolio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamdhakrey%2Fterminal-portfolio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamdhakrey%2Fterminal-portfolio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iamdhakrey","download_url":"https://codeload.github.com/iamdhakrey/terminal-portfolio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamdhakrey%2Fterminal-portfolio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28863279,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T22:56:21.783Z","status":"online","status_checked_at":"2026-01-29T02:00:06.714Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend-developer","developer-site","developer-website","github","github-api","github-cli","portfolio","portfolio-page","portfolio-project","portfolio-site","portfolio-website","react","react-po","template","terminal-based"],"created_at":"2026-01-29T05:11:41.610Z","updated_at":"2026-01-29T05:11:42.347Z","avatar_url":"https://github.com/iamdhakrey.png","language":"Astro","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Terminal Portfolio\n\n[![Production Ready](https://img.shields.io/badge/Production-Ready-green.svg)](https://github.com/iamdhakrey/terminal-portfolio) [![Astro](https://img.shields.io/badge/Astro-FF5A03?logo=astro\u0026logoColor=white)](https://astro.build/) [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA modern, terminal-style portfolio website built with Astro that's fully configurable through a single configuration file. Perfect for developers who want to showcase their skills and projects in a unique way with blazing-fast performance.\n\n[![Demo](docs/demo.gif)](docs/demo.gif)\n\n## ✨ Features\n\n- **🖥️ Interactive Terminal Interface** - Navigate through your portfolio using terminal commands\n- **📱 Fully Responsive** - Works perfectly on desktop, tablet, and mobile\n- **⚙️ Easy Configuration** - Everything configurable through `profile.config.ts`\n- **🔄 GitHub Integration** - Displays your GitHub stats and projects from static data\n- **🎨 Customizable Themes** - Dark, light, matrix, and cyberpunk themes\n- **📝 Blog Support** - Built-in blog functionality with MDX support\n- **🔍 SEO Optimized** - Perfect for social media sharing with automatic sitemap generation\n- **🚀 Lightning Fast** - Built with Astro for optimal performance and SEO\n- **💾 Smart Caching** - GitHub data served from static files for optimal performance\n- **🏗️ Component-Based** - Modular Astro components for easy customization\n\n## 🚧 Development Status\n\n\u003e **Note**: This Astro version is currently under active development. The **terminal command interface** and **blog features** are still being migrated from React to Astro.\n\u003e \n\u003e **For full functionality**, please use the [React branch](https://github.com/iamdhakrey/terminal-portfolio/tree/react) which has complete implementations of:\n\u003e - Interactive terminal commands\n\u003e - Full blog system with markdown processing\n\u003e - All interactive features\n\u003e\n\u003e **Contributions Welcome!** 🎉 Pull requests are highly encouraged to help complete the Astro migration. Check out our [issues](https://github.com/iamdhakrey/terminal-portfolio/issues) or submit PRs to help bring these features to the Astro version.\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- Node.js 18+\n- npm, yarn, pnpm, or bun\n\n### Installation\n\n1. **Clone the repository**\n\n   ```bash\n   git clone https://github.com/iamdhakrey/terminal-portfolio.git\n   cd terminal-portfolio\n   ```\n\n2. **Install dependencies**\n\n   ```bash\n   npm install\n   # or\n   yarn install\n   # or\n   pnpm install\n   # or\n   bun install\n   ```\n\n3. **Configure your profile**\n\n   Edit `profile.config.ts` with your information:\n\n   ```typescript\n   export const profileConfig: ProfileConfig = {\n     profile: {\n       name: \"Your Name\",\n       username: \"yourusername\",\n       title: \"Full Stack Developer\",\n       description: \"Passionate developer creating awesome solutions\",\n       bio: \"Your bio here...\",\n       image: \"/your-profile-image.jpg\",\n       website: \"https://yourwebsite.dev\",\n       location: \"Your Location\",\n       email: \"your.email@example.com\",\n       currentFocus: [\n         \"Building scalable web applications\",\n         \"Contributing to open source\",\n         // ... your current focus areas\n       ],\n       funFact: \"Your fun fact here! 🎉\"\n     },\n     // ... more configuration\n   };\n   ```\n\n4. **Update GitHub data**\n\n   First, install and authenticate with GitHub CLI:\n\n   ```bash\n   # Install GitHub CLI (if not already installed)\n   # Visit https://cli.github.com/ for installation instructions\n   \n   # Authenticate with GitHub\n   gh auth login\n   \n   # Fetch your GitHub data\n   npm run update-github\n   ```\n\n   This will automatically populate `/public/github-projects.json` with your repositories and stats.\n\n5. **Start development server**\n\n   ```bash\n   npm run dev\n   ```\n\n   Your site will be available at `http://localhost:4321`\n\n6. **Build for production**\n\n   ```bash\n   npm run build\n   ```\n\n   The built site will be in the `dist/` directory.\n\n## 📋 Configuration Guide\n\n### Profile Configuration\n\nAll configuration is done through the `profile.config.ts` file. Here's a complete overview:\n\n#### Basic Profile Information\n\n```typescript\nprofile: {\n  name: \"Your Name\",                    // Your full name\n  username: \"yourusername\",             // GitHub username\n  title: \"Full Stack Developer\",        // Your professional title\n  description: \"Short description\",     // Meta description for SEO\n  bio: \"Longer bio text...\",           // Displayed in about section\n  image: \"/profile.jpg\",               // Path to your profile image\n  website: \"https://yourwebsite.dev\",  // Your website URL\n  location: \"Your Location\",           // Your location\n  email: \"email@example.com\",          // Your email\n  currentFocus: [\"Item 1\", \"Item 2\"],  // What you're currently working on\n  funFact: \"Your fun fact! 🎉\"        // A fun fact about you\n}\n```\n\n#### Social Links\n\n```typescript\nsocialLinks: {\n  github: \"https://github.com/username\",\n  linkedin: \"https://linkedin.com/in/username\",\n  twitter: \"https://twitter.com/username\",\n  telegram: \"https://t.me/username\",\n  website: \"https://yourwebsite.dev\",\n  // Add any social platform\n}\n```\n\n#### Skills \u0026 Technologies\n\n```typescript\nskills: [\n  \"JavaScript\", \"TypeScript\", \"React\", \"Node.js\",\n  \"Python\", \"Docker\", \"AWS\", \"Linux\"\n]\n```\n\n#### Terminal Configuration\n\n```typescript\nterminal: {\n  hostname: \"localhost\",\n  username: \"user\",\n  theme: \"dark\",\n  welcomeMessage: [\n    \"Welcome to my interactive terminal!\",\n    \"Type 'help' to see available commands.\"\n  ],\n  customCommands: {\n    \"custom-cmd\": {\n      description: \"Custom command description\",\n      output: [\"Command output line 1\", \"Line 2\"]\n    }\n  }\n}\n```\n\n#### Navigation \u0026 Footer\n\n```typescript\nnavigation: {\n  brandName: \"yoursite.dev\",\n  brandUrl: \"/\",\n  links: [\n    { name: \"projects\", path: \"/projects\", color: \"text-orange-400\" },\n    // ... more navigation links\n  ]\n},\n\nfooter: {\n  statusMessage: \"Connected\",\n  madeWithLove: {\n    enabled: true,\n    text: \"Made with ❤️ and ⚡\",\n    location: \"Your Location\"\n  }\n}\n```\n\n## 🎨 Customization\n\n### Themes\n\nChoose from built-in themes or create your own:\n\n```typescript\nterminal: {\n  theme: \"dark\" | \"light\" | \"matrix\" | \"cyberpunk\"\n}\n```\n\n### Custom Colors\n\n```typescript\ntheme: {\n  primaryColor: \"#22c55e\",\n  secondaryColor: \"#3b82f6\",\n  accentColor: \"#eab308\",\n  backgroundColor: \"#000000\",\n  // ... more color options\n}\n```\n\n## 📊 GitHub Integration\n\nThis portfolio displays GitHub data from a static JSON file for optimal performance. To update your GitHub data:\n\n### GitHub CLI Prerequisites\n\n1. Install GitHub CLI: \u003chttps://cli.github.com/\u003e\n2. Authenticate with GitHub CLI:\n\n   ```bash\n   gh auth login\n   ```\n\n### Updating GitHub Data\n\n#### Method 1: Using npm script (Recommended)\n\n```bash\nnpm run update-github\n```\n\n#### Method 2: Using the script directly\n\n```bash\nbash scripts/fetch-github-data.sh\n```\n\n#### Method 3: Manual update\n\nManually update `/public/github-projects.json` with your latest repositories.\n\n### GitHub Data Structure\n\nThe script generates a comprehensive JSON structure:\n\n```json\n{\n  \"lastUpdated\": \"2025-07-10T00:00:00Z\",\n  \"user\": {\n    \"login\": \"username\",\n    \"name\": \"Your Name\",\n    \"bio\": \"Your bio\",\n    \"public_repos\": 25,\n    \"followers\": 100,\n    \"following\": 50\n  },\n  \"repositories\": [...],\n  \"stats\": {\n    \"totalRepos\": 25,\n    \"totalStars\": 150,\n    \"totalForks\": 30,\n    \"languages\": [\"JavaScript\", \"TypeScript\", \"Python\"]\n  },\n  \"featured\": [...],\n  \"byLanguage\": {...}\n}\n```\n\n### Automation\n\nFor automatic updates, you can set up a GitHub Action to run the update script and commit the changes periodically.\n\n## 📝 Blog Setup\n\nAstro uses content collections for managing blog posts. Add markdown or MDX files to `/src/content/blog/` and configure them in `profile.config.ts`.\n\n### Blog Configuration\n\n```typescript\nblogs: {\n  enabled: true,                    // Enable/disable blog functionality\n  featuredPosts: [                  // Featured blog posts (shown prominently)\n    \"react-typescript-guide\",\n    \"linux_commands\", \n    \"sudoko\"\n  ],\n  categories: [                      // Available blog categories\n    \"React\", \"TypeScript\", \"Linux\", \"DevOps\", \"Tutorial\"\n  ],\n  availableBlogs: [                  // List of available blog files\n    \"linux_commands.md\",\n    \"react-typescript-guide.md\", \n    \"sudoko.md\"\n  ]\n}\n```\n\n### Blog Linking \u0026 Cross-References\n\nThe blog system includes powerful linking capabilities to connect related posts:\n\n#### Inter-Blog Linking\n\nReference other blogs in your markdown content using these methods:\n\n##### 1. Simple Blog Reference\n\n```markdown\n{{blog:react-typescript-guide}}\n```\n\nThis creates a link with the blog's title as the link text.\n\n##### 2. Custom Link Text\n\n```markdown\n{{blog:linux_commands|Check out my Linux guide}}\n```\n\nThis creates a link with custom text.\n\n##### 3. Manual Links\n\n```markdown\n[Custom Link Text](/blogs/react-typescript-guide)\n```\n\nStandard markdown links to blog posts.\n\n#### Automatic Features\n\n- **Related Posts**: Automatically suggests related content based on title/description similarities\n- **Navigation**: Previous/next post navigation at the bottom of each blog\n- **Featured Posts**: Highlight important posts in the blog list\n- **Smart Processing**: Blog references are automatically converted to proper links\n\n#### Blog Utilities\n\nThe system provides several utility functions for advanced blog management:\n\n```javascript\n// Get related posts\nconst related = await getRelatedBlogs('current-blog', 3);\n\n// Generate blog links\nconst link = createBlogLink('react-guide', 'Custom Text');\n\n// Get navigation\nconst nav = await getBlogNavigation('current-blog');\n\n// Get all available blog links\nconst allLinks = await getAllBlogLinks();\n```\n\n### Adding New Blog Posts\n\n1. Create a `.md` or `.mdx` file in `/src/content/blog/`\n2. Add frontmatter to your markdown file:\n\n   ```markdown\n   ---\n   title: \"Your Blog Post Title\"\n   pubDate: \"2025-07-10\"\n   description: \"Brief description of your post\"\n   author: \"Your Name\"\n   tags: [\"astro\", \"tutorial\", \"web-dev\"]\n   ---\n\n   # Your Content Here\n\n   You can use MDX components and regular markdown syntax.\n   ```\n\n3. The blog will be automatically discovered by Astro's content collections\n4. Update `featuredPosts` in `profile.config.ts` for prominence\n\n### Blog Features\n\n- **Content Collections**: Astro's type-safe content management\n- **MDX Support**: Full MDX with component support and syntax highlighting\n- **Featured Posts**: Highlight important posts\n- **Automatic Discovery**: Blogs are automatically loaded from content collections\n- **Responsive Design**: Mobile-friendly blog layout\n- **RSS Feed**: Automatically generated RSS feed for your blog\n- **Table of Contents**: Auto-generated for longer posts\n\n## 🚀 Deployment\n\n### Vercel (Recommended)\n\n1. Push to GitHub\n2. Connect to Vercel\n3. Deploy automatically with Astro preset\n\n### Netlify\n\n1. Build the project: `npm run build`\n2. Deploy the `dist` folder to Netlify\n3. Or use Netlify's Git integration with automatic builds\n\n### GitHub Pages\n\n1. Add the GitHub Pages adapter to `astro.config.mjs`:\n   ```javascript\n   import { defineConfig } from 'astro/config';\n   \n   export default defineConfig({\n     output: 'static',\n     base: '/your-repo-name',\n   });\n   ```\n2. Build: `npm run build`\n3. Deploy the `dist` folder to GitHub Pages\n\n### Docker\n\n```dockerfile\nFROM node:18-alpine as builder\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci\nCOPY . .\nRUN npm run build\n\nFROM nginx:alpine\nCOPY --from=builder /app/dist /usr/share/nginx/html\nEXPOSE 80\nCMD [\"nginx\", \"-g\", \"daemon off;\"]\n```\n\n## 🛠️ Development\n\n### Project Structure\n\n```text\nsrc/\n├── components/          # Astro components\n├── content/            # Content collections (blogs)\n├── layouts/            # Astro layouts\n├── pages/              # Astro pages (file-based routing)\n├── utils/              # Utility functions\n├── assets/             # Static assets\n├── styles/             # CSS styles\n└── data/               # Static data files\n\npublic/\n├── github-projects.json # GitHub data\n└── fonts/              # Custom fonts\n```\n\n### Available Scripts\n\n- `npm run dev` - Start Astro development server (localhost:4321)\n- `npm run build` - Build for production\n- `npm run preview` - Preview production build locally\n- `npm run astro` - Run Astro CLI commands\n- `npm run update-github` - Fetch latest GitHub data\n\n### Technologies Used\n\n- **Astro 5** with TypeScript for static site generation\n- **MDX** for enhanced markdown with components\n- **Tailwind CSS** for utility-first styling\n- **Sharp** for optimized image processing\n- **Highlight.js** for syntax highlighting in blogs\n\n## 🔧 Performance\n\n- ⚡ Lightning-fast builds and rendering with Astro\n- 📱 Mobile-optimized responsive design\n- 🎯 Zero JavaScript by default, enhanced progressively\n- 💾 Static GitHub data for instant loading\n- 🔍 SEO optimized with automatic sitemap generation\n- 🖼️ Optimized images with Sharp integration\n\n## 📈 SEO Features\n\n- Meta tags for social media sharing\n- Structured data for search engines\n- Optimized images and assets\n- Fast loading times\n- Mobile-friendly design\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/amazing-feature`\n3. Commit changes: `git commit -m 'Add amazing feature'`\n4. Push to branch: `git push origin feature/amazing-feature`\n5. Open a Pull Request\n\n## 📜 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🆘 Support\n\nIf you have any questions or need help:\n\n1. Check the documentation above\n2. Search existing [Issues](https://github.com/iamdhakrey/terminal-portfolio/issues)\n3. Create a new issue if needed\n\n## 🙏 Acknowledgments\n\n- Built with modern web technologies\n- Inspired by terminal interfaces\n- Thanks to the open source community\n\n---\n\n⭐ **Star this repository if you found it helpful!**\n\n🐛 **Found a bug?** [Open an issue](https://github.com/iamdhakrey/terminal-portfolio/issues)\n\n💡 **Have a feature request?** [Start a discussion](https://github.com/iamdhakrey/terminal-portfolio/discussions)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamdhakrey%2Fterminal-portfolio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiamdhakrey%2Fterminal-portfolio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamdhakrey%2Fterminal-portfolio/lists"}