chore: deploy to Cloudflare Pages and update branding

- Add Cloudflare Pages deployment for landing page (snapotter.com) and
  docs (docs.snapotter.com)
- Create deploy-landing.yml and update deploy-docs.yml workflows
- Update CI to ignore apps/landing/** paths
- Fix logo transparency (remove white background) across all apps
- Recreate social-preview.png with SnapOtter branding
- Update all docs URLs from GitHub Pages to docs.snapotter.com
- Update VitePress config: light theme default, fix llms.txt paths
- Add .vitepress/cache/ and .env.* to gitignore
This commit is contained in:
SnapOtter
2026-04-24 18:06:29 +08:00
parent fbaa603d03
commit 0309e0f680
174 changed files with 970 additions and 926 deletions
+8 -4
View File
@@ -50,7 +50,7 @@ describe("Hero", () => {
render(<Hero />);
const cta = screen.getByText("Get it for free");
const link = cta.closest("a");
expect(link?.getAttribute("href")).toBe("https://github.com/ashim-hq/ashim");
expect(link?.getAttribute("href")).toBe("https://github.com/snapotter-hq/snapotter");
expect(link?.getAttribute("target")).toBe("_blank");
});
@@ -175,7 +175,9 @@ describe("Pricing", () => {
it("links free plan CTA to GitHub", () => {
render(<Pricing />);
const freeButton = screen.getByText(/Get Started Free/);
expect(freeButton.closest("a")?.getAttribute("href")).toBe("https://github.com/ashim-hq/ashim");
expect(freeButton.closest("a")?.getAttribute("href")).toBe(
"https://github.com/snapotter-hq/snapotter",
);
});
it("links enterprise CTA to contact page", () => {
@@ -201,7 +203,7 @@ describe("OpenSource", () => {
it("links to GitHub", () => {
render(<OpenSource />);
const link = screen.getByText("Star on GitHub").closest("a");
expect(link?.getAttribute("href")).toBe("https://github.com/ashim-hq/ashim");
expect(link?.getAttribute("href")).toBe("https://github.com/snapotter-hq/snapotter");
});
});
@@ -230,7 +232,9 @@ describe("Footer", () => {
it("renders community links to GitHub", () => {
render(<Footer />);
const ghLink = screen.getByText("GitHub");
expect(ghLink.closest("a")?.getAttribute("href")).toBe("https://github.com/ashim-hq/ashim");
expect(ghLink.closest("a")?.getAttribute("href")).toBe(
"https://github.com/snapotter-hq/snapotter",
);
});
it("renders legal links", () => {
+1 -1
View File
@@ -27,7 +27,7 @@ beforeEach(() => {
afterEach(cleanup);
const DOCKER_COMMAND =
"docker run -d --name ashim -p 1349:1349 -v ashim-data:/data ghcr.io/ashim-hq/ashim:latest";
"docker run -d --name SnapOtter -p 1349:1349 -v SnapOtter-data:/data ghcr.io/snapotter-hq/snapotter:latest";
describe("HowItWorks", () => {
it("renders the section heading", () => {
+2 -2
View File
@@ -50,7 +50,7 @@ describe("Navbar", () => {
it("fetches GitHub star count on mount", async () => {
render(<Navbar />);
await waitFor(() => {
expect(fetchMock).toHaveBeenCalledWith("https://api.github.com/repos/ashim-hq/ashim");
expect(fetchMock).toHaveBeenCalledWith("https://api.github.com/repos/snapotter-hq/snapotter");
});
});
@@ -121,7 +121,7 @@ describe("Navbar", () => {
render(<Navbar />);
const githubLinks = screen.getAllByText("Star on GitHub");
const link = githubLinks[0].closest("a");
expect(link?.getAttribute("href")).toBe("https://github.com/ashim-hq/ashim");
expect(link?.getAttribute("href")).toBe("https://github.com/snapotter-hq/snapotter");
expect(link?.getAttribute("target")).toBe("_blank");
});
});