Charts: Apache ECharts (lazy per page) covers every chart type — ECharts (Apache-2.0, 50+ chart types) is the family-wide chart library. ~300 KB gzip but lazy-loaded ONLY on pages with charts (zero hit on non-chart pages). Apps that load ECharts: paisa-finance + janaushdhi + stats.oriz.in + blog post embeds + others as new apps need charts. Client-side interactive rendering (no SSR for charts in v0). Provides line / bar / pie / scatter / candlestick / boxplot / treemap / sunburst / heatmap / radar / sankey / parallel / gauge / funnel / geo (map) / 3D / chord / liquidFill / wordCloud / graph (network).
FINAL: Every visual surface per-app; only behavior/utility packages stay shared — Locked 2026-06-22 evening. Resolves the multi-reversal sequence on shared-vs-divergent chrome. FINAL POLICY: every VISUAL surface (Header / Footer / Sidebar / BottomBar / Wordmark / token CSS variable NAMES) is FULLY per-app. NOTHING visual shipped from packages. Only behavioral / utility / non-visual packages stay shared (auth-core, astro-billing, oriz-seo, oriz-analytics, oriz-consent, oriz-ai-providers, oriz-rate-limit, astro-data, astro-pwa, astro-content, astro-forms, astro-distribute, astro-test-utils, omni-publish, oriz-book-build, oriz-ui ContactForm). Legal pages per-app (no shared LegalFooter). Every footer includes 6 standard legal links (/privacy /terms /contact /about /refunds /disclaimer) with per-app visual treatment. Triple-supersedes the on-again/off-again shared-chrome reversals from earlier same-day.
Footer column structure: 5 columns (4 standard + 1 per-app), 4/2/1 responsive, accordion default-closed mobile — Each app's footer (per-app visual per FINAL decision) has 5 columns: 4 standard (Legal / Family / Connect / Brand) + 1 per-app-specific. Desktop ≥1024px = 5-column grid. Tablet 768-1023px = 2-column grid (pairs of 2-3 cols stacked). Mobile <768px = single accordion (default-closed; tap to expand). Family column shows individual links to other oriz apps + tools + books + packages (mini sitemap).
Footer per-app design + universal legal section (refines maximalist-footer) — Refines the maximalist-footer decision from earlier same day. Each app draws its own footer (per-app visual design, per-app content links related to that app's surface area) BUT every footer INCLUDES the universal legal section (links to /privacy /terms /contact /about /refunds /disclaimer /sitemap /security.txt — all in-domain). Pattern: each app's footer is its own component; the legal section is a shared sub-component <LegalFooter /> from astro-chrome that drops in. Per-app legal pages content is also CUSTOMIZED per app (the app's own copy, not generic boilerplate from astro-chrome/legal/*).
Every app ships all 4 navigation surfaces: Header + Footer + Sidebar + BottomBar — Every oriz app must include all 4 navigation surfaces (Header at top, Footer at bottom, Sidebar at side, BottomBar mobile-tab-bar at bottom-fixed) so users have maximum navigation options. The 4 surfaces share a family-wide STRUCTURE (CSS/responsive/breakpoints from @chirag127/astro-chrome) but content divergence is per-app: Header is fully divergent (per-app file), Sidebar + BottomBar use the package's shell with per-app slot content / per-app actions, Footer is the single fully-consolidated surface (mega-sitemap).
Linkroll — Raindrop.io is source of truth, blog.oriz.in/links built at deploy time — The family's curated linkroll lives in a public Raindrop.io collection. blog.oriz.in/links is built at deploy time from the Raindrop REST API. Cached via the Cloudflare edge with a 1-hour TTL on the build artifact; nightly cron re-deploys to surface new links.
Maximalist mega-sitemap footer everywhere + monetization on EVERY app (reversals) — Two reversals locked 2026-06-22 evening. (1) Footer = MAXIMALIST mega-sitemap on every app (reverses per-app-divergent footer from shared-vs-divergent-matrix). Reason: AdSense + Play Store + MS Store + Razorpay approval gates all require visible legal links + family-nav + contact. Mega-sitemap satisfies all gates uniformly. (2) Monetization on EVERY app including janaushdhi (reverses the 'no ads on public-health' carve-out from ads-allowed-everywhere-except.md). Reason: 'every app should have monetization regardless of category'.
Multi-engine 'Search the web' button on every family site — Every site in the chirag127/oriz family ships a single 'Search the web' button (in the header or footer) that opens a popover with multiple search engines. Component lives in @chirag127/oriz-kit as .
OG card generation — Satori on api.oriz.in/og + ray.so for code — Non-code posts get OG cards from Satori (@vercel/og) on a Hono Worker route at api.oriz.in/og. Code-heavy posts continue on ray.so. Static-cached via CF edge cache headers, no per-post PNGs in any site repo.
PWABuilder is the primary PWA→native converter; Tauri optional — Every Astro app's PWA build is the source of truth. PWABuilder (free, Microsoft-hosted, CLI available) converts the PWA into Android AAB + Windows MSIX without per-app native code. Tauri stays available as opt-in for apps that want auto-update + smaller binaries. iOS is PWA-only (no Apple Developer Program, no test devices). Bubblewrap, Capacitor, Cordova all rejected.
Sidebar — 4 tiers based on site shape — Every site ships a sidebar via @chirag127/sidebar, but the sidebar config differs by site type. Four tiers: A) auto-generated for tools, B) curated TOC for longform, C) browse + search for catalogs, D) family directory for the brand hub.
Status banner on every site — Every site embeds a thin, dismissible from oriz-kit that consumes Better Stack's RSS incident feed; visible only when an incident is live, with severity + link to status.oriz.in.