The activity feed shows the 8 most recent public events from the GitHub public events API, giving visitors an up-to-date view of active development. Events are fetched server-side and embedded in the initial page payload, so the feed is visible immediately without any client-side loading state.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/santiagonieto09/portafolio/llms.txt
Use this file to discover all available pages before exploring further.
ActivityFeed component
Source:src/components/portfolio/activity-feed.tsx
ActivityFeed accepts a pre-mapped list of activity items:
null when the items array is empty (e.g. when the GitHub API returns no public events). Otherwise it renders a <section> with a heading and an ordered list (<ol>) of ActivityRow sub-components.
Each ActivityRow renders a card with two columns:
Left column — Summary text (item.summary) in bold and the repository name with optional branch appended as {repoName}/{branch} in a monospace style.
Right column — A relative timestamp (useRelativeTime(item.createdAt)) hidden on mobile (hidden sm:inline) and an external-link button (<ExternalLink>) that opens item.repoUrl in a new tab. The aria-label on the button distinguishes between branch links (“Ver los commits de la rama en ”) and plain repository links (“Abrir el repositorio en GitHub”).
ActivityItem type
Defined insrc/domain/github/types.ts:
| Field | Description |
|---|---|
id | GitHub event ID — used as the React list key |
type | Raw GitHub event type string (e.g. "PushEvent") |
repoName | owner/repo short name from the event’s repo.name field |
repoUrl | Branch commits URL for push events; plain repository URL otherwise |
branch | Branch name for events that target a specific branch; null otherwise |
createdAt | ISO 8601 timestamp from the event |
summary | Human-readable description of the event (Spanish) |
Event types and summaries
ThedescribeEvent() server-side helper maps each raw GitHub event type to its Spanish summary string:
| Event type | Summary |
|---|---|
PushEvent | "{n} commit(s) publicados" — n is payload.commits.length |
CreateEvent | "Creó {ref_type}" — ref_type is payload.ref_type (e.g. "branch", "tag") |
ReleaseEvent | "Publicó el release {tag_name}" — tag_name from payload.release.tag_name |
WatchEvent | "Marcó el repositorio con una estrella" |
ForkEvent | "Hizo un fork del repositorio" |
PullRequestEvent | "Pull request {action}" — action from payload.action |
IssuesEvent | "Issue {action}" — action from payload.action |
| Other | Event type string with the "Event" suffix stripped (e.g. "DeleteEvent" → "Delete") |
Branch linking
ThebranchFrom() helper extracts a branch name from an event payload and constructs a contextual URL:
PushEvent— Branch is extracted frompayload.refby stripping therefs/heads/prefix (e.g.refs/heads/main→main). TherepoUrlis set tohttps://github.com/{repoName}/commits/{branch}so the link opens the commit history for that branch.CreateEventofref_type === "branch"— Branch ispayload.ref. URL is the branch commits page.PullRequestEvent— Branch is the base branch frompayload.pull_request.base.ref.- All other events —
branchisnullandrepoUrlis the plainhttps://github.com/{repoName}.
The GitHub events API returns up to 30 public events per request. The portfolio trims this to the 8 most recent (
.slice(0, 8)) to keep the feed concise. Private repository events and events from organisations are not included — only public user events are visible.