Skip to content

self-host apps/status.network#1197

Open
felicio wants to merge 9 commits into
mainfrom
felicio/self-status-network
Open

self-host apps/status.network#1197
felicio wants to merge 9 commits into
mainfrom
felicio/self-status-network

Conversation

@felicio

@felicio felicio commented May 25, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

@changeset-bot

changeset-bot Bot commented May 25, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 3918dd7

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
status.network Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercel Bot commented May 25, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
status-network-website Error Error Jun 9, 2026 12:20pm
7 Skipped Deployments
Project Deployment Actions Updated (UTC)
community-dapp-new Ignored Ignored Preview Jun 9, 2026 12:20pm
status-api Ignored Ignored Preview Jun 9, 2026 12:20pm
status-components Ignored Ignored Preview Jun 9, 2026 12:20pm
status-get-status-app Ignored Ignored Preview Jun 9, 2026 12:20pm
status-network-hub Ignored Ignored Preview Jun 9, 2026 12:20pm
status-portfolio Ignored Ignored Preview Jun 9, 2026 12:20pm
status-website Ignored Ignored Preview Jun 9, 2026 12:20pm

Request Review

@jinhojang6 jinhojang6 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pnpm build => pnpm start worked well.

We might need to set up .env values for Jenkins with the infra team: https://ci.infra.status.im/

  • GHOST_API_KEY
  • NEXT_PUBLIC_GHOST_API_KEY

@github-project-automation github-project-automation Bot moved this from In Progress to Waiting in Web & User Interfaces May 26, 2026
@jinhojang6

Copy link
Copy Markdown
Collaborator

One minor thing is, when I change the language from en => ko => en, it shows 404 at /en

Screenshot 2026-05-26 at 10 55 00 PM
Screenshot 2026-05-26 at 10 54 44 PM

@jinhojang6

Copy link
Copy Markdown
Collaborator

We need to handle the merge conflict related to pnpm-lock.yaml now

@JulesFiliot JulesFiliot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I cannot open /, I get the error bellow. I can open /ko correctly.

Image


