Skip to content

Repository files navigation

The New Jersey Courier

The Authoritative Voice of the Garden State

The New Jersey Courier is a county-first digital newspaper platform launching in Middlesex County, New Jersey. Its reporting model starts with municipal government, schools, transportation, accountability, civic life and high-school sports, then connects those local consequences to a dedicated Statehouse desk.

This repository is a launch preview. Seed articles, people, polls and results are fictional demonstrations until the newsroom publishes verified reporting.

The New Jersey Courier desktop homepage

Editorial products

  • Middlesex County Desk — town-by-town reporting across all 25 municipalities
  • Politics & Statehouse Desk — Trenton reporting translated into local consequences
  • Garden State Forum — clearly labeled local opinion and op-eds
  • Public Square / Weekly Pulse — transparent, non-scientific civic polling with Sunday context
  • Jersey Gridiron & Court — high-school sports and moderated Player of the Week ballots
  • Jersey Laurels — annual, reader-nominated community recognition
  • Courier Watch — public records, service journalism and accountability reporting

The Courier's 20 Under 20 program

Platform surfaces

apps/
  web/       Next.js newspaper, newsroom Studio, legal center and public APIs
  mobile/    Shared Expo application for iOS and Android
  employee/  Separate privileged Expo application for employee iOS and Android
  tv/        Shared react-native-tvos application for Apple TV and Android/Google TV
  roku/      Native Roku SceneGraph application
  cdn/       Versioned asset source; same-origin now, CDN-ready later
packages/
  api-client/  Shared platform-neutral API requester
  backend/     Neon/Postgres and Drizzle data layer
  contracts/   Shared TypeScript API contracts
  media-player/ Portable React playback and editorial timeline package
platform/      Licensable feature host, entitlement system and animation runtime
tools/studio/  Tauri desktop IDE for animation and feature development
visual-feature-platform/  Extractable visual feature model, compiler, runtime and playground
docs/          Architecture, operations, APIs, pairing and brand standards

The stack is TypeScript-first: Next.js App Router, Expo/React Native, Neon Postgres, Drizzle, Clerk, Upstash and Vercel Blob. Roku uses the native BrightScript/SceneGraph runtime. C or C++ is reserved for measured native performance needs behind a maintained cross-platform boundary.

Brand and assets

Canonical assets live in apps/cdn/public/assets. Every published pathname is versioned and immutable. The web app mirrors those files before development and production builds, so the initial Vercel deployment serves them from the same generated hostname:

https://<your-vercel-project>.vercel.app/assets/brand/v1/mark.svg

Production assets are served from https://cdn.thejerseycourier.com; the mirrored same-origin paths remain available for local development and portability. Asset paths do not change.

See the brand guide, asset catalog, and CDN deployment guide.

Courier responsive homepage

Local preview

pnpm install
pnpm dev

Open http://localhost:3000. To review Studio locally, connect Clerk in apps/web/.env.local and sign in with an approved newsroom account. Studio intentionally has no demo authentication bypass.

Vercel deployment

Create one Vercel project from this repository:

  1. Name it something available such as new-jersey-courier and set Root Directory to apps/web.
  2. Vercel will provide an HTTPS production alias such as https://new-jersey-courier.vercel.app, plus unique preview URLs for branches and pull requests.
  3. Leave NEXT_PUBLIC_SITE_URL and NEXT_PUBLIC_ASSET_ORIGIN unset. The app detects Vercel’s URL and serves assets from /assets automatically.

Install Neon, Clerk, Vercel Blob and Upstash for the web project. Production deployments apply the committed Drizzle migrations before Next.js builds and fail closed if the database is missing or outdated; preview and local builds never mutate the production schema. Production starts empty, so publish verified reporting through Studio instead of seeding preview content. Vercel automatically CDN-caches static deployment assets; public newsroom uploads use Vercel Blob.

The Hobby deployment runs /api/cron/publish-scheduled once daily at 10:00 UTC, which complies with Vercel's Hobby cron limit. Upgrade the project before restoring a more frequent schedule; Studio can still publish time-sensitive stories manually at any time.

