Build your digital business card

Starcard is an Astro template: configure everything in your astro.config.mjs and deploy.

Getting Started

Clone or use the template, then configure via astro.config.mjs.

Quick Setup

  1. 1 Use the GitHub template or clone your repo
  2. 2 Install dependencies: pnpm install
  3. 3 Edit astro.config.mjs and update the Starcard integration options
  4. 4 Run pnpm dev to preview locally
  5. 5 Deploy (Vercel, Netlify, GitHub Pages, etc.)

Full astro.config.mjs example

import { defineConfig } from "astro/config";
import sitemap from "@astrojs/sitemap";
import starcard from "./src/integrations/starcard.js";

export default defineConfig({
  site: "https://example.com",
  integrations: [
    sitemap(),
    starcard({
      meta: {
        title: "Ava Thompson",
        description: "Product Designer & Frontend Developer",
        keywords: ["profile", "vcard", "portfolio", "links"],
        favicon: "/favicon.svg",
      },
      footer: { text: "© 2025 Ava Thompson" },
      profile: {
        displayName: "Ava Thompson",
        firstName: "Ava",
        middleName: "L.",
        lastName: "Thompson",
        title: "Senior Product Designer",
        company: "Studio North",
        companyUrl: "https://studionorth.example",
        avatarUrl: "https://avatars.githubusercontent.com/u/9919?v=4",
        avatarRounded: "full",
        email: "[email protected]",
        phone: "+1 415 555 0199",
        homePage: "https://ava.design",
        location: "San Francisco, USA",
        vcard: true,
        sections: [
          {
            order: 1,
            id: "socials",
            title: "Socials",
            icon: "share",
            items: [
              { id: "github", icon: "github", url: "https://github.com/ava" },
              { id: "linkedin", icon: "linkedin", url: "https://www.linkedin.com/in/ava" },
              { id: "x", icon: "x", url: "https://x.com/ava" },
            ],
          },
          {
            order: 2,
            id: "presence",
            title: "Presence",
            icon: "globe",
            items: [
              { id: "website", icon: "icloud", url: "https://ava.design" },
              { id: "youtube", icon: "youtube", url: "https://www.youtube.com/@ava" },
            ],
          },
          {
            order: 3,
            id: "support",
            title: "Support",
            icon: "buymeacoffee",
            items: [
              { id: "bmac", icon: "buymeacoffee", url: "https://buymeacoffee.com/ava" },
            ],
          },
        ],
      },
    }),
  ],
});

How it works

Minimal business card layout with smart link sharing.

Mobile behavior

Tapping any link opens a QR dialog so others can scan the link easily. There is also a link to show a QR code that generates a vCard for quick “Add to Contacts”. Each link has its own auto‑generated QR code.

Desktop behavior

Clicking a link opens it in a new tab. Hold Option/Alt or Ctrl while clicking to show the same QR dialog as on mobile.

Sections & items

Add multiple sections (e.g., Multimedia, Social, Presence). Each section and item supports an icon and a url. Use order to control display order.

Icons

Icons use Iconify’s Simple Icons set. Set icon to a Simple Icons name like github, linkedin, x, bluesky, substack, mastodon.

Icon Library

Starcard uses Iconify’s Simple Icons set for brands.

How to choose icons

  • Open Iconify – Simple Icons
  • Search for your brand and copy the name (e.g., github, linkedin)
  • Use the name in your config under icon

Notes

  • Names are lowercase; some aliases exist (e.g., twitterx)
  • Section icon and each item icon can differ
  • Icons render server-side; no extra setup required

Configuration Reference

All options live in the Starcard integration inside your Astro config.

Meta & Footer

Path Type Description
meta.title string Document title and site branding
meta.description string SEO description
meta.keywords string[] SEO keywords
meta.favicon string Path to favicon
footer.text string Footer copyright text

Profile

Field Type Required Description
displayNamestringyesPrimary name shown on the card
firstNamestringyesGiven name (used for vCard)
middleNamestringnoMiddle name(s)
lastNamestringyesFamily name (used for vCard)
titlestringnoRole or tagline
companystringnoOrganization name
companyUrlstring (url)noLink to organization
avatarUrlstring (url)noPhoto URL
avatarRounded"none" | "sm" | "md" | "lg" | "xl" | "full"noAvatar border radius preset
emailstring (email)noContact email
phonestringnoContact phone number
homePagestring (url)noPersonal website URL
locationstringnoCity, Country
vcardbooleannoEnable vCard QR link
sectionsSection[]noConfigurable content groups

Section

Field Type Required Description
ordernumbernoSort order (ascending)
idstringnoIdentifier (e.g., "socials")
titlestringnoSection title
iconstringnoIconify Simple Icons name
itemsSectionItem[]noLinks inside the section

SectionItem

Field Type Required Description
idstringnoIdentifier for the item
iconstringnoIconify Simple Icons name
urlstring (url)noTarget URL (QR is auto-generated)

Sections & Items

sections: [
  {
    order: 1,
    id: "socials",
    title: "Socials",
    icon: "social",
    items: [
      { id: "github", icon: "github", url: "https://github.com/you" },
      { id: "bluesky", icon: "bluesky", url: "https://bsky.app/profile/you" },
      { id: "x", icon: "x", url: "https://x.com/you" },
    ],
  },
  {
    order: 2,
    id: "presence",
    title: "Presence",
    icon: "globe",
    items: [
      { id: "website", icon: "icloud", url: "https://example.com" },
      { id: "youtube", icon: "youtube", url: "https://www.youtube.com/@your-channel" },
    ],
  },
];

Icons use Iconify Simple Icons. Browse names at Iconify – Simple Icons.

Tips & Best Practices

Keep config simple; sharing is one tap or one scan away.

Fast sharing

On touch devices, links show QR codes by default. On desktop, hold Option/Alt or Ctrl to show QR instead of opening a tab.

vCard

Enable profile.vcard to show a QR that encodes a vCard, so people can add you to Contacts instantly.

Icons

Prefer official brand names from Simple Icons. A few aliases are supported (e.g., twitterx).

Need Help?

Open an issue on GitHub or go back to the homepage.