Skip to content
Guides and policiesView source on GitHub ↗

Reference implementation inventory

This inventory implements FGE-002. It identifies which parts of the reference site may inform Forge, which parts require configuration, and which parts must never enter a generated project.

Reference snapshot

The snapshot is an Astro static site using Tailwind CSS, DaisyUI, Catppuccin, Sveltia CMS, Vitest, Playwright, axe-core, Lighthouse, and GitHub Pages.

Classification rules

ClassificationMeaning
reusable-coreGeneral behavior that belongs in Forge or its default template after provenance and license requirements are satisfied.
configurable-exampleA useful pattern whose values, copy, branding, or enabled state must be replaced with generic configuration or seed data.
site-specificBehavior designed for the reference owner’s site; it is not part of the Forge v1 product contract.
excludePersonal, identifying, secret, unclear-license, or otherwise unsuitable material that must not enter Forge.

Classification does not grant permission to copy code. It records the desired product disposition.

License and provenance gate

The inspected snapshot contains no root LICENSE, COPYING, or NOTICE file, and its package.json has no license field. Therefore, the reference source must be treated as all rights reserved by default. Forge may use the inventory as an architectural specification, but must not copy or adapt source text from the reference repository until either:

  1. the relevant source is released under a license compatible with Forge’s MIT license; or
  2. the rights holder records explicit permission covering the reused files.

Until that gate is cleared, Forge implementations must be clean, original implementations based on the behavior described in the roadmap and ADRs. A future reuse change must record the reference commit, source paths, destination paths, whether the work was copied or adapted, the applicable license or permission, and any required notice.

Installed npm packages are dependencies, not copied source. Their own licenses must be reviewed through the lockfile and release process. GitHub Actions must be consumed by immutable commit reference under their respective licenses; the action implementations are not vendored.

The files under src/assets/covers/ identify Unsplash sources and the Unsplash License in src/assets/covers/ATTRIBUTION.md. They remain excluded from Forge; the attribution does not change the reference repository’s missing source-code license or make the images appropriate generic seed assets. Other photographs and the PDF in the snapshot do not contain a clear repository-level license and are also excluded.

Subsystem inventory

Every reusable-core or configurable-example row includes its intended Forge destination. Paths are relative to the Forge repository.

Application and routes

Reference pathsClassDisposition and future Forge location
src/layouts/BaseLayout.astro, src/components/ui/SeoHead.astroreusable-coreReimplement the document shell, metadata contract, canonical URL behavior, skip-link target, and global style hooks in templates/default/src/layouts/ and templates/default/src/components/seo/. All titles, URLs, and social defaults come from typed site configuration.
src/components/ui/{Badge,Card,Container,ContentMeta,PageHeader,Section,TagList}.astroreusable-coreReimplement accessible, typed primitives in templates/default/src/components/ui/. Preserve behavior, not reference-site class strings or copy.
src/components/navigation/{Navbar,Footer}.astroconfigurable-exampleReimplement semantic navigation in templates/default/src/components/navigation/; derive labels, links, branding, and social accounts from templates/default/src/config/site.ts.
src/components/blog/*, src/layouts/BlogLayout.astro, src/lib/blog.tsreusable-coreReimplement generic article cards, cover handling, table of contents, draft filtering, sorting, and article layout in templates/default/src/components/content/, templates/default/src/layouts/, and templates/default/src/lib/content/.
src/pages/{index,404,privacy}.astro, src/pages/blog/**configurable-exampleUse route structure and accessibility behavior as examples for templates/default/src/pages/; replace all copy and make privacy/analytics statements conditional on enabled features.
src/pages/rss.xml.tsconfigurable-exampleReimplement at templates/default/src/pages/rss.xml.ts only if the route decision retains RSS; derive metadata from site configuration and generic content.
src/components/home/*, src/data/home.tsconfigurable-exampleKeep only generic section patterns in templates/default/src/components/home/ and generic seed configuration. Exclude the reference biography, employers, claims, statistics, and toolkit selection.
src/components/resume/**, src/pages/resume/**, src/data/resume/**site-specificDo not include in the v1 template. Resume generation, JSON Resume exports, experience coverage, awards, and financial-scope behavior are outside the one-template v1 baseline.

Styling and assets

Reference pathsClassDisposition and future Forge location
src/styles/global.css, src/styles/article-classes.tsreusable-coreReimplement typography, focus, reduced-motion, content, and print-safe foundations in templates/default/src/styles/. Remove selectors that exist only for resume or reference-site components.
src/styles/print.cssconfigurable-exampleRetain generic print foundations in templates/default/src/styles/print.css; exclude resume-specific print layout.
src/themes/catppuccinTheme.*.ts, src/themes/site-theme.tsreusable-coreReimplement Latte, Frappe, Macchiato, and Mocha theme composition in templates/default/src/themes/ using the Catppuccin packages as dependencies. Preserve upstream attribution and license metadata required by those packages.
src/styles/cms-preview.cssreusable-coreReimplement the minimal CMS preview style bridge in templates/default/src/integrations/sveltia/; it must consume template theme tokens rather than reference branding.
public/favicon.svgconfigurable-exampleReplace with a new generic Forge placeholder at templates/default/public/favicon.svg; never copy reference branding.
src/assets/**, public/assets/**excludeDo not copy photographs, article covers, diagrams, posters, PDFs, or other media. Create new generic seed assets with recorded provenance and redistribution rights.

Content architecture and seed content

Reference pathsClassDisposition and future Forge location
src/lib/content-model/**reusable-coreUse as a behavioral reference for an original implementation in packages/content-model/src/core/. The package owns field and collection types, definition helpers, validation, and tests.
src/integrations/astro/{adapter,adapter.test}.tsreusable-coreUse as a behavioral reference for packages/content-model/src/astro/; expose it through @rm-industries/content-model/astro.
src/config/content-models/blog.tsconfigurable-exampleCreate a generic article declaration at templates/default/src/config/content-models/articles.ts using the published model package. Keep only fields required by the v1 content contract.
src/config/content-models/{registry,shared-fields}.tsreusable-coreReimplement registry and reusable declaration patterns in templates/default/src/config/content-models/. Site-specific collections must not enter the registry.
src/config/content-models/{experience,financial-scopes,skills}.tssite-specificExclude from v1. They support the personal resume domain rather than the generic article template.
src/content/blog/**excludeDo not copy articles, titles, dates, tags, links, or front matter. Add newly written generic seed articles under templates/default/src/content/.
src/content/{experience,financial-scopes,skills}/**excludeDo not copy personal employment history, program values, skill claims, or identifiers. These collections are not enabled in v1.

CMS

Reference pathsClassDisposition and future Forge location
src/integrations/sveltia/{adapter,adapter.test}.tsreusable-coreUse as a behavioral reference for an original adapter in packages/content-model/src/sveltia/; expose it through @rm-industries/content-model/sveltia. Core and both adapters ship as one package version.
src/integrations/sveltia/{config,config.test}.tsconfigurable-exampleReimplement site-level CMS composition in templates/default/src/integrations/sveltia/. Repository, title, logo, media paths, and backend values must derive from project configuration or explicit generator input. No token may be embedded.
src/pages/admin/index.astroreusable-coreReimplement the loader and accessible fallback at templates/default/src/pages/admin/index.astro; keep Sveltia initialization isolated from normal site routes.
src/integrations/sveltia/{previews,experience-preview}*site-specificExclude resume previews. Add a newly implemented generic article preview under templates/default/src/integrations/sveltia/previews/ only if it can share template tokens and generic model declarations.
Local-repository editing flow documented in README.mdconfigurable-exampleDocument the generic local workflow in templates/default/README.md without naming the reference account or repository.

Testing and quality tooling

Reference pathsClassDisposition and future Forge location
src/**/*.test.ts, vitest.config.ts, test-support/**reusable-coreReimplement unit and contract testing patterns beside their production code. Package adapter tests belong in packages/content-model/; template tests belong in templates/default/src/ and templates/default/test-support/. Replace all personal fixtures and assertions.
tests/site.spec.ts, playwright.config.tsconfigurable-exampleReimplement route, keyboard, metadata, axe, and analytics-state checks in templates/default/tests/. Assertions must consume generic configuration rather than reference names, URLs, posts, resume downloads, or measurement IDs.
.lighthouserc.jsonconfigurable-exampleEstablish evidence-based budgets for templates/default/.lighthouserc.json; do not assume the reference routes or thresholds without review.
oxfmt.config.ts, cspell.config.ts, .markdownlint.json, stylelint.config.ts, tsconfig.jsonconfigurable-exampleRecreate workspace-aware root configuration and standalone template configuration in their respective roots. Remove the personal spelling dictionary and reference-only exclusions.
package.json, package-lock.jsonconfigurable-exampleUse dependency and script coverage as input to the roadmap, then create Forge-owned manifests and lockfiles. Do not copy the reference package name, version, dependency ranges, or lockfile wholesale.

Project configuration and repository files

Reference pathsClassDisposition and future Forge location
src/data/site.ts, src/data/socials.tsconfigurable-exampleReplace coupled, resume-derived values with a typed, validated contract at templates/default/src/config/site.ts. Navigation, SEO, footer, sitemap, RSS, and CMS branding consume this contract.
astro.config.tsconfigurable-exampleReimplement static output, sitemap, Tailwind, and trailing-slash behavior in templates/default/astro.config.ts. The canonical URL must come from project configuration; the reference domain is excluded.
src/config/analytics.ts, src/components/ui/Analytics.astroconfigurable-exampleIf analytics remains in scope, make it optional and disabled by default under templates/default/src/integrations/analytics/. Never include the reference measurement ID.
.editorconfig, .gitignore, .vscode/**configurable-exampleRecreate repository and template hygiene from Forge requirements. Editor recommendations must be optional and contain no machine-specific paths.
README.mdconfigurable-exampleUse topic coverage as an input to new root and generated-project documentation. Do not copy personal descriptions, domains, repository names, or resume instructions.
CNAME, public/robots.txtexcludeNever copy the custom domain or domain-bearing robots content. Generate robots and sitemap locations from typed site configuration; do not generate CNAME unless the user supplies a domain.

Workflows and automation

Reference pathsClassDisposition and future Forge location
.github/actions/setup-project/action.ymlreusable-coreReimplement deterministic Node/npm setup in templates/default/.github/actions/setup-project/action.yml or inline it if that is simpler. Pin third-party actions to reviewed commit SHAs.
.github/workflows/project.ymlconfigurable-exampleReimplement generated-project CI at templates/default/.github/workflows/ci.yml after the final quality pipeline exists. Preserve least privilege, concurrency, clean installs, independent jobs, artifacts, and required gates; derive commands from template scripts.
.github/workflows/automation.ymlreusable-coreReimplement workflow linting and security checks under templates/default/.github/workflows/; keep immutable action pins and least-privilege permissions.
.github/workflows/security.ymlconfigurable-exampleReimplement CodeQL and dependency review under templates/default/.github/workflows/, subject to repository visibility and GitHub feature availability. Do not retain unused branch names.
.github/dependabot.ymlconfigurable-exampleCreate Forge-owned npm and Actions update groups at templates/default/.github/dependabot.yml; labels and cadence must match documented generated-project policy.

Mandatory exclusions

The following material is excluded even when it appears inside an otherwise reusable subsystem:

  • names, biography, contact details, social profiles, usernames, account names, and repository identifiers;
  • all resume, employment, education, award, interest, skill, project, program, and financial-scope data;
  • rahulmohandas.com, www.rahulmohandas.com, rahul0705, the CNAME file, and every canonical, sitemap, feed, CMS backend, or test value derived from them;
  • Google Analytics measurement ID G-K6P860TJ0W and all other analytics, telemetry, advertising, or verification identifiers;
  • tokens, credentials, private keys, environment files, repository secrets, personal access tokens, and any secret-like fixture values;
  • blog articles, resume exports, PDFs, photographs, cover images, diagrams, favicons, and other reference media;
  • reference-specific CMS branding, preview copy, filenames, test snapshots, spellcheck words, and route assertions; and
  • third-party material without an explicit compatible license and preserved attribution.

A heuristic scan of the inspected snapshot found the personal identifiers and analytics value listed above and did not find common committed private-key or provider-token signatures. That result is not evidence that the repository is free of secrets; Forge must copy no secret-bearing files and must run dedicated secret and personal-identifier scans at release checkpoints.

Provenance record for future reuse

No source has been copied into Forge by this inventory. When a later issue implements a reusable-core or configurable-example row, its pull request must add a provenance entry containing:

FieldRequired value
SourceRepository URL, immutable commit SHA, and exact source paths
DestinationExact Forge package or template paths
Methodoriginal, adapted, or copied
RightsSPDX license identifier or link to recorded permission
ChangesConcise description of the adaptation
NoticesAttribution or notice files that must be retained

If Method is adapted or copied, missing rights information blocks the change. Dependency installation records the package name and resolved version rather than a copied-source provenance entry.

Release-checkpoint verification

Before every release checkpoint, scan the proposed template, packed generator, and generated fixture—not only Git-tracked source—for at least:

  • Rahul, Mohandas, rahul0705, and rahulmohandas.com;
  • G-K6P860TJ0W and unexpected G-, UA-, or similar analytics identifiers;
  • reference employer, program, resume, repository, and asset names;
  • email addresses, telephone numbers, usernames, custom domains, and social profile URLs; and
  • private-key headers and provider-specific token signatures.

Any match must be removed or explicitly documented as a safe generic test fixture before release. The automated scan and its allowlist belong in the template-isolation and release-validation work; this document defines the minimum policy and known-reference baseline.