Dateien nach "gtm-architect" hochladen
This commit is contained in:
20
gtm-architect/README.md
Normal file
20
gtm-architect/README.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<div align="center">
|
||||||
|
<img width="1200" height="475" alt="GHBanner" src="https://github.com/user-attachments/assets/0aa67016-6eaf-458a-adb2-6e31a0763ed6" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
# Run and deploy your AI Studio app
|
||||||
|
|
||||||
|
This contains everything you need to run your app locally.
|
||||||
|
|
||||||
|
View your app in AI Studio: https://ai.studio/apps/drive/1bvzSOz-NYMzDph6718RuAy1mnCSjjylz
|
||||||
|
|
||||||
|
## Run Locally
|
||||||
|
|
||||||
|
**Prerequisites:** Node.js
|
||||||
|
|
||||||
|
|
||||||
|
1. Install dependencies:
|
||||||
|
`npm install`
|
||||||
|
2. Set the `GEMINI_API_KEY` in [.env.local](.env.local) to your Gemini API key
|
||||||
|
3. Run the app:
|
||||||
|
`npm run dev`
|
||||||
5
gtm-architect/metadata.json
Normal file
5
gtm-architect/metadata.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"name": "Roboplanet GTM Architect",
|
||||||
|
"description": "A strategic AI engine for developing Go-to-Market strategies for robotic products, ensuring product-market fit and operational feasibility.",
|
||||||
|
"requestFramePermissions": []
|
||||||
|
}
|
||||||
25
gtm-architect/package.json
Normal file
25
gtm-architect/package.json
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"name": "roboplanet-gtm-architect",
|
||||||
|
"private": true,
|
||||||
|
"version": "0.0.0",
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite",
|
||||||
|
"build": "vite build",
|
||||||
|
"preview": "vite preview"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@google/genai": "^1.34.0",
|
||||||
|
"react": "^19.2.3",
|
||||||
|
"react-markdown": "^10.1.0",
|
||||||
|
"remark-gfm": "^4.0.0",
|
||||||
|
"react-dom": "^19.2.3",
|
||||||
|
"lucide-react": "^0.562.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^22.14.0",
|
||||||
|
"@vitejs/plugin-react": "^5.0.0",
|
||||||
|
"typescript": "~5.8.2",
|
||||||
|
"vite": "^6.2.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
29
gtm-architect/tsconfig.json
Normal file
29
gtm-architect/tsconfig.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ES2022",
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"useDefineForClassFields": false,
|
||||||
|
"module": "ESNext",
|
||||||
|
"lib": [
|
||||||
|
"ES2022",
|
||||||
|
"DOM",
|
||||||
|
"DOM.Iterable"
|
||||||
|
],
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"types": [
|
||||||
|
"node"
|
||||||
|
],
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"isolatedModules": true,
|
||||||
|
"moduleDetection": "force",
|
||||||
|
"allowJs": true,
|
||||||
|
"jsx": "react-jsx",
|
||||||
|
"paths": {
|
||||||
|
"@/*": [
|
||||||
|
"./*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"allowImportingTsExtensions": true,
|
||||||
|
"noEmit": true
|
||||||
|
}
|
||||||
|
}
|
||||||
85
gtm-architect/types.ts
Normal file
85
gtm-architect/types.ts
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
export enum Phase {
|
||||||
|
Input = 0,
|
||||||
|
ProductAnalysis = 1,
|
||||||
|
ICPDiscovery = 2,
|
||||||
|
WhaleHunting = 3,
|
||||||
|
Strategy = 4,
|
||||||
|
AssetGeneration = 5,
|
||||||
|
SalesEnablement = 6,
|
||||||
|
}
|
||||||
|
|
||||||
|
export type Language = 'en' | 'de';
|
||||||
|
export type Theme = 'light' | 'dark';
|
||||||
|
|
||||||
|
export interface Message {
|
||||||
|
role: 'user' | 'model';
|
||||||
|
content: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Phase1Data {
|
||||||
|
features: string[];
|
||||||
|
constraints: string[];
|
||||||
|
conflictCheck: {
|
||||||
|
hasConflict: boolean;
|
||||||
|
details: string;
|
||||||
|
relatedProduct?: string;
|
||||||
|
};
|
||||||
|
rawAnalysis: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Phase2Data {
|
||||||
|
icps: {
|
||||||
|
name: string;
|
||||||
|
rationale: string;
|
||||||
|
}[];
|
||||||
|
dataProxies: {
|
||||||
|
target: string;
|
||||||
|
method: string;
|
||||||
|
}[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Phase3Data {
|
||||||
|
whales: {
|
||||||
|
industry: string;
|
||||||
|
accounts: string[];
|
||||||
|
}[];
|
||||||
|
roles: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Phase4Data {
|
||||||
|
strategyMatrix: {
|
||||||
|
segment: string;
|
||||||
|
painPoint: string;
|
||||||
|
angle: string;
|
||||||
|
differentiation: string;
|
||||||
|
}[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Phase6Data {
|
||||||
|
battlecards: {
|
||||||
|
persona: string;
|
||||||
|
objection: string;
|
||||||
|
responseScript: string;
|
||||||
|
}[];
|
||||||
|
visualPrompts: {
|
||||||
|
title: string;
|
||||||
|
context: string;
|
||||||
|
prompt: string;
|
||||||
|
}[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AppState {
|
||||||
|
currentPhase: Phase;
|
||||||
|
isLoading: boolean;
|
||||||
|
history: Message[];
|
||||||
|
productInput: string;
|
||||||
|
productImages: string[]; // Array of Base64 strings
|
||||||
|
phase1Result?: Phase1Data;
|
||||||
|
phase2Result?: Phase2Data;
|
||||||
|
phase3Result?: Phase3Data;
|
||||||
|
phase4Result?: Phase4Data;
|
||||||
|
phase5Result?: string; // Markdown content
|
||||||
|
phase6Result?: Phase6Data;
|
||||||
|
language: Language;
|
||||||
|
theme: Theme;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user