diff --git a/package-lock.json b/package-lock.json index 2021513..eef013f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,11 +9,11 @@ "version": "0.0.0", "dependencies": { "@globaltypesystem/gts-ts": "^0.4.0", - "lucide-react": "^0.554.0", - "react": "^19.2.3", - "react-dom": "^19.2.0", + "lucide-react": "^0.562.0", + "react": "19.2.3", + "react-dom": "19.2.3", "react-icons": "^5.7.0", - "react-router-dom": "^7.9.6" + "react-router-dom": "^7.11.0" }, "devDependencies": { "@types/node": "^22.14.0", @@ -1926,9 +1926,9 @@ } }, "node_modules/lucide-react": { - "version": "0.554.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.554.0.tgz", - "integrity": "sha512-St+z29uthEJVx0Is7ellNkgTEhaeSoA42I7JjOCBCrc5X6LYMGSv0P/2uS5HDLTExP5tpiqRD2PyUEOS6s9UXA==", + "version": "0.562.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.562.0.tgz", + "integrity": "sha512-82hOAu7y0dbVuFfmO4bYF1XEwYk/mEbM5E+b1jgci/udUBEE/R7LF5Ip0CCEmXe8AybRM8L+04eP+LGZeDvkiw==", "license": "ISC", "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" @@ -2110,15 +2110,15 @@ } }, "node_modules/react-dom": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.1.tgz", - "integrity": "sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", "license": "MIT", "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.1" + "react": "^19.2.3" } }, "node_modules/react-icons": { @@ -2141,9 +2141,9 @@ } }, "node_modules/react-router": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.9.6.tgz", - "integrity": "sha512-Y1tUp8clYRXpfPITyuifmSoE2vncSME18uVLgaqyxh9H35JWpIfzHo+9y3Fzh5odk/jxPW29IgLgzcdwxGqyNA==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.18.3.tgz", + "integrity": "sha512-gyXgtdr5uACJ5b1Q4udzjVV+tb/rlHIMJKuJ0e89R4Kzgz47z/rgP0dIKxktqIEUhDHluGTPJJH/wRha7CyqsA==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", @@ -2163,12 +2163,12 @@ } }, "node_modules/react-router-dom": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.9.6.tgz", - "integrity": "sha512-2MkC2XSXq6HjGcihnx1s0DBWQETI4mlis4Ux7YTLvP67xnGxCvq+BcCQSO81qQHVUTM1V53tl4iVVaY5sReCOA==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.18.3.tgz", + "integrity": "sha512-ytVbyBBM7vMfRCam25r0WMhSVSom909A8p+8m0/f1w853dz/xfFu6etAT2SEbVoSnI+ZoPRDqIsQXVT89gp7kg==", "license": "MIT", "dependencies": { - "react-router": "7.9.6" + "react-router": "7.18.3" }, "engines": { "node": ">=20.0.0" diff --git a/package.json b/package.json index ebf89b7..756796d 100644 --- a/package.json +++ b/package.json @@ -12,11 +12,11 @@ }, "dependencies": { "@globaltypesystem/gts-ts": "^0.4.0", - "lucide-react": "^0.554.0", - "react": "^19.2.3", - "react-dom": "^19.2.0", + "lucide-react": "^0.562.0", + "react": "19.2.3", + "react-dom": "19.2.3", "react-icons": "^5.7.0", - "react-router-dom": "^7.9.6" + "react-router-dom": "^7.11.0" }, "devDependencies": { "@types/node": "^22.14.0", diff --git a/pages/Landing.tsx b/pages/Landing.tsx index e655026..5689c37 100644 --- a/pages/Landing.tsx +++ b/pages/Landing.tsx @@ -199,21 +199,21 @@ export const Landing: React.FC = () => { data schemas and instances across teams, vendors, and runtimes.

- Read the Spec - - + - View on GitHub - + View the docs +

Built for CTOs, architects, and engineering leaders.
@@ -336,10 +336,10 @@ export const Landing: React.FC = () => { className='container space-y-6 py-8 md:py-12 lg:py-24 mx-auto px-4 border-t border-slate-100 dark:border-slate-900' >

- Why teams choose GTS + Why teams use GTS identifiers

- {/* 1. Human-readable identifiers */} + {/* 1. Human-readable */}
@@ -347,7 +347,7 @@ export const Landing: React.FC = () => {

- Human-readable identifiers + Human-readable

Every identifier encodes vendor, package, namespace, type, and @@ -357,37 +357,15 @@ export const Landing: React.FC = () => {

- {/* 2. JSON Schema / YAML / TypeSpec compatible */} -
-
-
-
- -
-

- JSON Schema / YAML / TypeSpec compatible -

-

- GTS Type Schemas are standard JSON Schema documents with{' '} - - x-gts-* - {' '} - extensions. Standard JSON Schema tooling can process the schema - body, while GTS-aware tooling enforces the additional registry - rules. YAML and TypeSpec sources may compile to the canonical form. -

-
-
- - {/* 3. Versioned identifiers */} -
+ {/* 2. Versioned */} +

- Versioned identifiers + Versioned

Major and optional minor versions are part of the identifier. @@ -398,15 +376,15 @@ export const Landing: React.FC = () => {

- {/* 4. Cross-system unique identifiers */} -
+ {/* 3. Cross-system unique */} +

- Cross-system unique identifiers + Cross-system unique

The vendor-qualified structure prevents naming collisions @@ -416,7 +394,28 @@ export const Landing: React.FC = () => {

- {/* 5. API data types extension */} + {/* 4. Enables granular access control */} +
+
+
+
+ +
+

+ Enables granular access control +

+

+ Build RBAC/ABAC policies with wildcard patterns like{' '} + + gts.vendor.pkg.* + + . Authorize entire type families or filter by attribute + predicates — no explicit allowlists to maintain. +

+
+
+ + {/* 5. Enables API data types inheritance */}
@@ -424,33 +423,37 @@ export const Landing: React.FC = () => {

- API data types extension + Enables API data types Inheritance

- Derive compatible types from platform base schemas. Store base - fields in indexed columns and vendor extensions in JSON/JSONB - — no DDL migrations, full API compatibility preserved. + Derive vendor-specific types from platform base types while + preserving API compatibility, e.g. by defining some data or payload property schema. Store common fields in indexed + columns, extensions in JSON/JSONB — no DDL migrations needed, + full type safety maintained across the inheritance chain.

- {/* 6. Granular access control */} -
-
+ {/* 6. Provides types metadata convention */} +
+
-
- +
+

- Granular access control + Provides types metadata convention

- Build RBAC/ABAC policies with wildcard patterns like{' '} - - gts.vendor.pkg.* - - . Authorize entire type families or filter by attribute - predicates — no explicit allowlists to maintain. + A JSON Schema defines the shape of data but not how to + process it. GTS adds{' '} + + x-gts-traits + {' '} + — type-level metadata such as retention policies, PII-masking + directives, indexing hints, and stream/topic associations. + Traits are inherited along the type chain, so platform-wide + defaults propagate automatically to every derived type.