const result = envSchema.safeParse({
NEXT_PUBLIC_GHOST_API_URL: process.env.NEXT_PUBLIC_GHOST_API_URL,
NEXT_PUBLIC_GHOST_API_KEY: process.env.NEXT_PUBLIC_GHOST_API_KEY,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NEXT_PUBLIC_* variables are hardcoded in the files sent to the browser so is it expected to have an API key there?

Base automatically changed from felicio/get-status to main May 27, 2026 12:42
Copilot AI review requested due to automatic review settings June 8, 2026 08:20

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the monorepo to support self-hosted/static-export builds for apps/status.network (including Jenkins deployment changes) and introduces a new scoped site apps/get.status.app that reuses status.app pages/components with a reduced feature set.

Changes:

  • Enable static export–friendly behavior for status.network (build outputs, locale routing tweaks, build-time env checks, and post-build locale prefix stripping).
  • Extend Jenkinsfile.website to build/deploy status.network in addition to hub, including Ghost env parameterization.
  • Add new app get.status.app with its own Next.js config, i18n setup, and route stubs to reuse status.app code.

Reviewed changes

Copilot reviewed 41 out of 42 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
turbo.json Adjust Turbo task settings for dev persistence and status.network build outputs/env passthrough.
README.md Document the new apps/get.status.app package in the repo overview table.
pnpm-workspace.yaml Add apps/get.status.app to workspace packages and remove duplicate entry.
package.json Include apps/get.status.app in the workspace package list.
Jenkinsfile.website Allow selecting/building/deploying status.network, plus Ghost env parameters and deploy branch/domain logic.
apps/status.network/src/i18n/routing.ts Update locale routing settings/comments for static export constraints.
apps/status.network/src/app/robots.ts Force static robots generation and adjust rules.
apps/status.network/src/app/not-found.tsx Replace server translation lookup with static copy for non-locale routes.
apps/status.network/src/app/layout.tsx Remove request-based locale resolution and hardcode lang.
apps/status.network/src/app/api/naver-image/route.ts Remove Naver image proxy API route (static-export friendly).
apps/status.network/src/app/[locale]/layout.tsx Add locale validation + setRequestLocale, force static.
apps/status.network/src/app/[locale]/brand/page.tsx Move translations to server (getTranslations) and pass label down.
apps/status.network/src/app/[locale]/brand/_components/color-section.tsx Plumb downloadButtonLabel through to section.
apps/status.network/src/app/[locale]/brand/_components/brand-section.tsx Make section a client component and accept a passed-in label.
apps/status.network/src/app/[locale]/blog/page.tsx Make blog list force-static and remove tag-based filtering.
apps/status.network/src/app/[locale]/blog/layout.tsx Remove force-dynamic marker to align with static export.
apps/status.network/src/app/[locale]/blog/[slug]/page.tsx Add static params generation + fallback slugs and move heavy UI to hydrated component.
apps/status.network/src/app/_lib/network-blog-slugs.ts Add helper to read fallback blog slugs JSON for export builds.
apps/status.network/src/app/_lib/naver.ts Refactor to use new RSS parsing module and remove image proxy logic.
apps/status.network/src/app/_lib/naver-rss.ts Introduce RSS parsing and link/image extraction helpers.
apps/status.network/src/app/_lib/naver-image-url.ts Simplify to URL extraction only (remove key/proxy helpers).
apps/status.network/src/app/_lib/naver-client.ts Add client-side RSS fetcher for homepage hydration refresh.
apps/status.network/src/app/_lib/ghost.ts Extract Ghost constants to a shared module.
apps/status.network/src/app/_lib/ghost-constants.ts Centralize Ghost URLs/tags/filters/limits.
apps/status.network/src/app/_lib/ghost-client.ts Add client-side Ghost fetchers for homepage cards + blog detail refresh.
apps/status.network/src/app/_lib/blog-post-detail.ts Add shared blog detail types + helpers used by hydrated components.
apps/status.network/src/app/_constants/env.server.mjs Add server env schema validation for status.network.
apps/status.network/src/app/_constants/env.client.mjs Add client env schema validation for status.network Ghost refresh.
apps/status.network/src/app/_constants/env.base.mjs Shared env error reporting helper.
apps/status.network/src/app/_components/language-selector.tsx Adjust locale switching for default-locale prefix stripping behavior.
apps/status.network/src/app/_components/blog/blog-section.tsx Move rendering into hydrated component + align card types/constants.
apps/status.network/src/app/_components/blog/blog-section-hydrated.tsx New client hydration to refresh homepage blog cards post-deploy.
apps/status.network/src/app/_components/blog/blog-post-detail-hydrated.tsx New client hydration to refresh /blog/[slug] post content post-deploy.
apps/status.network/serve.json Add static server configuration (clean URLs).
apps/status.network/scripts/sync-blog-slugs.mjs Add script to fetch and persist blog slugs for export fallback.
apps/status.network/scripts/strip-default-locale-prefix.sh Add postbuild script to strip /en prefix in exported output.
apps/status.network/scripts/load-env-files.mjs Add env loader for local scripts mirroring Next precedence.
apps/status.network/scripts/check-build-env.mjs Add build-time env validation for static export requirements.
apps/status.network/README.md Update app docs for static export workflow and required env/submodules.
apps/status.network/package.json Update scripts for export/postbuild stripping and local static preview (serve).
apps/status.network/next.config.ts Conditionally enable output: 'export', set unoptimized, and adjust transpilation.
apps/status.network/content/network-blog-slugs.json Add committed fallback list of blog slugs for export builds.
apps/status.network/.gitignore Ensure .env.example can be committed.
apps/status.network/.env.example Add example Ghost env vars for build/export + client refresh.
apps/status.app/src/config/site-scope.ts Introduce SITE_SCOPE / isGetSite flags for shared code reuse.
apps/status.app/src/app/layout.tsx Add suppressHydrationWarning on <html>.
apps/status.app/src/app/(website)/page.tsx Gate blog/prefooter content and adjust keycard link behavior for get-site scope.
apps/status.app/src/app/(website)/_components/promo-bar.tsx Hide promo bar for get-site scope.
apps/get.status.app/vercel.json Add Vercel build/ignore configuration for the new app.
apps/get.status.app/tsconfig.json Add TS config with path aliases pointing at status.app sources.
apps/get.status.app/tailwind.config.ts Reuse status.app Tailwind config and extend content globs.
apps/get.status.app/src/stubs/ghost.ts Stub Ghost API helpers to avoid Ghost env requirements in get-site.
apps/get.status.app/src/middleware.ts Add next-intl middleware for the get-site.
apps/get.status.app/src/i18n/routing.ts Define get-site i18n routing (single locale).
apps/get.status.app/src/i18n/request.ts Define next-intl request config loading messages.
apps/get.status.app/src/config/site-scope.ts Set scope to get for the new app.
apps/get.status.app/src/config/routes.ts Provide a reduced ROUTES plus re-export shared constants from status.app.
apps/get.status.app/src/config/env.server.mjs Add server env schema validation for get-site.
apps/get.status.app/src/config/env.client.mjs Add client env schema validation for get-site.
apps/get.status.app/src/config/env.base.mjs Shared env error reporting helper for get-site.
apps/get.status.app/src/app/not-found.tsx Re-export status.app not-found page.
apps/get.status.app/src/app/layout.tsx New root layout wiring providers, analytics, and metadata for get-site.
apps/get.status.app/src/app/api/download/mobile/route.ts New UA-based redirect route for mobile downloads.
apps/get.status.app/src/app/api/download/[platform]/route.ts Re-export platform download route from status.app.
apps/get.status.app/src/app/[locale]/layout.tsx Locale validation layout for get-site routes.
apps/get.status.app/src/app/[locale]/(website)/security/page.tsx Re-export security page from status.app.
apps/get.status.app/src/app/[locale]/(website)/page.tsx Re-export homepage from status.app.
apps/get.status.app/src/app/[locale]/(website)/legal/terms-of-use/page.tsx Re-export terms page from status.app.
apps/get.status.app/src/app/[locale]/(website)/legal/privacy-policy/page.tsx Re-export privacy page from status.app.
apps/get.status.app/src/app/[locale]/(website)/legal/layout.tsx Re-export legal layout from status.app.
apps/get.status.app/src/app/[locale]/(website)/layout.tsx Re-export website layout from status.app.
apps/get.status.app/src/app/[locale]/(website)/apps/page.tsx Re-export apps page from status.app.
apps/get.status.app/README.md Document purpose, pages, env expectations, and dev workflow for get-site.
apps/get.status.app/postcss.config.js Add PostCSS config for Tailwind pipeline.
apps/get.status.app/package.json Add new app package definition, scripts, and dependencies.
apps/get.status.app/next.config.mjs Configure next-intl + aliases to reuse status.app with Turbopack/Webpack.
apps/get.status.app/next-env.d.ts Add Next.js TS references for the new app.
apps/get.status.app/messages/en.json Add message catalog for get-site (English).
apps/get.status.app/env.d.ts Add ProcessEnv typing from validated env modules.
apps/get.status.app/.node-version Pin Node version for the new app.
apps/get.status.app/.gitignore Add app-local ignores for build artifacts.
apps/get.status.app/.env.example Add example env file for get-site.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread apps/status.network/src/app/layout.tsx Outdated
Comment on lines +87 to +89
export default function RootLayout({ children }: Props) {
return (
<html lang={locale}>
<html lang="en">
Comment thread Jenkinsfile.website Outdated
Comment on lines +60 to +64
string(
name: 'GHOST_API_KEY',
description: 'Ghost Content API key (status.network).',
defaultValue: params.GHOST_API_KEY ?: ''
)
Comment thread Jenkinsfile.website Outdated
Comment on lines +101 to +105
def buildEnv = ''
if (params.APP_NAME == 'status.network') {
buildEnv = """
GHOST_API_URL='${params.GHOST_API_URL}' \\
GHOST_API_KEY='${params.GHOST_API_KEY}' \\
felicio added 2 commits June 9, 2026 12:19
This reverts commit 649a3fb.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Waiting

Development

Successfully merging this pull request may close these issues.

4 participants