The custom-domain launch runbook covers the Vercel primary-domain redirect, Clerk production keys, canonical/SEO checks, native-app follow-up and rollback. The subdomain runbook covers Studio, API, CDN, Distribution and the temporary NJC+ redirect.

The private Distribution runbook covers authorized pre-publication packages, immutable story snapshots, private media delivery, the custom viewer/player, domain activation, and production verification.

NJC Distribution's private access boundary

The AI story-image placeholder runbook covers the optional free-provider setup, generated-media provenance, mandatory publication block and newsroom acceptance procedure.

The completed Bun and Protocol Buffers investigation contains the repository-specific benchmarks, compatibility audit, decision thresholds, and reproducible harness. It does not change the production Node/pnpm/JSON stack.

Copy apps/web/.env.example for configuration names. Never commit .env.local.

Portable operations

The newsroom can export an encrypted, provider-neutral archive containing the database, migrations, public media inventory, configuration names and restore instructions:

pnpm backup:export
pnpm backup:restore

See portable backup and restore.

Media press kits

The legacy generator remains at /press. The request-specific, policy-aware Press & Media system is served from press.thejerseycourier.com by the same web deployment and is documented in docs/PRESS_KIT_PORTAL.md.

The public /press workflow generates a tailored ZIP from the approved brand library, publication background and editorial illustration. Each package includes the requester’s brief, usage terms and a checksum manifest. Production requests are rate-limited with Upstash, logged for authorized Studio users and included in portable database exports. See press-kit generation and operations.

The dedicated Courier Press and Media portal

Search visibility

The web app includes canonical metadata, NewsArticle and publisher structured data, general and Google News sitemaps, RSS, social previews, search-engine verification hooks and CMS-level SEO controls. Indexing remains disabled by default for local and preview deployments. The current Vercel production alias was verified in Google Search Console and explicitly enabled for indexing on July 22, 2026; follow the SEO launch and measurement guide for the crawler-cache status, publishing cautions and future custom-domain migration.

Site configuration and advertising

Studio administrators can manage publication identity, navigation, reader feature switches and Google AdSense from Studio → Settings. Advertising is disabled by default and Preview mode never loads Google code or creates impressions. Live delivery requires an AdSense publisher ID, a confirmed Google-certified consent setup and valid ad-unit IDs for each enabled manual placement. See the advertising operations guide before activation.

The profit and monetization plan sets out the legitimate business model, launch rate-card hypotheses, revenue formulas, editorial firewall, compliance foundation, and 90-day commercialization sequence.

The complete, privacy-reviewed visual catalog is maintained in docs/screenshots. The monorepo application map is in apps/README.md, the shared-package map is in packages/README.md, and the exhaustive dark-mode web route inventory is in apps/web/PAGES.md.

Verification

pnpm lint
pnpm typecheck
pnpm build
pnpm mobile:check
pnpm employee:check
pnpm employee:export
pnpm tv:check
pnpm roku:check
pnpm platform:check
pnpm platform:conformance
pnpm platform:demo
pnpm platform:benchmark
pnpm playground:check
pnpm composer:check

The separate animation playground runs with pnpm playground:start on port 3010. Platform architecture, licensing, language/SDK guides and explicit native limitations are indexed from platform/README.md.

NJC Studio

The repository includes NJC Studio, a Tauri 2 desktop environment with Monaco source editing, structured visual and timeline edits, the real animation compiler/runtime, an integrated virtual-device preview, project detection, workspace trust, allow-listed tasks, package inspection, state-machine tracing and toolchain diagnostics. Its VS Code-inspired information architecture is original to The New Jersey Courier, and its create → edit → build → preview workflow is functional in both the browser fixture and native desktop shell.

NJC Studio source workbench and runtime preview

pnpm studio:start
pnpm studio:check
pnpm studio:build

See tools/studio/README.md for the working workflow, security boundary, screenshot and explicit remaining milestones.

NJC Studio's Feature tab provides synchronized Design, NJC Blueprints, Data, Motion, Test and readable English-programming Source modes. Its extraction-ready compiler/runtime workspace and standalone playground are documented in visual-feature-platform/README.md. Release gates and the signing work that still requires owner credentials are documented in tools/studio/docs/PRODUCTION_READINESS.md.

NJC Studio Visual Feature Composer

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages