From 592c019aafd5c24d044526b548fdff7181fc4dd6 Mon Sep 17 00:00:00 2001
From: datadog-bits-staging
<264369727+datadog-bits-staging@users.noreply.github.com>
Date: Wed, 19 Aug 2026 17:21:22 +0000
Subject: [PATCH] Add Hello World Datadog app
Co-authored-by: setnilson <110850377+setnilson@users.noreply.github.com>
---
.../index.html | 13 ++++
.../package.json | 30 +++++++++
.../src/App.css | 62 +++++++++++++++++++
.../src/App.tsx | 15 +++++
.../src/main.tsx | 16 +++++
.../src/vite-env.d.ts | 1 +
.../tsconfig.json | 7 +++
.../vite.config.ts | 53 ++++++++++++++++
package-lock.json | 59 ++++++++++++------
9 files changed, 238 insertions(+), 18 deletions(-)
create mode 100644 apps/sarah-s-app-wed-aug-19-1-18-25-pm/index.html
create mode 100644 apps/sarah-s-app-wed-aug-19-1-18-25-pm/package.json
create mode 100644 apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/App.css
create mode 100644 apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/App.tsx
create mode 100644 apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/main.tsx
create mode 100644 apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/vite-env.d.ts
create mode 100644 apps/sarah-s-app-wed-aug-19-1-18-25-pm/tsconfig.json
create mode 100644 apps/sarah-s-app-wed-aug-19-1-18-25-pm/vite.config.ts
diff --git a/apps/sarah-s-app-wed-aug-19-1-18-25-pm/index.html b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/index.html
new file mode 100644
index 0000000..9dcc1d2
--- /dev/null
+++ b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Hello World
+
+
+
+
+
+
diff --git a/apps/sarah-s-app-wed-aug-19-1-18-25-pm/package.json b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/package.json
new file mode 100644
index 0000000..8676ca1
--- /dev/null
+++ b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "sarah-s-app-wed-aug-19-1-18-25-pm",
+ "version": "0.0.1",
+ "private": true,
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "upload": "DD_APPS_UPLOAD_ASSETS=1 vite build",
+ "preview": "vite preview",
+ "typecheck": "tsc --noEmit",
+ "lint": "eslint . --report-unused-disable-directives --max-warnings 0",
+ "lint:fix": "eslint . --fix"
+ },
+ "dependencies": {
+ "react": "^19.2.3",
+ "react-dom": "^19.2.3"
+ },
+ "optionalDependencies": {
+ "@napi-rs/keyring": "^1.3.0"
+ },
+ "devDependencies": {
+ "@datadog/vite-plugin": "3.2.9-dev.0",
+ "@types/react": "^19.2.9",
+ "@types/react-dom": "^19.2.3",
+ "@vitejs/plugin-react": "^5.1.2",
+ "eslint": "^9.39.2",
+ "typescript": "^5.9.3",
+ "vite": "^7.3.1"
+ }
+}
diff --git a/apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/App.css b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/App.css
new file mode 100644
index 0000000..8024032
--- /dev/null
+++ b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/App.css
@@ -0,0 +1,62 @@
+* {
+ box-sizing: border-box;
+}
+
+body {
+ margin: 0;
+ min-width: 320px;
+ background: #f6f8fb;
+ color: #1f2933;
+ font-family:
+ Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
+}
+
+.hello-app {
+ display: grid;
+ min-height: 100vh;
+ place-items: center;
+ padding: 24px;
+}
+
+.hello-panel {
+ width: min(100%, 720px);
+ padding: 40px;
+ border: 1px solid #d9e0ea;
+ border-radius: 8px;
+ background: #ffffff;
+ box-shadow: 0 18px 45px rgba(35, 48, 73, 0.1);
+}
+
+.hello-kicker {
+ margin: 0 0 10px;
+ color: #667085;
+ font-size: 0.875rem;
+ font-weight: 700;
+ letter-spacing: 0;
+}
+
+.hello-panel h1 {
+ margin: 0;
+ color: #111827;
+ font-size: 3rem;
+ line-height: 1.05;
+ letter-spacing: 0;
+}
+
+.hello-panel p:last-child {
+ max-width: 560px;
+ margin: 18px 0 0;
+ color: #526172;
+ font-size: 1rem;
+ line-height: 1.6;
+}
+
+@media (max-width: 560px) {
+ .hello-panel {
+ padding: 28px;
+ }
+
+ .hello-panel h1 {
+ font-size: 2.25rem;
+ }
+}
diff --git a/apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/App.tsx b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/App.tsx
new file mode 100644
index 0000000..f51a68e
--- /dev/null
+++ b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/App.tsx
@@ -0,0 +1,15 @@
+import './App.css';
+
+function App() {
+ return (
+
+
+ Sarah's App
+ Hello, world!
+ Your Datadog App is ready.
+
+
+ );
+}
+
+export default App;
diff --git a/apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/main.tsx b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/main.tsx
new file mode 100644
index 0000000..c71a0ee
--- /dev/null
+++ b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/main.tsx
@@ -0,0 +1,16 @@
+import { StrictMode } from 'react';
+import { createRoot } from 'react-dom/client';
+
+import App from './App';
+
+const appRoot = document.getElementById('app');
+
+if (appRoot) {
+ createRoot(appRoot).render(
+
+
+ ,
+ );
+} else {
+ console.error('Missing #app div for createRoot.');
+}
diff --git a/apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/vite-env.d.ts b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/vite-env.d.ts
new file mode 100644
index 0000000..11f02fe
--- /dev/null
+++ b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/apps/sarah-s-app-wed-aug-19-1-18-25-pm/tsconfig.json b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/tsconfig.json
new file mode 100644
index 0000000..3f05503
--- /dev/null
+++ b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "include": [
+ "src",
+ "vite.config.ts"
+ ]
+}
diff --git a/apps/sarah-s-app-wed-aug-19-1-18-25-pm/vite.config.ts b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/vite.config.ts
new file mode 100644
index 0000000..ca594c6
--- /dev/null
+++ b/apps/sarah-s-app-wed-aug-19-1-18-25-pm/vite.config.ts
@@ -0,0 +1,53 @@
+import { datadogVitePlugin } from '@datadog/vite-plugin';
+import react from '@vitejs/plugin-react';
+import { defineConfig } from 'vite';
+
+import appManifest from './package.json';
+import rootManifest from '../../package.json';
+
+process.env.DD_SITE ||= rootManifest.datadogApps?.site;
+process.env.DATADOG_SITE ||= process.env.DD_SITE;
+process.env.DD_API_KEY ||= process.env.DATADOG_API_KEY;
+process.env.DD_APP_KEY ||= process.env.DATADOG_APP_KEY;
+
+const hasDatadogApiKeys = Boolean(process.env.DD_API_KEY && process.env.DD_APP_KEY);
+
+export default defineConfig({
+ base: './',
+ cacheDir: '../../node_modules/.vite/sarah-s-app-wed-aug-19-1-18-25-pm',
+ build: {
+ sourcemap: true,
+ },
+ plugins: [
+ react(),
+ datadogVitePlugin({
+ logLevel: 'debug',
+ auth: {
+ site: process.env.DD_SITE,
+ apiKey: process.env.DD_API_KEY,
+ appKey: process.env.DD_APP_KEY,
+ },
+ apps: {
+ enable: true,
+ authOverrides: {
+ method: hasDatadogApiKeys ? 'apiKey' : 'oauth',
+ },
+ identifier: 'dd6bc30b796b3230bb96be74f4ea94fc',
+ },
+ errorTracking: {
+ enable: hasDatadogApiKeys,
+ sourcemaps: {
+ minifiedPathPrefix: '/',
+ releaseVersion: appManifest.version,
+ service: appManifest.name,
+ },
+ },
+ metadata: {
+ name: 'Hello World',
+ },
+ metrics: {
+ enable: hasDatadogApiKeys,
+ },
+ }),
+ ],
+});
diff --git a/package-lock.json b/package-lock.json
index f322b2c..d8f482c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -72,26 +72,23 @@
"@types/react": "^18.0.0"
}
},
- "apps/sarah-s-app-wed-aug-12-1-34-27-pm/node_modules/react": {
- "version": "19.2.8",
- "resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz",
- "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==",
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "apps/sarah-s-app-wed-aug-12-1-34-27-pm/node_modules/react-dom": {
- "version": "19.2.8",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz",
- "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==",
- "license": "MIT",
+ "apps/sarah-s-app-wed-aug-19-1-18-25-pm": {
+ "version": "0.0.1",
"dependencies": {
- "scheduler": "^0.27.0"
+ "react": "^19.2.3",
+ "react-dom": "^19.2.3"
},
- "peerDependencies": {
- "react": "^19.2.8"
+ "devDependencies": {
+ "@datadog/vite-plugin": "3.2.9-dev.0",
+ "@types/react": "^19.2.9",
+ "@types/react-dom": "^19.2.3",
+ "@vitejs/plugin-react": "^5.1.2",
+ "eslint": "^9.39.2",
+ "typescript": "^5.9.3",
+ "vite": "^7.3.1"
+ },
+ "optionalDependencies": {
+ "@napi-rs/keyring": "^1.3.0"
}
},
"node_modules/@babel/code-frame": {
@@ -3340,6 +3337,28 @@
"node": ">=6"
}
},
+ "node_modules/react": {
+ "version": "19.2.8",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz",
+ "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "19.2.8",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz",
+ "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==",
+ "license": "MIT",
+ "dependencies": {
+ "scheduler": "^0.27.0"
+ },
+ "peerDependencies": {
+ "react": "^19.2.8"
+ }
+ },
"node_modules/react-refresh": {
"version": "0.18.0",
"dev": true,
@@ -3430,6 +3449,10 @@
"resolved": "apps/sarah-s-app-wed-aug-12-1-34-27-pm",
"link": true
},
+ "node_modules/sarah-s-app-wed-aug-19-1-18-25-pm": {
+ "resolved": "apps/sarah-s-app-wed-aug-19-1-18-25-pm",
+ "link": true
+ },
"node_modules/scheduler": {
"version": "0.27.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",