Skip to content
nexow-aiPublic

About

🌐 Nexow's landing Astro page

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

671 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

nexow-web

License CI Nexow, Inc.

Public marketing site for Nexow β€” describe what you need, get live widgets on a canvas. This repository is the nexow.ai website: landing pages, features, plans, community, connectors, legal docs, and the blog.

Copyright Β© 2026 Nexow, Inc.
Open source under the Apache License 2.0. Ownership, trademarks, and brand stay with Nexow, Inc. Forks and reuse must keep the NOTICE attribution. See TRADEMARKS.md.

The product application is not this repo. It runs at x.nexow.ai.

Stack

  • Astro 7 β€” static site generation, near-zero client JS
  • Tailwind CSS v4 (@tailwindcss/vite) with a custom brand token system
  • @astrojs/sitemap β€” i18n sitemap with hreflang alternates
  • @astrojs/mdx + content collections β€” the blog
  • Self-hosted variable fonts (Space Grotesk, Inter, JetBrains Mono)
  • Bun as the package manager (bun.lock)

Features

  • 17 locales β€” English at /, others at /{lang}/, with hreflang, canonical tags, and an i18n sitemap
  • Full marketing site β€” home, features, community, connectors, plans, about, blog, changelog, help, legal, privacy, security
  • SEO β€” per-page titles and descriptions, Open Graph + Twitter cards, canonical URLs, JSON-LD (Organization, WebSite, SoftwareApplication, FAQPage, BlogPosting)
  • GEO β€” llms.txt for answer engines and an AI-crawler-friendly robots.txt
  • Design β€” hybrid light hero + dark product showcases, scroll-reveal (progressively enhanced; content is visible without JS)

Commands

Requires Node.js 22.16+ (see .nvmrc) and Bun 1.2+.

bun install
bun run content:sync   # generate the Astro content store
bun run dev            # http://localhost:4321
bun run build          # static output in ./dist
bun run preview        # preview the production build
bun run check          # astro + TypeScript diagnostics
bun run test           # vitest (syncs content first)
bun run test:e2e       # Playwright (builds first)
bun run deploy:dev     # Cloudflare Pages, `dev` branch
bun run deploy:stg     # Cloudflare Pages, `stg` branch
bun run deploy:prod    # Cloudflare Pages, `main` (nexow.ai)

.env is committed encrypted with git-crypt. On a new machine, install git-crypt and run git-crypt unlock ~/.config/git-crypt/nexow.ai/nexow-web.key once. The working tree stays plaintext; the blob in git is ciphertext. Plaintext .env.* overrides stay gitignored, and the key file is never committed.

Structure

src/
  components/            UI, page bodies, landing sections
  content/blog/<lang>/   blog posts (Markdown / MDX)
  i18n/                  locales, legal copy, routing helpers
  layouts/               Layout.astro, BlogPost.astro
  lib/                   shared TypeScript
  pages/                 EN at root, other locales under /{lang}/
  styles/global.css      Tailwind v4 theme + design tokens
public/                  logos, favicons, og.png, robots.txt, llms.txt
scripts/                 asset generators, content-store, release back-merge
tests/                   unit, integration, build, e2e
.github/workflows/       CI, Deploy, Release, promote, sync
CHANGELOG.md             generated by semantic-release β€” do not edit

Editing content

  • Copy lives in src/i18n/locales/<lang>.ts. English is the source of truth β€” new strings must be added to every locale.
  • Legal documents live in src/i18n/legal-en.ts and src/i18n/legal/<lang>.ts.
  • Blog posts are Markdown/MDX under src/content/blog/<lang>/. Use matching slugs across locales so hreflang aligns.
  • Brand tokens (colors, fonts) live in src/styles/global.css under @theme.

Regenerating assets

bun run scripts/optimize-assets.mjs   # resize logos + favicons
bun run scripts/make-og.mjs           # regenerate public/og.png

Deployment

Static output in dist/ β€” Cloudflare Pages via the Deploy workflow (wrangler pages deploy --project-name=nexow-web). Production site is set in astro.config.mjs to https://nexow.ai.

Branch Pages branch Role
dev dev Integration preview
stg stg Staging, production-gate preview
main main Production β€” nexow.ai

Release commits include [skip actions] so they do not loop Deploy / Release. After a stable cut on main, Release dispatches Deploy explicitly.

Branch promotion

Work lands only along this path:

feature/*  β†’  PR  β†’  dev  β†’  PR  β†’  stg  β†’  clone  β†’  main

Who can open a PR

  • Into dev: any feature branch.
  • Into stg: only dev. The Branch promotion workflow closes anything else.
  • Into main: only stg. Anything else is closed.

No direct commits on main or stg. .husky/pre-push rejects git push to those branches. Open a dev β†’ stg PR instead.

After dev β†’ stg merges, Sync stg to main clones stg onto main with a merge commit (chore: promote stg to main). This org does not let GitHub Actions open PRs, so the clone is a bot push, not a stg β†’ main pull request. Site code stays identical. main may then add a chore(release): commit; that version bump comes back onto dev on the next release back-merge.

CI is split so a dev review is not blocked by Playwright:

Event What runs
PR into dev Typecheck only (bun run check)
PR into stg Typecheck + coverage + build + built-output tests + Playwright
Push to stg / main No suite β€” already gated on the stg PR. Deploy (and the main release) proceed from that result.

Native GitHub rulesets / classic branch protection need Pro/Team on a private repo (this org is on Free), so the hook + workflows are the enforce path. After upgrading, add matching rulesets (block direct pushes / force-pushes on main and stg, require the promotion check) so the server rejects them too.

Releasing

Releases are commit-driven via semantic-release β€” there is no manual changelog or version bump. Commit messages follow Conventional Commits (feat:, fix:, chore:, …) and are linted locally by husky + commitlint. Version math lives in .releaserc.cjs.

Promote Bump Example
dev (every releasable push) +0.0.1 patch, as a prerelease 0.1.0 β†’ 0.1.1-dev.1 β†’ 0.1.1-dev.2
stg β†’ main (the clone) +0.1.0 minor, stable 0.1.0 β†’ 0.2.0

stg does not cut a version of its own. The +0.1.0 happens when Sync stg to main clones stg onto main and Release runs there.

  • dev is the prerelease line. GitHub Releases are marked Pre-release. Further pushes on the same patch keep incrementing the -dev.N suffix until the next +0.0.1.
  • main is the stable line. That +0.1.0 publishes on the default channel, then back-merges main into dev so both branches share the same baseline. package.json / CHANGELOG.md conflicts during that back-merge are resolved in CI by keeping dev's package contents while adopting main's released version.

While the site is pre-1.0, neither line cuts a major. Reserve 1.0.0 for a deliberate stable launch β€” change .releaserc.cjs when you are ready to promote majors again.

Never edit CHANGELOG.md by hand. The public /changelog page is a separate marketing surface (release blog posts), not this file.

Contributing

We welcome issues and pull requests. Please read CONTRIBUTING.md (also at contribution.md) before you start.

By contributing you agree to the CLA: copyright in your contribution is assigned to Nexow, Inc. so this project stays company property while remaining Apache-2.0.

License, ownership, and attribution

Copyright 2026 Nexow, Inc.

Licensed under the Apache License, Version 2.0.
Legal entity Nexow, Inc.
Brand nexow.ai Β· x.nexow.ai
Address 2810 N Church St STE 89080, Wilmington, DE 19802, United States
License Apache License 2.0
Required notice NOTICE β€” must ship with every fork and redistributed copy
Trademarks TRADEMARKS.md β€” not licensed

The Apache License grants a copyright and patent license to use this Work. It does not transfer ownership of the project, and it does not grant rights in the Nexow name, logo, or other marks.

If you fork or reuse this repository, keep LICENSE and NOTICE, credit Nexow, Inc., and do not present your fork as an official Nexow product.

Suggested credit:

Based on nexow-web by Nexow, Inc. (https://nexow.ai)
Copyright 2026 Nexow, Inc. Licensed under Apache-2.0.

Contact

About

🌐 Nexow's landing Astro page

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages