Cherry.Portfolio.Profile (cherry v0.3.0)

Copy Markdown View Source

The person behind the portfolio: portfolio.yaml at the site root.

Holds identity for the timeline, CV, and Person JSON-LD — name (or handle), headline, location, links, avatar. Contact email is off by default (spam harvesting on public static pages is real); adding email: is the opt-in. No portfolio.yaml → no portfolio views.

Summary

Functions

Loads portfolio.yaml from the site root.

The profile schema, for introspection and docs.

Types

t()

@type t() :: %Cherry.Portfolio.Profile{
  avatar: String.t() | nil,
  cv: Cherry.CV.Settings.t(),
  email: String.t() | nil,
  headline: String.t() | nil,
  links: [Cherry.Portfolio.Link.t()],
  location: String.t() | nil,
  name: String.t(),
  updated: Date.t() | nil
}

Functions

load(root)

@spec load(Path.t()) :: {:ok, t() | nil} | {:error, String.t()}

Loads portfolio.yaml from the site root.

Returns {:ok, nil} when the file does not exist — the portfolio is simply absent, which is not an error.

schema()

@spec schema() :: keyword()

The profile schema, for introspection and docs.