AstroPortfolio

career-portfolio-template — Astro Portfolio Template

By nbakh16

A data-driven personal career portfolio template built on Astro, with content centralized in JSON files under src/data/, multiple built-in color themes and light/dark mode, and automatic generation of sitemap, robots.txt and llms.txt.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-03View source

What stands out

A quick read of the recorded project description.

01

Content is centralized in JSON files under src/data/, so updating personal profile and project data does not require modifying component code

02

src/config.ts provides built-in color schemes such as default, strategic, innovator and executive, and automatically handles light/dark mode switching

03

At build time, sitemap-index.xml and robots.txt are generated automatically, and a /llms.txt route outputs Markdown content for AI crawlers

04

SEO fields (title, description, language, job title, keywords, Twitter card, OG image) are configured uniformly in src/data/home.json

05

Uses Tailwind CSS and astro-icon (Iconify's Material Design Icons set); images placed under src/assets/ are automatically optimized by Astro

Template Details

This is a static portfolio template built with Astro for showcasing personal career history, skills and project highlights. The template emphasizes data-driven design: site information, project data and more are centralized in JSON files under src/data/, so content changes do not require modifying component code. Styling uses Tailwind CSS, icons are imported via astro-icon with the Iconify Material Design Icons set, and images placed under src/assets/ can be automatically optimized by Astro.

For configuration, src/config.ts provides a baseTheme option that can switch between built-in color schemes such as default, strategic, innovator and executive, and automatically handles the corresponding light/dark mode switching. SEO and AI readability fields (siteUrl, webpageTitle, description, lang, jobTitle, keywords, twitterHandle, ogImageUrl) are maintained in src/data/home.json; at build time, sitemap-index.xml and robots.txt are generated automatically, and a Markdown route for LLM crawlers is dynamically output via src/pages/llms.txt.ts.

Usage limitations: the README mentions a FastAPI backend but explicitly states that it can run without a backend, and that the open-source version is coming soon, so the current template does not include backend functionality. The repository uses the MIT license, and the free scope is limited to this version of the code; third-party assets such as demo images, fonts and icons must be checked separately under their respective licenses, and external services such as domains and hosting may incur additional costs.

AstroPortfolio

Is it right for your project?

Use Cases

  • Individual developers or job seekers building a static portfolio site to showcase career history, skills and project highlights
  • Portfolio projects that need to separate site copy and project data from code and maintain content through JSON files
  • Scenarios where the site should include SEO and AI readability configurations such as sitemap, robots.txt, Open Graph/Twitter cards and llms.txt
  • Personal sites that need to switch between multiple built-in color schemes and light/dark mode to quickly adjust the visual style

Suitable For

  • Front-end developers familiar with or willing to use the Astro and Node.js toolchain
  • Users who want to maintain portfolio content through JSON data files rather than page code
  • Authors of portfolio sites that need static generation and can be deployed to platforms such as Netlify
  • Developers who accept the MIT license terms and can independently verify third-party asset licenses

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    The README requires Node.js v22.12.0 or higher and mentions Astro v6; refer to the repository dependency list for specific versions

  2. 2

    Click Use this template on GitHub to create a new repository, then clone it, run npm install to install dependencies, and npm run dev to start the local development server (default localhost:4321)

  3. 3

    Edit the JSON files under src/data/ to update content, and modify baseTheme in src/config.ts to switch color schemes

  4. 4

    Before deployment, fill in fields such as siteUrl in src/data/home.json to ensure canonical, sitemap and OG image absolute links are correct

  5. 5

    The FastAPI backend mentioned in the README is not included in the current open-source version; it can run without a backend. Third-party assets such as demo images, fonts and icons must be checked under their respective licenses

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is limited to this version of the code and does not imply that external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use and distribution of this version of the code are permitted.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the complete MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • The README mentions a FastAPI backend but explicitly states that it can run without a backend, and that the open-source version is coming soon, so the current open-source version does not include backend functionality and only provides a front-end static template.
  • Using this template requires Astro v6 and Node.js v22.12.0 or higher installed locally, which is a toolchain environment requirement.
  • The README recommends installing the Inter font package via npm; third-party assets such as fonts must be checked separately under their respective licenses.
  • The README recommends installing the Space Grotesk font package via npm; third-party assets such as fonts must be checked separately under their respective licenses.
  • Icons are imported via Iconify's Material Design Icons set; icon assets must be checked separately under their respective licenses.
  • The README uses Netlify as a deployment example; external services such as domains and hosting may incur additional costs.
  • Demo images, fonts, icons and other third-party assets must be checked under their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments or AI may incur additional costs.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

**Backend:** [FastAPI](https://fastapi.tiangolo.com/) *(Works without backend — open source release coming soon)*

Original README

Make sure you have **Astro v6** and **Node.js** (v22.12.0 or higher) installed on your machine.

Original README

Inter font: `npm install @fontsource-variable/inter`

Original README

Space Grotesk font: `npm install @fontsource-variable/space-grotesk`

Original README

Material Desing Icons: `npm install @iconify-json/mdi`

Original README

**Deployment:** [Netlify](https://www.netlify.com)

Original README
https://github.com/nbakh16/career-portfolio-template/blob/master/LICENSEhttps://github.com/nbakh16/career-portfolio-template/blob/master/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-03. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
Astro Themes
Documentation and maintenance reference score
More documented · 87 / 100
Technologies
Astro
Website type
Portfolio
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-09-05
Screenshot last checked
2026-10-03

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Astro as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Review declaration: [email protected] · 2026-10-04

Inspect the recorded source material

SHA-256: 4463b8c59d8c55a8735e8f5c14809e9235499e96006937497f90c4fda6a637eb

2026-10-03T15:39:29.138Z

Source file / repository
# CareerPortfolio: Data-Driven Astro SSG
Live Demo: [careerportofio.netlify.app](https://careerportofio.netlify.app)

[![Astro](https://img.shields.io/badge/Astro-FF5D01?logo=astro&logoColor=white)](https://astro.build/)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
[![Contributions Welcome](https://img.shields.io/badge/🤝_Contributions-Welcome-blue)](CONTRIBUTING.md)

A high-performance, responsive portfolio built with **Astro**, **Tailwind CSS**, and **Native Browser Animations**. Designed to be 100% data-driven and easy to customize as a reusable template.

## 🌟 Highlights
- **Zero-JS by Default:** Leveraging Astro's islands architecture.
- **JSON-First:** Update your information in `src/data/` without touching any code.
- **SEO & AI Ready:** Auto-generated `sitemap.xml`, `robots.txt`, and `/llms.txt` endpoint for AI/LLM crawlers, full Open Graph/Twitter Card support and JSON-LD structured data.
- **Built-in Themes**: Switch between multiple professional color palettes and light/dark modes from a single config file.
- **Fully Responsive:** Optimized for mobile, tablet, and desktop.
- **Performance:** Optimized for perfect Lighthouse scores.

## 🛠️ Tech Stack
- **Frontend:** [Astro](https://astro.build/) (Static Site Generation)
- **Styling:** [Tailwind CSS](https://tailwindcss.com/)
- **Icons:** [Iconify](https://iconify.design/) via `astro-icon`
- **Deployment:** [Netlify](https://www.netlify.com)
- **Backend:** [FastAPI](https://fastapi.tiangolo.com/) *(Works without backend — open source release coming soon)*

## 🚀 Getting Started
Follow these instructions to get a local copy up and running.

### Prerequisites
Make sure you have **Astro v6** and **Node.js** (v22.12.0 or higher) installed on your machine.

### Installation
1. Click **Use this template** on this repository.
2. Choose **Create a new repository**.
3. Clone your new repository: `git clone <your-repo-url>`
4. Navigate to your repo: `cd <your-repo-name>`
5. Install dependencies: `npm install`
6. Start development server: `npm run dev`
7. Update your content in `/src/data/`
8. Build and deploy on your preferred platform


## 🛠️ How to Customize
To make this portfolio yours, simply edit the JSON files in `src/data/`.

### 🎨 Switching Themes
This template comes with multiple built-in color palettes. To change the theme of your portfolio, open `src/config.ts` and update the `baseTheme` variable to one of the available options:

```typescript
export const SITE_CONFIG = {
  // Options: 'default', 'strategic', 'innovator', 'executive'
  baseTheme: 'default', 
};
```
*(The template will automatically handle the dark/light mode toggles for whichever base theme you choose!)*

### 📁 Directory Structure
```
├── public/              # Global static assets (placeholder.jpg, favicon)
├── src/
│   ├── assets/          # Project & Profile images (Supports automatic Astro optimization)
│   ├── components/      # Reusable Astro components
│   ├── data/            # JSON files for project data
│   ├── layouts/         # Layout templates with Meta tags
│   ├── pages/           # Site routes (index.astro)
│   └── styles/          # Global CSS styles
│   └── config.ts        # Global site configuration
├── astro.config.mjs     # Astro configuration
└── tsconfig.json        # TypeScript configuration
```

### 🔍 SEO & AI Optimization
All SEO and AI metadata is driven from `src/data/home.json`. Update the fields below to improve search engine, social media and AI crawler visibility:

| Field | Description |
| :------------ | :----------------------------------------------------------- |
| `siteUrl` | Your deployed domain (e.g. `https://yourname.dev`). Required for canonical URLs, sitemap and absolute OG image links. |
| `webpageTitle` | Page tab title and Open Graph title tag. |
| `description` | Primary intro summary used for meta description, Open Graph, Twitter preview cards and `/llms.txt`. |
| `lang` | Page language code (e.g. `en`, `fr`, `de`). Sets the `<html lang>` attribute. |
| `jobTitle` | Your role — included in JSON-LD structured data shown to search engines and `/llms.txt`. |
| `keywords` | Comma-separated keywords for the `<meta name="keywords">` tag. |
| `twitterHandle` | Your Twitter/X username (with or without `@`). Enables Twitter Card attribution. |
| `ogImageUrl` | Path to your Open Graph preview image. Use a **1200×630 px** image for best results across all platforms. |

> **Automatic Features:**
> - `sitemap-index.xml` & `robots.txt`: Auto-generated at build time.
> - `/llms.txt`: Dynamically generated Markdown portfolio route for AI agents and LLM web crawlers (powered by [`src/pages/llms.txt.ts`](file:///Users/nabil/_projects/astro-trial/career-portfolio-template/src/pages/llms.txt.ts)).



### 📚 Useful commands and links for reference:

| Command                   | Action                                           |
| :------------------------ | :----------------------------------------------- |
| `npm install`             | Installs dependencies                            |
| `npm run dev`             | Starts local dev server at `localhost:4321`      |
| `npm run build`           | Build your production site to `./dist/`          |
| `npm run preview`         | Preview your build locally, before deploying     |
| `npm run astro ...`       | Run CLI commands like `astro add`, `astro check` |
| `npm run astro -- --help` | Get help using the Astro CLI                     |

Tailwind CSS: `npx astro add tailwind`

Inter font: `npm install @fontsource-variable/inter` 

Space Grotesk font: `npm install @fontsource-variable/space-grotesk`

Astro-icon: `npx astro add astro-icon`

Material Desing Icons: `npm install @iconify-json/mdi`

https://docs.astro.build/en/guides/styling/#add-tailwind-4

https://www.astroicon.dev

https://icon-sets.iconify.design/mdi/?category=Material

## 🤝 Contributing
Contributions are welcome!  
Please read the [Contributing Guide](CONTRIBUTING.md) before opening a PR.

## 📝 License
This project is licensed under the [MIT License](LICENSE)
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.