Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions apps/sarah-s-app-wed-aug-26-2-14-31-pm/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

# Environment variables
.env
.env.local
.env.*.local
29 changes: 29 additions & 0 deletions apps/sarah-s-app-wed-aug-26-2-14-31-pm/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Sarah's App Wed, Aug 26, 2:14:31 pm

This app is part of a Datadog Apps workspace. Shared guidance — including layout, dependencies, testing policy, and how changes ship — lives at the workspace root; read it before assuming anything not covered below.

## Read relevant guides
- Embedded app context / routing / storage: ../../docs/agents/runtime-context.md
- Backend functions (*.backend.ts): ../../docs/agents/backend-functions.md
- Local dev / auth / build / upload: ../../docs/agents/build-upload-auth.md
- CI/CD (GitHub Actions deploy workflow): ../../docs/agents/cicd.md
- Data access (DDSQL vs. Action Catalog, Connections, datastores): ../../docs/agents/data.md
- Triggering or polling Workflow Automation from a backend function: ../../docs/agents/workflow-automation.md
- Upgrading `@datadog/vite-plugin` or `@datadog/action-catalog`: ../../docs/agents/upgrading.md
- Workspace overview (layout, dependencies, testing, shipping/CI): ../../AGENTS.md

## This app
- This app owns its unique `apps.identifier` in `./vite.config.ts` — never share or copy it.
- Run locally: `npm run dev -w apps/sarah-s-app-wed-aug-26-2-14-31-pm` (from the workspace root) or `npm run dev` (from this directory).
- Upload: `npm run upload -w apps/sarah-s-app-wed-aug-26-2-14-31-pm`.

## Testing

Storybook stories are not required for this app right now — skip them unless explicitly asked. Playwright is still encouraged for browser validation when available, especially for visual/design changes. Validate with `npm run dev`, `npm run build`, and `npm run typecheck`/`npm run lint`.

## Rules

- Keep secret-dependent work and privileged API calls in backend functions.
- Never hardcode API keys, app keys, or OAuth tokens.
- Prefer the generated npm scripts; this workspace uses npm.
- For any workspace, dependency, lockfile, or pull-request change, follow `Required lockfile gate before opening or updating a PR` in ../../AGENTS.md. That root section is the source of truth; do not create an app-local lockfile.
1 change: 1 addition & 0 deletions apps/sarah-s-app-wed-aug-26-2-14-31-pm/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"$schema": "https://unpkg.com/@datadog/create-apps/dist/datadog-app.config.schema.json",
"datadogSite": "datadoghq.com",
"id": "733d9160-ecc5-44b5-b9dc-5b76ad34737c",
"name": "Sarah's App Wed, Aug 26, 2:14:31 pm"
}
15 changes: 15 additions & 0 deletions apps/sarah-s-app-wed-aug-26-2-14-31-pm/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Sarah's App Wed, Aug 26, 2:14:31 pm</title>
</head>

<body>
<div id="app"></div>
<script type="module" src="/src/main.tsx"></script>
</body>

</html>
24 changes: 24 additions & 0 deletions apps/sarah-s-app-wed-aug-26-2-14-31-pm/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"name": "sarah-s-app-wed-aug-26-2-14-31-pm",
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "vite",
"build": "vite build",
"upload": "DD_APPS_UPLOAD_ASSETS=1 vite build",
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
"lint:fix": "eslint . --ext ts,tsx --fix",
"preview": "vite preview",
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@datadog/action-catalog": "^0.0.3",
"@datadog/druids": "^0.0.7",
"@tanstack/react-query": "^5.101.2",
"react": "^18.3.1",
"react-dom": "^18.3.1"
},
"optionalDependencies": {
"@napi-rs/keyring": "^1.3.0"
}
}
Binary file not shown.
45 changes: 45 additions & 0 deletions apps/sarah-s-app-wed-aug-26-2-14-31-pm/src/App.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
.alexander-page {
align-items: center;
background:
radial-gradient(circle at 18% 24%, rgba(255, 176, 0, 0.18), transparent 24%),
radial-gradient(circle at 82% 70%, rgba(255, 219, 92, 0.22), transparent 22%),
#fff8f8;
display: flex;
justify-content: center;
min-height: 100vh;
}

