Skip to content
OxyHQPublic

About

oxy.so and fairco.in: the public websites, help centre and academy

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,412 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Oxy website

The source of oxy.so, and of fairco.in, which is the same app answering to a different host.

Breathe License 1.0 Bun Vite React Tailwind TypeScript

One React app, two brands.
src/lib/host.ts decides which one you are looking at,
and src/lib/faircoin-chrome.tsx swaps the chrome around it.

Operating company

Oxy Platforms, Inc. is being incorporated in Delaware as the intended operating company for Oxy services. The website's software licence, copyright and trademark attributions remain separate from this operating-company transition.


🎨 Colour has exactly one source

Every token comes from @oxy.so/bloom. src/index.css imports the design token stylesheet and declares no palette of its own, and src/styles/theme.generated.css is written by scripts/generate-theme-css.ts from Bloom's own engine.

A brand surface is one seed in src/theme/brands.ts. Product stylesheets may hold type scale, rhythm and shape, never a colour.

📄 Prerendered, then hydrated

bun run build does not stop at a bundle. It builds a search index, prerenders every route through entry-server.tsx, runs Pagefind over the output, and generates the CSP headers.

That means the first paint a visitor sees comes from static HTML, before any JavaScript runs. It is worth remembering when you change anything that renders differently on the server.

Stack

Layer What is used
App React 19, Vite 8, TypeScript 6, React Router 7, the React Compiler
Styling Tailwind 4, NativeWind, Bloom design tokens
Cross platform UI React Native Web through vite-plugin-react-native-web, with @oxy.so/services, @oxy.so/core and @oxy.so/bloom
Data TanStack Query with persisted cache, hooks in src/api/
Content MDX, with docs and changelog synced in at build time, and Pagefind for site search
Wallet wagmi and viem, on the FairCoin surfaces
Motion and 3D Framer Motion, Three.js with React Three Fiber
Server Express 5 with drizzle over PostgreSQL under server/, plus an MCP server at server/mcp.ts

Identity is the platform's job, not this repo's. See github.com/OxyHQ/oxy.

Getting started

bun install
bun run dev

predev generates the theme CSS and syncs docs and changelog content, then dev starts the Express server and Vite together. The Vite dev server proxies /api to the Express server on port 4000.

bun run build      # type check, bundle, index, prerender, pagefind, CSP headers
bun run lint       # Biome lint + format check (bun run lint:fix / bun run format to apply)
bun run preview    # serve the built output
bun run server     # Express only
Layout
src/
  api/          REST client and TanStack Query hooks
  components/   UI grouped by surface (homepage, faircoin, mention, pay, docs, ...)
  content/      MDX and synced content
  contexts/     React contexts
  data/         Static fallbacks used when the CMS has nothing
  hooks/        Domain hooks
  lib/          Pure helpers: host detection, FairCoin links, wagmi config, SEO
  pages/        One component per route in App.tsx
  stores/       Zustand stores for cross tree UI state
  styles/       Product themes plus the generated palette
  theme/        Brand seeds
  constants.ts  Positioning, founder, HQ, feature flags
server/         Express API, models, routes, services, MCP server
scripts/        Build time scripts: theme, docs and changelog sync, prerender, OG images, search index
Other scripts
bun run generate:theme            # regenerate src/styles/theme.generated.css from Bloom
bun run sync-docs                 # pull docs content into src/
bun run sync-changelog            # pull changelog content into src/
bun run prerender                 # prerender routes without a full rebuild
bun run build:help-og             # OG images for help articles
bun run build:faircoin-og         # OG images for FairCoin pages
bun run optimize-media            # compress media in place
bun run analyze                   # bundle stats
bun run typecheck:server
bun run seed                      # seed the database
Feature flags

src/constants.ts exports a FEATURES object that hides sections still waiting on real content. Flip a flag to true once the section it gates has something true to show. The comments in that file say what each one covers.

Conventions

  • Oxy is not a CRM. Oxy CRM is one product in the ecosystem, and the parent brand is an open source ecosystem of AI agents and apps.
  • Team, blog, changelog, job and testimonial content comes from the CMS through hooks such as useTeamMembers, useNewsroomPosts and useJobs. The static fallbacks under src/data/ stay empty or generic.
  • No hardcoded customer logos or testimonials. They stay behind FEATURES.SHOW_TRUSTED_LOGOS and FEATURES.SHOW_TESTIMONIALS until real, verified ones exist.
  • Never hand write a palette. Change the seed, regenerate, and check the result in a browser with JavaScript blocked as well as with it on. Every page here is prerendered, so a token that only resolves after hydration is a token the visitor saw wrong first.
  • The MCP server signs people in with Oxy's MCP OAuth; its bearer token travels in the Authorization header only. See docs/MCP.md.
  • New protected routes on the server use createOxyAuthMiddleware and getRequiredOxyUserId from @oxy.so/core/server. Do not add local auth middleware.

Breathe License 1.0 · The Oxy Collective, Inc. · LICENSE · oxy.so

About

oxy.so and fairco.in: the public websites, help centre and academy

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages