Overview
Foundation Nova is the JavaScript and TypeScript edition of Foundation. It provides strict presets and guided tooling so you can build with confidence and predictability.
Why Nova?
- Strong defaults that lower setup overhead and reduce drift.
- Strict linting and typing that catch defects early and keep code dependable.
- Guided generators that help scaffold and maintain project files.
- Freedom with guardrails lets you override when needed while sensible restrictions prevent risky patterns.
- Consistent developer experience across projects and repositories.
Designed For…
- Developers who want clear rules with override control when needed.
- Teams that prefer strict code with Airbnb-style familiarity.
- Projects that need predictable builds and low setup overhead.
Our Values ✨
- Automatic — All project essentials are provisioned with minimal DevOps effort. You should not need to wire up basics by hand; the defaults handle it.
- Explicit — Every configuration detail is visible and precise. If a nuance matters (for example
"."
vs"./"
, or pairingmodule
withmoduleResolution
), it must be written out, not implied. - Independence — Configurations (e.g. ESLint, tsconfig) stand on their own. There are no hidden base presets or cross-dependencies filling in values behind the scenes.
- Predictable — Given the same inputs, the outputs are always the same. Features that introduce non-determinism (e.g.
incremental
, artifact caches, package-lock drift) are disallowed. - Modern but stable — Use forward-looking features that are officially supported and reliable. Avoid unstable or experimental options where bugs are still being worked out.
Scope and Boundaries
- Node.js LTS first — Nova tracks the latest long-term support baselines for Node.js.
- Modern modules — Nova targets ESM-based builds and excludes legacy "script" pipelines.
- No experimental features — Only officially supported and stable options are allowed. Your project is not a beta playground.
Preset Philosophy
- Airbnb-inspired — Strict, familiar defaults adapted from eslint-config-airbnb.
- Pre-curated — Each preset is a complete config with correctness, safety, and style rules already chosen for you. No need to hand-pick individual rules.
- Scenario-based — Presets are tailored to different intents: library, browser app, Node service, or framework. No single "base" config to inherit from.
- Compositional — Designed to work with runtime fundamentals (e.g., bundler frameworks, node scripts) rather than fight them. You pick the preset that matches what you are building and extend it as needed.
- Balanced freedom — Overrides are allowed so projects can grow, but guardrails prevent risky or disliked patterns.