Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/content_update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ body:
attributes:
label: "Affected pages or sections"
description: "List routes, components, or assets that need updates."
placeholder: "Home hero copy, About bio, public/index.html gradient."
placeholder: "Home hero copy, About bio, public/fallback/index.html gradient."
validations:
required: true
- type: textarea
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/github-pages-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ permissions:
contents: read
pages: write
id-token: write
pull-requests: write

concurrency:
group: pages-preview-${{ github.event.pull_request.number || github.ref }}
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
- Privacy and legal copy should pull their “Last updated” value from `getBuildUpdatedAt()` so the date reflects the latest build automatically—never hardcode the date.
- Developing skills use a dotted accent pill—follow the existing `isDeveloping` pattern in `SkillsSection` when adding new skills.
- The contact form generates a `mailto:` draft; keep it client-only (no POST handlers) and preserve the copy-to-clipboard CTA.
- The fallback page in `public/index.html` should mirror the warm accent palette; update gradients/buttons there when the brand colors change.
- The fallback page in `public/fallback/index.html` should mirror the warm accent palette; update gradients/buttons there when the brand colors change.

## Testing Guidelines

Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Below are suggestions and quick checks to help you convert this repo into your o
- Important: this template includes a BSD-3-Clause `LICENSE` that must be preserved as-is in the source
when redistributing or publishing derived works (see `LICENSE.example` for how to add your own copyright
attribution without removing the original line).
- `public/index.html` and `src/data/*` — replace demo content with your personal content.
- `public/fallback/index.html` and `src/data/*` — replace demo content with your personal content.

- If you plan to accept outside contributions on your fork, add a `CODE_OF_CONDUCT.md`, a `PULL_REQUEST_TEMPLATE.md`, and/or an `ISSUE_TEMPLATE/` directory so contributors have clear expectations.

Expand Down
2 changes: 1 addition & 1 deletion LICENSE.example
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Choose the license that aligns with how you want others to use and contribute to

- Fork the repo.
- Update `LICENSE` (change copyright line and year).
- Update `README.md` and `public/index.html` with your site name and contact info.
- Update `README.md` and `public/fallback/index.html` with your site name and contact info.
- Replace `src/data/*` content with your portfolio data.
- Update `package.json` `name` and `license` fields.

Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@
"react-dom": "^19.2.0",
"tailwind-merge": "^3.3.1",
"tailwindcss": "^4.1.8",
"wrangler": "^4.16.0",
"zod": "^4.1.12"
"wrangler": "^4.16.0"
},
"devDependencies": {
"@astrojs/check": "^0.9.9",
Expand Down
2 changes: 1 addition & 1 deletion public/index.html → public/fallback/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<title>Something Went Wrong · Your Name</title>
<meta
name="description"
content="Fallback page for the template portfolio when the main application cannot load. Replace this content in public/index.html if desired."
content="Fallback page for the template portfolio when the main application cannot load. Replace this content in public/fallback/index.html if desired."
/>
<style>
@font-face {
Expand Down
2 changes: 1 addition & 1 deletion src/hooks/useRemoteData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const DATA_BASE_URL = resolveRemoteDataBaseUrl(
import.meta.env.VITE_REMOTE_DATA_URL as string | undefined,
);
const REMOTE_DATA_ENABLED = DATA_BASE_URL !== null;
const REMOTE_DATA_PATH = "/__remote-data";
const REMOTE_DATA_PATH = `${import.meta.env.BASE_URL}__remote-data`;

// LocalStorage namespace for cached remote data. Rename if you fork the template
// to avoid collisions with other apps in the browser.
Expand Down
2 changes: 2 additions & 0 deletions src/layouts/BaseLayout.astro
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const {
title = "Portfolio Starter",
description = "A modular portfolio starter built with Astro and React.",
} = Astro.props as Props;
const faviconHref = `${import.meta.env.BASE_URL}favicon.svg`;
---

<!doctype html>
Expand All @@ -18,6 +19,7 @@ const {
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content={description} />
<link rel="icon" type="image/svg+xml" href={faviconHref} />
<script is:inline>
(() => {
try {
Expand Down
6 changes: 3 additions & 3 deletions src/utils/navigation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
//
// The build tool embeds the configured base path (set via BASE_PATH in this
// template) into import.meta.env.BASE_URL, so we read it here to strip the prefix before
// matching routes and re-apply it before calling history.pushState.
// matching routes and re-apply it before calling window.location.assign.
//
// Template users: you do NOT need to change anything in this file.
// • Deploying to a root domain? Leave BASE_PATH unset. BASE_PATH will
Expand Down Expand Up @@ -55,8 +55,8 @@ function stripBasePath(pathname: string): string {
return pathname;
}

/** Prepend the deployment base path to an app-relative path before pushing to
* browser history. e.g. with BASE_PATH="/Portf": "/privacy-policy" →
/** Prepend the deployment base path to an app-relative path before assigning
* browser location. e.g. with BASE_PATH="/Portf": "/privacy-policy" →
* "/Portf/privacy-policy". Transparent no-op when no base path is set.
*/
function addBasePath(path: string): string {
Expand Down
7 changes: 3 additions & 4 deletions src/views/PrivacyPolicyPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -423,10 +423,9 @@ function PolicyIntro() {
<p className={cn(paragraphClass, "mt-4")}>
Your privacy matters. This Privacy Policy explains how the site owner
(replace the name below) collects, uses, and safeguards personal
information when you visit the deployed site, interact with the contact
form, or engage with analytics services. <AdminHint>Your Name</AdminHint>,
interact with the contact form, or engage with the analytics services that
power the site.
information when you visit the deployed site. <AdminHint>Your Name</AdminHint>{" "}
may collect additional information when you interact with the contact form
or engage with the analytics services that power the site.
</p>
);
}
Expand Down
Loading