DOCUMENTATION

everything you need to build your portfolio

INSTALLATION

NPM

Install devfolio-page globally using npm or your preferred package manager.

npm install -g devfolio-page

Or use npx to run without installing:

npx devfolio-page init

REQUIREMENTS

RequirementVersionNotes
Node.js>=18.0.0LTS recommended
npm>=8.0.0Comes with Node.js

QUICK START

GET STARTED IN 5 STEPS

1

Install devfolio-page

npm install -g devfolio-page

Requires Node.js and npm. Don't have them? Install Node.js first.

2

Create your portfolio

devfolio-page init

Answer a few questions to create portfolio.yaml with your basic info

3

Add your content

cd my-portfolio

Open the folder in your editor (VS Code, Cursor, etc.) and add projects, experience, writing to portfolio.yaml. See portfolio structure for examples.

4

Render your site

devfolio-page render

Generates your site with all pages (home, projects, experiments, writing) in the site/ folder.

5

Preview with dev mode

devfolio-page dev

Opens at localhost:3000 with live reload. Edit portfolio.yaml and save to see updates instantly.

Ready to deploy? Upload the site/ folder to Vercel, Netlify, or GitHub Pages.

COMMANDS

devfolio-page init

Create a new portfolio folder

devfolio-page init

Interactive prompts will ask for:

  • Folder name (default: portfolio)
  • Name, title, location, email
  • Theme selection
  • Optional: GitHub, LinkedIn, Twitter, website

devfolio-page dev

Start development server with auto-rebuild

devfolio-page dev [file] [options]
OptionDescription
[file]YAML file (default: portfolio.yaml)
--port, -p <port>Dev server port (default: 3000)
--theme, -t <name>Theme to use (default: srcl)

Features:

  • In-memory builds (no site/ folder created)
  • Auto-rebuild on file changes
  • Watches portfolio.yaml and images/
  • Faster than render for development

devfolio-page validate

Validate a portfolio YAML file

devfolio-page validate <file>

Checks for:

  • Required fields (name, title, location, email, bio)
  • Valid date formats (YYYY-MM or YYYY-MM-DD)
  • Valid URLs and email addresses
  • Proper YAML structure

devfolio-page render

Generate static HTML from portfolio

devfolio-page render [file] [options]
OptionDescription
[file]YAML file (default: portfolio.yaml)
--theme, -t <name>Theme to use (default: srcl)
--output, -o <dir>Output directory (default: ./site)

YAML SCHEMA

META

Basic information about you.

FieldTypeRequiredDescription
namestringyesYour full name
titlestringyesYour role or title
locationstringyesCity, Country
timezonestringnoTimezone (e.g., UTC-5)

CONTACT

How people can reach you.

FieldTypeRequiredDescription
emailstringyesEmail address
websiteURLnoPersonal website
githubstringnoGitHub username
linkedinstringnoLinkedIn username
twitterstringnoTwitter/X handle

BIO

A short description of yourself. Supports multiline with | syntax.

bio: |
  Line one of your bio.
  Line two continues here.

ABOUT

Extended about section that generates a dedicated /about page.

FieldTypeRequiredDescription
shortstringnoBrief intro for homepage
longstringnoLonger bio with markdown support
about:
  short: Brief intro for homepage
  long: |
    Longer bio with markdown support.

    Multiple paragraphs work great here.

SECTIONS.EXPERIENCE

Array of work experiences.

FieldTypeRequiredDescription
companystringyesCompany name
rolestringyesYour role/title
date.startYYYY-MMyesStart date
date.endYYYY-MM | "present"yesEnd date or "present"
descriptionstringnoRole description
highlightsstring[]noKey achievements

SECTIONS.PROJECTS

Array of notable projects.

FieldTypeRequiredDescription
namestringyesProject name
descriptionstringnoShort description
urlURLnoProject URL
tagsstring[]noTechnologies used
featuredbooleannoHighlight this project

SECTIONS.SKILLS

Key-value pairs of skill categories.

skills:
  Languages: [TypeScript, Go, Python]
  Frameworks: [React, Next.js, Express]
  Tools: [Docker, Kubernetes, AWS]

SECTIONS.EDUCATION

Array of educational background.

FieldTypeRequiredDescription
institutionstringyesSchool/University name
degreestringyesDegree or certificate
date.startYYYY-MMnoStart date
date.endYYYY-MMnoEnd date
descriptionstringnoAdditional info

SECTIONS.WRITING

Array of articles, blog posts, or publications.

FieldTypeRequiredDescription
titlestringyesArticle title
urlURLyesLink to article
dateYYYY-MM-DDnoPublication date
publicationstringnoWhere published
featuredbooleannoHighlight this article

PROJECTS (RICH)

Top-level projects field for multi-page portfolios with dedicated case study pages.

FieldTypeRequiredDescription
idstringyesURL slug (e.g., /projects/my-project.html)
titlestringyesProject title
subtitlestringnoBrief tagline
featuredbooleannoShow on homepage
thumbnailpathnoThumbnail image
heropathnoHero image for project page
meta.yearstring|numbernoYear completed
meta.rolestringnoYour role
meta.timelinestringnoProject duration
meta.techstring[]noTechnologies used
meta.links.githubURLnoGitHub repository
meta.links.demoURLnoDemo link
meta.links.liveURLnoLive site
sectionsarraynoContent sections

Section types: overview, image, gallery, metrics, outcomes, process, code, demo, interactive

projects:
  - id: my-project
    title: My Project
    featured: true
    meta:
      year: 2024
      role: Lead Developer
      tech: [React, Node.js]
    sections:
      - type: overview
        content: |
          Project description here.
      - type: metrics
        data:
          - label: Users
            value: "10,000+"

EXPERIMENTS

Side projects and explorations.

FieldTypeRequiredDescription
titlestringyesExperiment title
descriptionstringnoBrief description
imagepathnoPreview image
githubURLnoRepository link
demoURLnoDemo link
tagsstring[]noTechnologies used
experiments:
  - title: Creative Coding
    description: Generative art experiments
    github: https://github.com/...
    tags: [p5.js, WebGL]

PAGES

Customize titles and descriptions for each page.

FieldTypeRequiredDescription
projects.titlestringnoProjects page heading
projects.descriptionstringnoProjects page subheading
about.titlestringnoAbout page heading
about.descriptionstringnoAbout page subheading
experiments.titlestringnoExperiments page heading
experiments.descriptionstringnoExperiments page subheading
writing.titlestringnoWriting page heading
writing.descriptionstringnoWriting page subheading
pages:
  projects:
    title: My Work
    description: A curated selection of projects.
  about:
    title: About Me
    description: Designer and developer.

THEMES

SRCL

Terminal aesthetic. Monospace fonts, dark theme, orange accents. Inspired by sacred.computer.

theme: srcl

MODERN

Clean and contemporary. Sans-serif typography, subtle shadows, professional feel.

theme: modern

DARK ACADEMIA

Scholarly aesthetic. Serif typography, warm browns, vintage academic feel.

theme: dark-academia

THEME SETTINGS

Configure theme behavior in your portfolio.yaml:

SettingTypeDefaultDescription
color_scheme"dark" | "light"darkDefault color scheme
show_gridbooleanfalseShow baseline grid overlay
enable_hotkeysbooleantrueEnable keyboard shortcuts
animate"none" | "subtle" | "full"subtleAnimation level

DEPLOYMENT

Deploy instantly with the Vercel CLI:

# Install Vercel CLI
npm install -g vercel

# Deploy
cd site
vercel

Or connect your GitHub repo for automatic deployments.