.alexander-title {
color: #d11124;
font-size: 80px;
letter-spacing: 0;
line-height: 1;
margin: 0;
position: relative;
text-align: center;
text-transform: lowercase;
text-shadow: 0 4px 18px rgba(209, 17, 36, 0.18);
}

.sparkle {
color: #ffb000;
display: inline-block;
font-size: 0.5em;
line-height: 1;
text-shadow: 0 0 16px rgba(255, 176, 0, 0.65);
transform: translateY(-0.48em);
}

.sparkle-left {
margin-right: 0.24em;
}

.sparkle-right {
margin-left: 0.24em;
}

@media (max-width: 520px) {
.alexander-title {
font-size: 48px;
}
}
22 changes: 22 additions & 0 deletions apps/sarah-s-app-wed-aug-26-2-14-31-pm/src/App.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { Spacing } from '@datadog/druids/layout/Spacing';
import { Text } from '@datadog/druids/typography/Text';

import './App.css';

function App() {
return (
<Spacing as="main" className="alexander-page" padding="lg">
<Text as="h1" className="alexander-title" size="xl" weight="bold">
<span aria-hidden="true" className="sparkle sparkle-left">
</span>
alexander
<span aria-hidden="true" className="sparkle sparkle-right">
</span>
</Text>
</Spacing>
);
}

export default App;
24 changes: 24 additions & 0 deletions apps/sarah-s-app-wed-aug-26-2-14-31-pm/src/main.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import '@datadog/druids/styles.css';

import { DruidsEnvironment } from '@datadog/druids/layout/DruidsEnvironment';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';

import App from './App';

const queryClient = new QueryClient();
const appRoot = document.getElementById('app');
if (appRoot) {
createRoot(appRoot).render(
<StrictMode>
<QueryClientProvider client={queryClient}>
<DruidsEnvironment backgroundColor="standard">
<App />
</DruidsEnvironment>
</QueryClientProvider>
</StrictMode>,
);
} else {
console.error('Missing #app div for createRoot.');
}
26 changes: 26 additions & 0 deletions apps/sarah-s-app-wed-aug-26-2-14-31-pm/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"lib": [
"ES2020",
"DOM",
"DOM.Iterable"
],
"module": "ESNext",
"skipLibCheck": true,
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true
},
"include": [
"src"
]
}
57 changes: 57 additions & 0 deletions apps/sarah-s-app-wed-aug-26-2-14-31-pm/vite.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import { datadogVitePlugin } from '@datadog/vite-plugin';
import react from '@vitejs/plugin-react';
import { defineConfig } from 'vite';

import rootManifest from '../../package.json';
import { version } from './package.json';
import datadogAppConfig from './datadog-app.config.json';

const hasDatadogApiKeys = Boolean(
(process.env.DD_API_KEY || process.env.DATADOG_API_KEY) &&
(process.env.DD_APP_KEY || process.env.DATADOG_APP_KEY),
);
const datadogSite = process.env.DD_SITE || process.env.DATADOG_SITE || datadogAppConfig.datadogSite;

if (!process.env.DD_SITE && !process.env.DATADOG_SITE) {
process.env.DD_SITE = datadogSite;
}

export default defineConfig({
base: './',
build: {
sourcemap: true,
},
plugins: [
react(),
datadogVitePlugin({
logLevel: 'debug',
auth: {
site: datadogSite || rootManifest.datadogApps?.site,
apiKey: process.env.DD_API_KEY,
appKey: process.env.DD_APP_KEY,
},
apps: {
enable: true,
identifier: '733d9160-ecc5-44b5-b9dc-5b76ad34737c',
name: datadogAppConfig.name,
authOverrides: {
method: hasDatadogApiKeys ? 'apiKey' : 'oauth',
},
},
errorTracking: {
enable: hasDatadogApiKeys,
sourcemaps: {
minifiedPathPrefix: '/',
service: datadogAppConfig.name,
releaseVersion: version,
},
},
metadata: {
name: datadogAppConfig.name,
},
metrics: {
enable: hasDatadogApiKeys,
},
}),
],
});
17 changes: 17 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.