mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-10-02 09:44:26 +10:00
chore: prepare repository migration and Docker Build Cloud publishing
This commit is contained in:
@@ -20,8 +20,8 @@
|
||||
"url": "https://rxresu.me"
|
||||
},
|
||||
"repositoryUrl": {
|
||||
"url": "https://github.com/amruthpillai/reactive-resume",
|
||||
"wellKnown": "https://github.com/amruthpillai/reactive-resume/blob/main/.github/.well-known/funding-manifest-urls"
|
||||
"url": "https://github.com/reactive-resume/app",
|
||||
"wellKnown": "https://github.com/reactive-resume/app/blob/main/.github/.well-known/funding-manifest-urls"
|
||||
},
|
||||
"licenses": ["spdx:MIT"],
|
||||
"tags": ["data", "design", "productivity", "resume-builder"]
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Questions and support
|
||||
url: https://github.com/amruthpillai/reactive-resume/discussions/categories/q-a
|
||||
url: https://github.com/reactive-resume/app/discussions/categories/q-a
|
||||
about: Get help with setup, configuration, and using Reactive Resume.
|
||||
- name: Security vulnerability
|
||||
url: https://github.com/amruthpillai/reactive-resume/security/advisories/new
|
||||
url: https://github.com/reactive-resume/app/security/advisories/new
|
||||
about: Report security vulnerabilities privately.
|
||||
|
||||
@@ -13,7 +13,8 @@ concurrency:
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
IMAGE: ${{ github.repository }}
|
||||
DOCKERHUB_IMAGE: amruthpillai/reactive-resume
|
||||
GHCR_IMAGE: ${{ github.repository }}
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
@@ -59,15 +60,18 @@ jobs:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Setup Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Setup Docker Build Cloud
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
driver: cloud
|
||||
endpoint: amruthpillai/default
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
@@ -80,8 +84,8 @@ jobs:
|
||||
uses: docker/metadata-action@v6
|
||||
with:
|
||||
images: |
|
||||
ghcr.io/${{ env.IMAGE }}
|
||||
docker.io/${{ env.IMAGE }}
|
||||
ghcr.io/${{ env.GHCR_IMAGE }}
|
||||
docker.io/${{ env.DOCKERHUB_IMAGE }}
|
||||
tags: |
|
||||
type=sha,prefix=sha-,suffix=-${{ matrix.arch }}
|
||||
|
||||
@@ -97,8 +101,6 @@ jobs:
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
annotations: ${{ steps.meta.outputs.annotations }}
|
||||
cache-from: type=gha,scope=${{ env.IMAGE }}-${{ matrix.arch }}
|
||||
cache-to: type=gha,mode=max,scope=${{ env.IMAGE }}-${{ matrix.arch }}
|
||||
|
||||
- name: Export digest
|
||||
run: |
|
||||
@@ -176,8 +178,8 @@ jobs:
|
||||
uses: docker/metadata-action@v6
|
||||
with:
|
||||
images: |
|
||||
ghcr.io/${{ env.IMAGE }}
|
||||
docker.io/${{ env.IMAGE }}
|
||||
ghcr.io/${{ env.GHCR_IMAGE }}
|
||||
docker.io/${{ env.DOCKERHUB_IMAGE }}
|
||||
tags: |
|
||||
type=sha,prefix=sha-
|
||||
type=raw,value=nightly,enable=${{ needs.mode.outputs.nightly == 'true' }}
|
||||
@@ -207,14 +209,14 @@ jobs:
|
||||
--annotation "index:org.opencontainers.image.vendor=Amruth Pillai" \
|
||||
--annotation "index:org.opencontainers.image.url=https://rxresu.me" \
|
||||
--annotation "index:org.opencontainers.image.documentation=https://docs.rxresu.me" \
|
||||
--annotation "index:org.opencontainers.image.source=https://github.com/amruthpillai/reactive-resume" \
|
||||
--annotation "index:org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}" \
|
||||
--annotation "index:org.opencontainers.image.version=${{ steps.version.outputs.version }}" \
|
||||
$(printf 'ghcr.io/${{ env.IMAGE }}@sha256:%s ' *) \
|
||||
$(printf 'docker.io/${{ env.IMAGE }}@sha256:%s ' *)
|
||||
$(printf 'ghcr.io/${{ env.GHCR_IMAGE }}@sha256:%s ' *) \
|
||||
$(printf 'docker.io/${{ env.DOCKERHUB_IMAGE }}@sha256:%s ' *)
|
||||
|
||||
# Get the digest of the multi-arch manifest
|
||||
GHCR_DIGEST=$(docker buildx imagetools inspect ghcr.io/${{ env.IMAGE }}:${FINAL_TAG} --format '{{json .Manifest.Digest}}' | tr -d '"')
|
||||
DOCKER_DIGEST=$(docker buildx imagetools inspect docker.io/${{ env.IMAGE }}:${FINAL_TAG} --format '{{json .Manifest.Digest}}' | tr -d '"')
|
||||
GHCR_DIGEST=$(docker buildx imagetools inspect ghcr.io/${{ env.GHCR_IMAGE }}:${FINAL_TAG} --format '{{json .Manifest.Digest}}' | tr -d '"')
|
||||
DOCKER_DIGEST=$(docker buildx imagetools inspect docker.io/${{ env.DOCKERHUB_IMAGE }}:${FINAL_TAG} --format '{{json .Manifest.Digest}}' | tr -d '"')
|
||||
echo "final_tag=$FINAL_TAG" >> "$GITHUB_OUTPUT"
|
||||
echo "ghcr_digest=$GHCR_DIGEST" >> "$GITHUB_OUTPUT"
|
||||
echo "docker_digest=$DOCKER_DIGEST" >> "$GITHUB_OUTPUT"
|
||||
@@ -225,15 +227,15 @@ jobs:
|
||||
- name: Sign images with Cosign
|
||||
run: |
|
||||
# Sign GHCR image
|
||||
cosign sign --yes ghcr.io/${{ env.IMAGE }}@${{ steps.manifest.outputs.ghcr_digest }}
|
||||
cosign sign --yes ghcr.io/${{ env.GHCR_IMAGE }}@${{ steps.manifest.outputs.ghcr_digest }}
|
||||
|
||||
# Sign Docker Hub image
|
||||
cosign sign --yes docker.io/${{ env.IMAGE }}@${{ steps.manifest.outputs.docker_digest }}
|
||||
cosign sign --yes docker.io/${{ env.DOCKERHUB_IMAGE }}@${{ steps.manifest.outputs.docker_digest }}
|
||||
|
||||
- name: Inspect image
|
||||
run: |
|
||||
docker buildx imagetools inspect ghcr.io/${{ env.IMAGE }}:${{ steps.manifest.outputs.final_tag }}
|
||||
docker buildx imagetools inspect docker.io/${{ env.IMAGE }}:${{ steps.manifest.outputs.final_tag }}
|
||||
docker buildx imagetools inspect ghcr.io/${{ env.GHCR_IMAGE }}:${{ steps.manifest.outputs.final_tag }}
|
||||
docker buildx imagetools inspect docker.io/${{ env.DOCKERHUB_IMAGE }}:${{ steps.manifest.outputs.final_tag }}
|
||||
|
||||
- name: Redeploy Stack
|
||||
if: ${{ needs.mode.outputs.release == 'true' }}
|
||||
|
||||
@@ -31,7 +31,7 @@ Boundaries: code/commits/PRs written normal.
|
||||
|
||||
## Agent skills
|
||||
|
||||
- Issues and specs: GitHub Issues for `amruthpillai/reactive-resume`. See `docs/agents/issue-tracker.md`.
|
||||
- Issues and specs: GitHub Issues for `reactive-resume/app`. See `docs/agents/issue-tracker.md`.
|
||||
- Domain docs use a multi-context layout. See `docs/agents/domain.md`.
|
||||
|
||||
## Overview
|
||||
|
||||
+1
-1
@@ -48,7 +48,7 @@ LABEL org.opencontainers.image.description="A free and open-source resume builde
|
||||
LABEL org.opencontainers.image.vendor="Amruth Pillai"
|
||||
LABEL org.opencontainers.image.url="https://rxresu.me"
|
||||
LABEL org.opencontainers.image.documentation="https://docs.rxresu.me"
|
||||
LABEL org.opencontainers.image.source="https://github.com/amruthpillai/reactive-resume"
|
||||
LABEL org.opencontainers.image.source="https://github.com/reactive-resume/app"
|
||||
|
||||
ENV NODE_ENV="production" \
|
||||
PORT=3000 \
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<img src="https://img.shields.io/github/package-json/v/amruthpillai/reactive-resume?style=flat-square" alt="Reactive Resume Version">
|
||||
<img src="https://img.shields.io/github/stars/amruthpillai/Reactive-Resume?style=flat-square" alt="GitHub Stars">
|
||||
<img src="https://img.shields.io/github/license/amruthpillai/Reactive-Resume?style=flat-square" alt="License" />
|
||||
<img src="https://img.shields.io/github/package-json/v/reactive-resume/app?style=flat-square" alt="Reactive Resume Version">
|
||||
<img src="https://img.shields.io/github/stars/reactive-resume/app?style=flat-square" alt="GitHub Stars">
|
||||
<img src="https://img.shields.io/github/license/reactive-resume/app?style=flat-square" alt="License" />
|
||||
<img src="https://img.shields.io/docker/pulls/amruthpillai/reactive-resume?style=flat-square" alt="Docker Pulls" />
|
||||
<a href="https://discord.gg/aSyA5ZSxpb"><img src="https://img.shields.io/discord/1173518977851473940?style=flat-square&label=discord" alt="Discord" /></a>
|
||||
<a href="https://crowdin.com/project/reactive-resume"><img src="https://badges.crowdin.net/reactive-resume/localized.svg?style=flat-square" alt="Crowdin" /></a>
|
||||
@@ -149,7 +149,7 @@ The quickest way to run Reactive Resume locally:
|
||||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone --depth=1 https://github.com/amruthpillai/reactive-resume.git
|
||||
git clone --depth=1 https://github.com/reactive-resume/app.git reactive-resume
|
||||
cd reactive-resume
|
||||
|
||||
# Start all services
|
||||
@@ -202,8 +202,8 @@ Pull the latest image from Docker Hub or GitHub Container Registry:
|
||||
# Docker Hub
|
||||
docker pull amruthpillai/reactive-resume:latest
|
||||
|
||||
# GitHub Container Registry
|
||||
docker pull ghcr.io/amruthpillai/reactive-resume:latest
|
||||
# GitHub Container Registry (after migration availability is confirmed)
|
||||
docker pull ghcr.io/reactive-resume/app:latest
|
||||
```
|
||||
|
||||
See the [self-hosting guide](https://docs.rxresu.me/self-hosting/docker) for complete instructions.
|
||||
@@ -225,17 +225,17 @@ Other ways to support:
|
||||
|
||||
- Star this repository
|
||||
- Report reproducible bugs and suggest actionable features
|
||||
- Help other users in [GitHub Discussions](https://github.com/amruthpillai/reactive-resume/discussions/categories/q-a)
|
||||
- Help other users in [GitHub Discussions](https://github.com/reactive-resume/app/discussions/categories/q-a)
|
||||
- Improve documentation
|
||||
- Help with translations
|
||||
|
||||
## Star History
|
||||
|
||||
<a href="https://www.star-history.com/?repos=amruthpillai%2Freactive-resume&type=date&legend=top-left">
|
||||
<a href="https://www.star-history.com/?repos=reactive-resume/app&type=date&legend=top-left">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=amruthpillai/reactive-resume&type=date&theme=dark&legend=top-left&sealed_token=QmaOn4Ech499R6kpQe8ONn911UjGUaJfQBT0MXlQLU9hTo-Ie7lTxIILWbBvmtzDGHk7ziWKN_N5iM5mgP8widn_FGHd9-PHNokPtSji8XLgbFpqatgyqIDPnOys-IhO40W3J0HeH07FL-Q8Bq6ArRk3LDtJDwjh4m0ya-2L59ULb7BaqxkSDuCytkCr" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=amruthpillai/reactive-resume&type=date&legend=top-left&sealed_token=QmaOn4Ech499R6kpQe8ONn911UjGUaJfQBT0MXlQLU9hTo-Ie7lTxIILWbBvmtzDGHk7ziWKN_N5iM5mgP8widn_FGHd9-PHNokPtSji8XLgbFpqatgyqIDPnOys-IhO40W3J0HeH07FL-Q8Bq6ArRk3LDtJDwjh4m0ya-2L59ULb7BaqxkSDuCytkCr" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=amruthpillai/reactive-resume&type=date&legend=top-left&sealed_token=QmaOn4Ech499R6kpQe8ONn911UjGUaJfQBT0MXlQLU9hTo-Ie7lTxIILWbBvmtzDGHk7ziWKN_N5iM5mgP8widn_FGHd9-PHNokPtSji8XLgbFpqatgyqIDPnOys-IhO40W3J0HeH07FL-Q8Bq6ArRk3LDtJDwjh4m0ya-2L59ULb7BaqxkSDuCytkCr" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=reactive-resume/app&type=date&theme=dark&legend=top-left&sealed_token=QmaOn4Ech499R6kpQe8ONn911UjGUaJfQBT0MXlQLU9hTo-Ie7lTxIILWbBvmtzDGHk7ziWKN_N5iM5mgP8widn_FGHd9-PHNokPtSji8XLgbFpqatgyqIDPnOys-IhO40W3J0HeH07FL-Q8Bq6ArRk3LDtJDwjh4m0ya-2L59ULb7BaqxkSDuCytkCr" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=reactive-resume/app&type=date&legend=top-left&sealed_token=QmaOn4Ech499R6kpQe8ONn911UjGUaJfQBT0MXlQLU9hTo-Ie7lTxIILWbBvmtzDGHk7ziWKN_N5iM5mgP8widn_FGHd9-PHNokPtSji8XLgbFpqatgyqIDPnOys-IhO40W3J0HeH07FL-Q8Bq6ArRk3LDtJDwjh4m0ya-2L59ULb7BaqxkSDuCytkCr" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=reactive-resume/app&type=date&legend=top-left&sealed_token=QmaOn4Ech499R6kpQe8ONn911UjGUaJfQBT0MXlQLU9hTo-Ie7lTxIILWbBvmtzDGHk7ziWKN_N5iM5mgP8widn_FGHd9-PHNokPtSji8XLgbFpqatgyqIDPnOys-IhO40W3J0HeH07FL-Q8Bq6ArRk3LDtJDwjh4m0ya-2L59ULb7BaqxkSDuCytkCr" />
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
@@ -251,7 +251,7 @@ Every contribution helps, whether it is a typo fix or a new feature.
|
||||
|
||||
See the [development setup guide](https://docs.rxresu.me/contributing/development) for how to run the project locally.
|
||||
|
||||
Maintainers review the [`status: needs triage` queue](https://github.com/amruthpillai/reactive-resume/issues?q=is%3Aissue+is%3Aopen+label%3A%22status%3A+needs+triage%22)
|
||||
Maintainers review the [`status: needs triage` queue](https://github.com/reactive-resume/app/issues?q=is%3Aissue+is%3Aopen+label%3A%22status%3A+needs+triage%22)
|
||||
weekly. Triaged bugs become `status: confirmed`; feature proposals become `status: accepted`; reports that need details become
|
||||
`status: needs info`.
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ export async function generateOpenApiSpec({ appUrl, version }: GenerateOpenApiSp
|
||||
title: "Reactive Resume",
|
||||
version,
|
||||
description: "Reactive Resume API",
|
||||
license: { name: "MIT", url: "https://github.com/amruthpillai/reactive-resume/blob/main/LICENSE" },
|
||||
license: { name: "MIT", url: "https://github.com/reactive-resume/app/blob/main/LICENSE" },
|
||||
contact: { name: "Amruth Pillai", email: "hello@amruthpillai.com", url: "https://amruthpillai.com" },
|
||||
},
|
||||
servers: [{ url: `${appUrl}/api/openapi` }],
|
||||
|
||||
@@ -127,13 +127,13 @@ function createRootSeoMarkup(canonicalUrl: string) {
|
||||
price: "0",
|
||||
priceCurrency: "USD",
|
||||
},
|
||||
codeRepository: "https://github.com/amruthpillai/reactive-resume",
|
||||
codeRepository: "https://github.com/reactive-resume/app",
|
||||
},
|
||||
{
|
||||
"@type": "Project",
|
||||
name: "Reactive Resume",
|
||||
url: canonicalUrl,
|
||||
sameAs: ["https://github.com/amruthpillai/reactive-resume"],
|
||||
sameAs: ["https://github.com/reactive-resume/app"],
|
||||
},
|
||||
{
|
||||
"@type": "FAQPage",
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
"url": "https://rxresu.me"
|
||||
},
|
||||
"repositoryUrl": {
|
||||
"url": "https://github.com/amruthpillai/reactive-resume",
|
||||
"wellKnown": "https://github.com/amruthpillai/reactive-resume/blob/main/.github/.well-known/funding-manifest-urls"
|
||||
"url": "https://github.com/reactive-resume/app",
|
||||
"wellKnown": "https://github.com/reactive-resume/app/blob/main/.github/.well-known/funding-manifest-urls"
|
||||
},
|
||||
"licenses": ["spdx:MIT"],
|
||||
"tags": ["data", "design", "productivity", "resume-builder"]
|
||||
|
||||
@@ -42,7 +42,7 @@ describe("GithubStarsButton", () => {
|
||||
it("renders an anchor pointing at the project repo with rel=noopener noreferrer and target=_blank", () => {
|
||||
renderButton();
|
||||
const link = screen.getByRole("button") as HTMLAnchorElement;
|
||||
expect(link.href).toBe("https://github.com/amruthpillai/reactive-resume");
|
||||
expect(link.href).toBe("https://github.com/reactive-resume/app");
|
||||
expect(link.target).toBe("_blank");
|
||||
expect(link.rel).toBe("noopener noreferrer");
|
||||
});
|
||||
|
||||
@@ -20,7 +20,7 @@ export function GithubStarsButton() {
|
||||
render={
|
||||
<a
|
||||
target="_blank"
|
||||
href="https://github.com/amruthpillai/reactive-resume"
|
||||
href="https://github.com/reactive-resume/app"
|
||||
aria-label={ariaLabel}
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
|
||||
@@ -24,7 +24,7 @@ describe("Copyright", () => {
|
||||
it("renders the MIT license link", () => {
|
||||
renderCopyright();
|
||||
const link = screen.getByRole("link", { name: "MIT" });
|
||||
expect(link.getAttribute("href")).toBe("https://github.com/AmruthPillai/Reactive-Resume/blob/main/LICENSE");
|
||||
expect(link.getAttribute("href")).toBe("https://github.com/reactive-resume/app/blob/main/LICENSE");
|
||||
expect(link.getAttribute("rel")).toBe("noopener noreferrer");
|
||||
});
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ export function Copyright({ className, ...props }: Props) {
|
||||
<Trans>
|
||||
Licensed under{" "}
|
||||
<a
|
||||
href="https://github.com/AmruthPillai/Reactive-Resume/blob/main/LICENSE"
|
||||
href="https://github.com/reactive-resume/app/blob/main/LICENSE"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="font-medium underline underline-offset-2"
|
||||
|
||||
@@ -21,7 +21,7 @@ import "./styles.css";
|
||||
|
||||
const ExportPlayground = lazy(() => import("./export-playground"));
|
||||
const AtsPlayground = lazy(() => import("./ats-playground"));
|
||||
const githubUrl = "https://github.com/amruthpillai/reactive-resume";
|
||||
const githubUrl = "https://github.com/reactive-resume/app";
|
||||
const buttonClass =
|
||||
"inline-flex min-h-[52px] items-center justify-center gap-3 rounded-[4px] border border-[#f1f0eb] bg-[#f1f0eb] px-[19px] py-[14px] text-[14px] font-[550] text-[#151516] [transition:background-color_150ms_ease,transform_150ms_cubic-bezier(0.23,1,0.32,1)] hover:bg-[#d9d8d2] active:transform-[scale(0.97)] max-[540px]:min-h-[49px] max-[540px]:gap-[18px] max-[540px]:px-[15px] max-[540px]:py-3 max-[540px]:text-[13px]";
|
||||
const brandClass = "inline-flex shrink-0 items-center gap-[11px] font-[550] tracking-[-0.04em] max-[540px]:gap-2";
|
||||
|
||||
@@ -14,7 +14,7 @@ import { m } from "motion/react";
|
||||
import { cn } from "@reactive-resume/utils/style";
|
||||
import { wrap } from "./classes";
|
||||
|
||||
const githubUrl = "https://github.com/amruthpillai/reactive-resume";
|
||||
const githubUrl = "https://github.com/reactive-resume/app";
|
||||
const licenseUrl = `${githubUrl}/blob/main/LICENSE`;
|
||||
|
||||
type FooterLink = { label: string } & (
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
const productionRootUrl = "https://rxresu.me/";
|
||||
const appName = "Reactive Resume";
|
||||
const repositoryUrl = "https://github.com/amruthpillai/reactive-resume";
|
||||
const repositoryUrl = "https://github.com/reactive-resume/app";
|
||||
|
||||
type JsonLd = Record<string, unknown>;
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ describe("Footer", () => {
|
||||
it("renders social media icon links to GitHub, LinkedIn, and X", () => {
|
||||
const { container } = renderFooter();
|
||||
const hrefs = Array.from(container.querySelectorAll<HTMLAnchorElement>("a")).map((a) => a.href);
|
||||
expect(hrefs.some((h) => h.includes("github.com/amruthpillai/reactive-resume"))).toBe(true);
|
||||
expect(hrefs.some((h) => h.includes("github.com/reactive-resume/app"))).toBe(true);
|
||||
expect(hrefs.some((h) => h.includes("linkedin.com/in/amruthpillai"))).toBe(true);
|
||||
expect(hrefs.some((h) => h.includes("x.com/KingOKings"))).toBe(true);
|
||||
});
|
||||
|
||||
@@ -27,19 +27,19 @@ type SocialLink = {
|
||||
const getResourceLinks = (): FooterLinkItem[] => [
|
||||
{ url: "https://docs.rxresu.me", label: t`Documentation` },
|
||||
{ url: "https://opencollective.com/reactive-resume/donate", label: t`Sponsorships` },
|
||||
{ url: "https://github.com/amruthpillai/reactive-resume", label: t`Source Code` },
|
||||
{ url: "https://github.com/reactive-resume/app", label: t`Source Code` },
|
||||
{ url: "https://docs.rxresu.me/changelog", label: t`Changelog` },
|
||||
];
|
||||
|
||||
const getCommunityLinks = (): FooterLinkItem[] => [
|
||||
{ url: "https://github.com/amruthpillai/reactive-resume/issues", label: t`Report an issue` },
|
||||
{ url: "https://github.com/reactive-resume/app/issues", label: t`Report an issue` },
|
||||
{ url: "https://crowdin.com/project/reactive-resume", label: t`Translations` },
|
||||
{ url: "https://reddit.com/r/reactiveresume", label: t`Subreddit` },
|
||||
{ url: "https://discord.gg/aSyA5ZSxpb", label: t`Discord` },
|
||||
];
|
||||
|
||||
const socialLinks: SocialLink[] = [
|
||||
{ url: "https://github.com/amruthpillai/reactive-resume", label: t`GitHub`, icon: GithubLogoIcon },
|
||||
{ url: "https://github.com/reactive-resume/app", label: t`GitHub`, icon: GithubLogoIcon },
|
||||
{ url: "https://linkedin.com/in/amruthpillai", label: t`LinkedIn`, icon: LinkedinLogoIcon },
|
||||
{ url: "https://x.com/KingOKings", label: t`X (Twitter)`, icon: XLogoIcon },
|
||||
];
|
||||
|
||||
@@ -59,7 +59,7 @@ export function InformationSectionBuilder() {
|
||||
className="text-xs"
|
||||
nativeButton={false}
|
||||
render={
|
||||
<a href="https://github.com/amruthpillai/reactive-resume" target="_blank" rel="noopener noreferrer">
|
||||
<a href="https://github.com/reactive-resume/app" target="_blank" rel="noopener noreferrer">
|
||||
<Trans>Source Code</Trans>
|
||||
</a>
|
||||
}
|
||||
@@ -71,7 +71,7 @@ export function InformationSectionBuilder() {
|
||||
className="text-xs"
|
||||
nativeButton={false}
|
||||
render={
|
||||
<a href="https://github.com/amruthpillai/reactive-resume/issues" target="_blank" rel="noopener noreferrer">
|
||||
<a href="https://github.com/reactive-resume/app/issues" target="_blank" rel="noopener noreferrer">
|
||||
<Trans>Report a Bug</Trans>
|
||||
</a>
|
||||
}
|
||||
|
||||
+1
-1
@@ -78,7 +78,7 @@ services:
|
||||
condition: service_healthy
|
||||
|
||||
reactive_resume:
|
||||
# image: ghcr.io/amruthpillai/reactive-resume:latest
|
||||
# image: ghcr.io/reactive-resume/app:latest
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
|
||||
@@ -17,7 +17,7 @@ These steps set up Reactive Resume for local development, whether you're contrib
|
||||
<Steps>
|
||||
<Step title="Clone the Repository">
|
||||
```bash
|
||||
git clone https://github.com/amruthpillai/reactive-resume.git
|
||||
git clone https://github.com/reactive-resume/app.git reactive-resume
|
||||
cd reactive-resume
|
||||
```
|
||||
</Step>
|
||||
@@ -318,7 +318,7 @@ pnpm run typecheck
|
||||
<Card title="Project Architecture" icon="folder-open" href="/contributing/architecture">
|
||||
How the project and codebase are structured.
|
||||
</Card>
|
||||
<Card title="GitHub Repository" icon="github" href="https://github.com/amruthpillai/reactive-resume">
|
||||
<Card title="GitHub Repository" icon="github" href="https://github.com/reactive-resume/app">
|
||||
View the source code and contribute to the project.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
@@ -106,7 +106,7 @@ If your language is not listed in the Crowdin project, you can request it to be
|
||||
|
||||
To request a new language:
|
||||
|
||||
1. Go to the [GitHub Issues](https://github.com/amruthpillai/reactive-resume/issues) page
|
||||
1. Go to the [GitHub Issues](https://github.com/reactive-resume/app/issues) page
|
||||
2. Click **New Issue**
|
||||
3. Select the appropriate template or create a blank issue
|
||||
4. Title it something like: "Add [Language Name] to Reactive Resume"
|
||||
@@ -152,7 +152,7 @@ Translations submitted on Crowdin are synced to the codebase periodically. Once
|
||||
<Card icon="book-open" title="Crowdin Translator Docs" href="https://support.crowdin.com/for-translators/">
|
||||
Official Crowdin documentation for translators.
|
||||
</Card>
|
||||
<Card icon="github" title="GitHub Issues" href="https://github.com/amruthpillai/reactive-resume/issues">
|
||||
<Card icon="github" title="GitHub Issues" href="https://github.com/reactive-resume/app/issues">
|
||||
Report issues or request new languages.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
+3
-3
@@ -177,7 +177,7 @@
|
||||
{
|
||||
"icon": "github",
|
||||
"anchor": "Source Code",
|
||||
"href": "https://github.com/amruthpillai/reactive-resume"
|
||||
"href": "https://github.com/reactive-resume/app"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -190,7 +190,7 @@
|
||||
"links": [
|
||||
{
|
||||
"label": "Support",
|
||||
"href": "https://github.com/amruthpillai/reactive-resume/issues"
|
||||
"href": "https://github.com/reactive-resume/app/issues"
|
||||
}
|
||||
],
|
||||
"primary": {
|
||||
@@ -205,7 +205,7 @@
|
||||
"footer": {
|
||||
"socials": {
|
||||
"website": "https://rxresu.me",
|
||||
"github": "https://github.com/amruthpillai/reactive-resume"
|
||||
"github": "https://github.com/reactive-resume/app"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ Reactive Resume is a free and open-source resume builder that makes it easy to c
|
||||
<AccordionGroup>
|
||||
<Accordion title="Completely Free & Open Source" icon="code-branch">
|
||||
Reactive Resume is licensed under MIT. You can use it for free, modify it, and even host your own instance. The
|
||||
entire codebase is available on [GitHub](https://github.com/amruthpillai/reactive-resume).
|
||||
entire codebase is available on [GitHub](https://github.com/reactive-resume/app).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Multiple Templates" icon="grid-2">
|
||||
@@ -91,10 +91,10 @@ Use the hosted version, or run your own instance.
|
||||
## Community & support
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="GitHub" icon="github" href="https://github.com/amruthpillai/reactive-resume">
|
||||
<Card title="GitHub" icon="github" href="https://github.com/reactive-resume/app">
|
||||
Star the repo, report reproducible bugs, propose features, and contribute to the project.
|
||||
</Card>
|
||||
<Card title="GitHub Discussions" icon="comments" href="https://github.com/amruthpillai/reactive-resume/discussions/categories/q-a">
|
||||
<Card title="GitHub Discussions" icon="comments" href="https://github.com/reactive-resume/app/discussions/categories/q-a">
|
||||
Ask questions about setup, configuration, and using Reactive Resume.
|
||||
</Card>
|
||||
<Card title="Reddit" icon="reddit" href="https://reddit.com/r/reactiveresume">
|
||||
@@ -109,6 +109,6 @@ Use the hosted version, or run your own instance.
|
||||
</CardGroup>
|
||||
|
||||
<Note>
|
||||
**Need help?** Start a [GitHub Discussion](https://github.com/amruthpillai/reactive-resume/discussions/categories/q-a).
|
||||
**Need help?** Start a [GitHub Discussion](https://github.com/reactive-resume/app/discussions/categories/q-a).
|
||||
GitHub Issues are reserved for reproducible bugs and actionable feature proposals.
|
||||
</Note>
|
||||
|
||||
@@ -72,7 +72,7 @@ Before you begin, ensure you have the following installed:
|
||||
<Steps>
|
||||
<Step title="Clone the Repository">
|
||||
```bash
|
||||
git clone https://github.com/amruthpillai/reactive-resume.git
|
||||
git clone https://github.com/reactive-resume/app.git reactive-resume
|
||||
cd reactive-resume
|
||||
```
|
||||
</Step>
|
||||
@@ -232,6 +232,6 @@ A complete list of the environment variables you can configure:
|
||||
</CardGroup>
|
||||
|
||||
<Note>
|
||||
**Having trouble?** Check our [GitHub Issues](https://github.com/amruthpillai/reactive-resume/issues) or reach out via
|
||||
**Having trouble?** Check our [GitHub Issues](https://github.com/reactive-resume/app/issues) or reach out via
|
||||
[email](mailto:hello@amruthpillai.com).
|
||||
</Note>
|
||||
|
||||
@@ -77,4 +77,4 @@ problem. That requires a separate session, create, list, and reload diagnosis; a
|
||||
|
||||
## Questions or issues?
|
||||
|
||||
If you run into problems accessing v4, or have questions about migrating your resumes, open an issue on [GitHub](https://github.com/amruthpillai/reactive-resume/issues).
|
||||
If you run into problems accessing v4, or have questions about migrating your resumes, open an issue on [GitHub](https://github.com/reactive-resume/app/issues).
|
||||
|
||||
@@ -39,7 +39,7 @@ If the servers are under high load or unreachable:
|
||||
</Step>
|
||||
|
||||
<Step title="Check for announcements">
|
||||
For major outages or planned maintenance, announcements may be posted on our [GitHub repository](https://github.com/amruthpillai/reactive-resume).
|
||||
For major outages or planned maintenance, announcements may be posted on our [GitHub repository](https://github.com/reactive-resume/app).
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Reactive Resume is open-source software. The project is published under the **MI
|
||||
|
||||
If you are running a modified/self-hosted instance, you may have additional notices or third-party licenses that apply (for example, fonts, icons, or other bundled assets).
|
||||
|
||||
For the upstream repository, see: [amruthpillai/reactive-resume](https://github.com/amruthpillai/reactive-resume)
|
||||
For the upstream repository, see: [reactive-resume/app](https://github.com/reactive-resume/app)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -3,6 +3,13 @@ title: "Self-hosting with Docker"
|
||||
description: "How to self-host Reactive Resume with Docker (Postgres only), with an environment variable reference and troubleshooting tips."
|
||||
---
|
||||
|
||||
<Warning>
|
||||
**Repository migration planned.** The GitHub repository is moving to `reactive-resume/app`.
|
||||
Docker Hub stays at `amruthpillai/reactive-resume`; GHCR is moving to `ghcr.io/reactive-resume/app`.
|
||||
The GHCR examples below use the new address. Keep your current image configuration until the
|
||||
[pinned migration announcement](https://github.com/amruthpillai/reactive-resume/issues/3503) confirms availability.
|
||||
</Warning>
|
||||
|
||||
<Info>
|
||||
**From v5.1.0 onwards** — PDF generation now runs entirely client-side via `@react-pdf/renderer`. New deployments no longer require Browserless, Chromium, or any external print service as a dependency. The `PRINTER_*` and `BROWSERLESS_*` environment variables are no longer read and can be removed from your `.env`.
|
||||
</Info>
|
||||
@@ -28,7 +35,18 @@ planned. Follow the [Docker Compose quickstart](#quickstart-using-docker-compose
|
||||
You can pull the latest app image from:
|
||||
|
||||
- Docker Hub: `amruthpillai/reactive-resume:latest`
|
||||
- GitHub Container Registry: `ghcr.io/amruthpillai/reactive-resume:latest`
|
||||
- GitHub Container Registry: `ghcr.io/reactive-resume/app:latest`
|
||||
|
||||
### Switching an existing GHCR installation
|
||||
|
||||
After the new GHCR image is confirmed available, replace `ghcr.io/amruthpillai/reactive-resume` with
|
||||
`ghcr.io/reactive-resume/app` in your deployment configuration. Keep your current version tag only if that tag
|
||||
exists at the new address. Historical tags are not copied automatically, and the old GHCR address does not redirect.
|
||||
|
||||
Docker Hub users need no image-name change. Changing registries does not require deleting containers' persistent
|
||||
volumes, resetting the database, or migrating resumes. Normal upgrade instructions still apply if you also change
|
||||
the application version. If you verify image signatures, update the accepted workflow identity for new releases
|
||||
to the workflow under `reactive-resume/app`; retain the old identity when verifying historical releases.
|
||||
|
||||
## Minimum requirements
|
||||
|
||||
@@ -191,7 +209,7 @@ services:
|
||||
|
||||
reactive-resume:
|
||||
image: amruthpillai/reactive-resume:latest
|
||||
# image: ghcr.io/amruthpillai/reactive-resume:latest
|
||||
# image: ghcr.io/reactive-resume/app:latest
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3000:3000"
|
||||
@@ -216,7 +234,7 @@ volumes:
|
||||
</CodeGroup>
|
||||
|
||||
<Tip>
|
||||
Prefer pulling from Docker Hub? Keep <code>amruthpillai/reactive-resume:latest</code>. Prefer GHCR? Swap it to <code>ghcr.io/amruthpillai/reactive-resume:latest</code>.
|
||||
Prefer pulling from Docker Hub? Keep <code>amruthpillai/reactive-resume:latest</code>. Prefer GHCR? Swap it to <code>ghcr.io/reactive-resume/app:latest</code>.
|
||||
</Tip>
|
||||
|
||||
<Note>
|
||||
@@ -254,7 +272,7 @@ docker compose logs -f reactive-resume
|
||||
Use your platform's generic container configuration to create two separately managed containers: one for Reactive
|
||||
Resume and one for PostgreSQL. No official Unraid Community Applications template is provided.
|
||||
|
||||
- Use the official `amruthpillai/reactive-resume:latest` or `ghcr.io/amruthpillai/reactive-resume:latest` image for the
|
||||
- Use the official `amruthpillai/reactive-resume:latest` or `ghcr.io/reactive-resume/app:latest` image for the
|
||||
app container.
|
||||
- Map the app's container port `3000` to the host port you want to use.
|
||||
- Connect both containers to a private container network. Set the host in `DATABASE_URL` to the PostgreSQL container or
|
||||
|
||||
@@ -15,7 +15,7 @@ They go further than the basic setup in the [Self-hosting with Docker](/self-hos
|
||||
|
||||
<Info>
|
||||
**Share your setup.** If you have a working configuration that isn't covered here, I'd love to include it. [Open a
|
||||
pull request](https://github.com/amruthpillai/reactive-resume) with your example added to this page.
|
||||
pull request](https://github.com/reactive-resume/app) with your example added to this page.
|
||||
</Info>
|
||||
|
||||
---
|
||||
@@ -352,7 +352,8 @@ services:
|
||||
replicas: 1
|
||||
|
||||
reactive_resume:
|
||||
image: ghcr.io/amruthpillai/reactive-resume:latest
|
||||
# Wait for the migration announcement to confirm this GHCR address is available.
|
||||
image: ghcr.io/reactive-resume/app:latest
|
||||
networks:
|
||||
- traefik_network
|
||||
- reactive_resume_network
|
||||
@@ -457,7 +458,7 @@ Have a different deployment setup that works well? Consider contributing it here
|
||||
- Podman configurations
|
||||
- Cloud-specific deployments (AWS ECS, Google Cloud Run, Azure Container Apps)
|
||||
|
||||
To contribute, [open a pull request](https://github.com/amruthpillai/reactive-resume) with your example added to this page. Include:
|
||||
To contribute, [open a pull request](https://github.com/reactive-resume/app) with your example added to this page. Include:
|
||||
|
||||
1. A brief description of when/why someone would use this setup
|
||||
2. The complete Docker Compose (or equivalent) configuration
|
||||
|
||||
@@ -150,7 +150,7 @@ To run the migration scripts, you need the following installed on your host mach
|
||||
<Card title="Reactive Resume Source Code">
|
||||
Clone the Reactive Resume repository and check out the last tag that includes the migration scripts:
|
||||
```bash
|
||||
git clone https://github.com/amruthpillai/reactive-resume.git
|
||||
git clone https://github.com/reactive-resume/app.git reactive-resume
|
||||
cd reactive-resume
|
||||
git checkout tags/v5.0.20
|
||||
pnpm install
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
"description": "Reactive Resume API",
|
||||
"license": {
|
||||
"name": "MIT",
|
||||
"url": "https://github.com/amruthpillai/reactive-resume/blob/main/LICENSE"
|
||||
"url": "https://github.com/reactive-resume/app/blob/main/LICENSE"
|
||||
},
|
||||
"contact": {
|
||||
"name": "Amruth Pillai",
|
||||
|
||||
@@ -50,7 +50,7 @@ Open [rxresu.me](https://rxresu.me) to create a resume, or follow [Creating your
|
||||
<Card title="Use the hosted app" icon="rocket" href="https://rxresu.me">
|
||||
Open the official Reactive Resume instance.
|
||||
</Card>
|
||||
<Card title="Source code" icon="github" href="https://github.com/amruthpillai/reactive-resume">
|
||||
<Card title="Source code" icon="github" href="https://github.com/reactive-resume/app">
|
||||
View the project repository.
|
||||
</Card>
|
||||
<Card title="License" icon="scale-balanced" href="/legal/license">
|
||||
|
||||
@@ -7,7 +7,7 @@ Reactive Resume is an open-source resume builder. The source code is public, the
|
||||
|
||||
## What open source means here
|
||||
|
||||
The project repository is on [GitHub](https://github.com/amruthpillai/reactive-resume). You can read the code, report issues, contribute improvements, and see how the builder, the API, the self-hosting setup, and the documentation are put together.
|
||||
The project repository is on [GitHub](https://github.com/reactive-resume/app). You can read the code, report issues, contribute improvements, and see how the builder, the API, the self-hosting setup, and the documentation are put together.
|
||||
|
||||
The license is documented in [License](/legal/license).
|
||||
|
||||
@@ -44,7 +44,7 @@ To contribute or to understand the codebase, start with the contributor docs. Th
|
||||
<Card title="Translations" icon="language" href="/contributing/translations">
|
||||
Help translate the app.
|
||||
</Card>
|
||||
<Card title="GitHub repository" icon="github" href="https://github.com/amruthpillai/reactive-resume">
|
||||
<Card title="GitHub repository" icon="github" href="https://github.com/reactive-resume/app">
|
||||
Browse issues, pull requests, and source code.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
@@ -21,7 +21,7 @@ Do not treat public sharing as access control. Use password protection, or keep
|
||||
|
||||
## Open source and self-hosting
|
||||
|
||||
The source code is on [GitHub](https://github.com/amruthpillai/reactive-resume), so you can read how the application works. If you need direct control over infrastructure, storage, auth providers, and deployment policy, run your own instance.
|
||||
The source code is on [GitHub](https://github.com/reactive-resume/app), so you can read how the application works. If you need direct control over infrastructure, storage, auth providers, and deployment policy, run your own instance.
|
||||
|
||||
Start with:
|
||||
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/amruthpillai/reactive-resume.git"
|
||||
"url": "https://github.com/reactive-resume/app.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=24"
|
||||
|
||||
@@ -3,7 +3,7 @@ import { db } from "@reactive-resume/db/client";
|
||||
import * as schema from "@reactive-resume/db/schema";
|
||||
|
||||
const CACHE_DURATION_MS = 6 * 60 * 60 * 1000; // 6 hours
|
||||
const GITHUB_API_URL = "https://api.github.com/repos/amruthpillai/reactive-resume";
|
||||
const GITHUB_API_URL = "https://api.github.com/repos/reactive-resume/app";
|
||||
const GITHUB_REQUEST_TIMEOUT_MS = 5_000;
|
||||
const GITHUB_REQUEST_MAX_ATTEMPTS = 2;
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ You could wire the bridge yourself with a raw `@deepseek-ai/dsh-mcp-client` row.
|
||||
|
||||
## Development
|
||||
|
||||
This package lives in the [Reactive Resume monorepo](https://github.com/amruthpillai/reactive-resume) at `packages/dsh-plugin`, next to `packages/mcp` — the server it bridges. `src/tool-names.test.ts` checks every tool the prompt guide names against `@reactive-resume/mcp/tool-names`, so renaming a tool breaks this package in the same pull request.
|
||||
This package lives in the [Reactive Resume monorepo](https://github.com/reactive-resume/app) at `packages/dsh-plugin`, next to `packages/mcp` — the server it bridges. `src/tool-names.test.ts` checks every tool the prompt guide names against `@reactive-resume/mcp/tool-names`, so renaming a tool breaks this package in the same pull request.
|
||||
|
||||
```bash
|
||||
pnpm --filter dsh-plugin-reactive-resume test
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
"author": "Amruth Pillai",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/amruthpillai/reactive-resume.git",
|
||||
"url": "git+https://github.com/reactive-resume/app.git",
|
||||
"directory": "packages/dsh-plugin"
|
||||
},
|
||||
"homepage": "https://github.com/amruthpillai/reactive-resume/tree/main/packages/dsh-plugin#readme",
|
||||
"homepage": "https://github.com/reactive-resume/app/tree/main/packages/dsh-plugin#readme",
|
||||
"bugs": {
|
||||
"url": "https://github.com/amruthpillai/reactive-resume/issues"
|
||||
"url": "https://github.com/reactive-resume/app/issues"
|
||||
},
|
||||
"type": "module",
|
||||
"main": "dist/index.js",
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
"description": "Free open-source resume builder with remote MCP tools for resumes and job applications.",
|
||||
"websiteUrl": "https://rxresu.me",
|
||||
"repository": {
|
||||
"url": "https://github.com/amruthpillai/reactive-resume",
|
||||
"url": "https://github.com/reactive-resume/app",
|
||||
"source": "github"
|
||||
},
|
||||
"version": "5.2.2",
|
||||
|
||||
Reference in New Issue
Block a user