├── frontend ├── src │ ├── vite-env.d.ts │ ├── lib │ │ └── utils.ts │ ├── main.tsx │ ├── components │ │ ├── ui │ │ │ ├── textarea.tsx │ │ │ ├── input.tsx │ │ │ ├── badge.tsx │ │ │ ├── scroll-area.tsx │ │ │ ├── tabs.tsx │ │ │ ├── button.tsx │ │ │ ├── card.tsx │ │ │ └── select.tsx │ │ ├── WelcomeScreen.tsx │ │ ├── ActivityTimeline.tsx │ │ ├── InputForm.tsx │ │ └── ChatMessagesView.tsx │ ├── global.css │ └── App.tsx ├── .gitignore ├── index.html ├── components.json ├── tsconfig.node.json ├── eslint.config.js ├── vite.config.ts ├── tsconfig.json ├── public │ └── vite.svg └── package.json ├── backend ├── src │ └── agent │ │ ├── __init__.py │ │ ├── tools_and_schemas.py │ │ ├── state.py │ │ ├── configuration.py │ │ ├── app.py │ │ ├── prompts.py │ │ ├── utils.py │ │ └── graph.py ├── .env.example ├── langgraph.json ├── LICENSE ├── pyproject.toml ├── Makefile └── .gitignore ├── .DS_Store ├── demo.jpeg ├── demo2.jpeg ├── Makefile ├── README.md └── LICENSE /frontend/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /backend/src/agent/__init__.py: -------------------------------------------------------------------------------- 1 | from agent.graph import graph 2 | 3 | __all__ = ["graph"] 4 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daiwk/anyllm-fullstack-langgraph-quickstart/HEAD/.DS_Store -------------------------------------------------------------------------------- /demo.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daiwk/anyllm-fullstack-langgraph-quickstart/HEAD/demo.jpeg -------------------------------------------------------------------------------- /demo2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daiwk/anyllm-fullstack-langgraph-quickstart/HEAD/demo2.jpeg -------------------------------------------------------------------------------- /backend/.env.example: -------------------------------------------------------------------------------- 1 | # OPENAI_API_BASE=http://localhost:1234/v1 2 | # OPENAI_API_KEY=lm-studio 3 | # LANGSMITH_API_KEY=xx 4 | # GOOGLE_SEARCH_API_KEY=xx 5 | # GOOGLE_SEARCH_CX=xx 6 | -------------------------------------------------------------------------------- /frontend/src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { type ClassValue, clsx } from "clsx"; 2 | import { twMerge } from "tailwind-merge"; 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)); 6 | } 7 | -------------------------------------------------------------------------------- /backend/langgraph.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": ["."], 3 | "graphs": { 4 | "agent": "./src/agent/graph.py:graph" 5 | }, 6 | "http": { 7 | "app": "./src/agent/app.py:app" 8 | }, 9 | "env": ".env" 10 | } 11 | -------------------------------------------------------------------------------- /frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /frontend/src/main.tsx: -------------------------------------------------------------------------------- 1 | import { StrictMode } from "react"; 2 | import { createRoot } from "react-dom/client"; 3 | import { BrowserRouter } from "react-router-dom"; 4 | import "./global.css"; 5 | import App from "./App.tsx"; 6 | 7 | createRoot(document.getElementById("root")!).render( 8 | 9 | 10 | 11 | 12 | 13 | ); 14 | -------------------------------------------------------------------------------- /frontend/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + React + TS 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "new-york", 4 | "rsc": false, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "", 8 | "css": "src/app.css", 9 | "baseColor": "neutral", 10 | "cssVariables": true, 11 | "prefix": "" 12 | }, 13 | "aliases": { 14 | "components": "@/components", 15 | "utils": "@/lib/utils", 16 | "ui": "@/components/ui", 17 | "lib": "@/lib", 18 | "hooks": "@/hooks" 19 | }, 20 | "iconLibrary": "lucide" 21 | } -------------------------------------------------------------------------------- /frontend/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", 4 | "target": "ES2022", 5 | "lib": ["ES2023"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "isolatedModules": true, 13 | "moduleDetection": "force", 14 | "noEmit": true, 15 | 16 | /* Linting */ 17 | "strict": true, 18 | "noUnusedLocals": true, 19 | "noUnusedParameters": true, 20 | "noFallthroughCasesInSwitch": true, 21 | "noUncheckedSideEffectImports": true 22 | }, 23 | "include": ["vite.config.ts"] 24 | } 25 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: help dev-frontend dev-backend dev 2 | 3 | help: 4 | @echo "Available commands:" 5 | @echo " make dev-frontend - Starts the frontend development server (Vite)" 6 | @echo " make dev-backend - Starts the backend development server (Uvicorn with reload)" 7 | @echo " make dev - Starts both frontend and backend development servers" 8 | 9 | dev-frontend: 10 | @echo "Starting frontend development server..." 11 | @cd frontend && npm run dev 12 | 13 | dev-backend: 14 | @echo "Starting backend development server..." 15 | @cd backend && langgraph dev 16 | 17 | # Run frontend and backend concurrently 18 | dev: 19 | @echo "Starting both frontend and backend development servers..." 20 | @make dev-frontend & make dev-backend -------------------------------------------------------------------------------- /frontend/src/components/ui/textarea.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import { cn } from "@/lib/utils" 4 | 5 | function Textarea({ className, ...props }: React.ComponentProps<"textarea">) { 6 | return ( 7 |