diff --git a/.env.example b/.env.example new file mode 100644 index 000000000..f1ca09d94 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +# Environment variables for the demo +OPENAI_API_KEY= diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 000000000..8d35cb327 --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,2 @@ +__pycache__ +*.pyc diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 000000000..07c6e42b7 --- /dev/null +++ b/backend/README.md @@ -0,0 +1,4 @@ +# Backend + +This folder contains the Python backend using FastAPI and the OpenAI Agents SDK. +Run `uvicorn backend.main:app --reload` to start the development server. diff --git a/backend/__init__.py b/backend/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/main.py b/backend/main.py new file mode 100644 index 000000000..36a944bbc --- /dev/null +++ b/backend/main.py @@ -0,0 +1,8 @@ +from fastapi import FastAPI + +app = FastAPI() + + +@app.get("/health") +def health() -> dict[str, str]: + return {"status": "ok"} diff --git a/backend/pyproject.toml b/backend/pyproject.toml new file mode 100644 index 000000000..2e686c451 --- /dev/null +++ b/backend/pyproject.toml @@ -0,0 +1,12 @@ +[project] +name = "banking-backend" +version = "0.1.0" +requires-python = ">=3.11" +dependencies = [ + "fastapi", + "uvicorn", + "openai", +] + +[tool.ruff] +line-length = 88 diff --git a/backend/tests/test_main.py b/backend/tests/test_main.py new file mode 100644 index 000000000..3134b84ca --- /dev/null +++ b/backend/tests/test_main.py @@ -0,0 +1,9 @@ +from fastapi.testclient import TestClient +from backend.main import app + + +def test_health() -> None: + client = TestClient(app) + response = client.get("/health") + assert response.status_code == 200 + assert response.json() == {"status": "ok"} diff --git a/docs/banking-demo.md b/docs/banking-demo.md new file mode 100644 index 000000000..6867886c2 --- /dev/null +++ b/docs/banking-demo.md @@ -0,0 +1,3 @@ +# Agentic Private Banker Demo + +This document provides a high-level overview of the multi-agent banking prototype. diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 000000000..a60845048 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,3 @@ +node_modules +.next +out diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 000000000..94eee0718 --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,4 @@ +# Frontend + +This folder contains the NextJS frontend for the Agentic Private Banker demo. +Run `npm install` and `npm run dev` to start the development server. diff --git a/frontend/next.config.js b/frontend/next.config.js new file mode 100644 index 000000000..91ef62f0d --- /dev/null +++ b/frontend/next.config.js @@ -0,0 +1,6 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, +}; + +module.exports = nextConfig; diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 000000000..4a8f880b9 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,15 @@ +{ + "name": "banking-frontend", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start" + }, + "dependencies": { + "next": "latest", + "react": "latest", + "react-dom": "latest" + } +} diff --git a/frontend/pages/index.tsx b/frontend/pages/index.tsx new file mode 100644 index 000000000..46f8e3bf0 --- /dev/null +++ b/frontend/pages/index.tsx @@ -0,0 +1,10 @@ +import React from 'react'; + +export default function Home() { + return ( +
+

Agentic Private Banker (Demo)

+

Prototype frontend using NextJS.

+
+ ); +} diff --git a/frontend/public/.gitkeep b/frontend/public/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/frontend/tests/example.test.ts b/frontend/tests/example.test.ts new file mode 100644 index 000000000..9fc42213e --- /dev/null +++ b/frontend/tests/example.test.ts @@ -0,0 +1,2 @@ +// Placeholder test file for frontend +export {}; // to make this a module diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 000000000..93a83a407 --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": false, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve" + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +} diff --git a/start.sh b/start.sh new file mode 100755 index 000000000..90e5e585f --- /dev/null +++ b/start.sh @@ -0,0 +1,6 @@ +#!/bin/bash +# Start frontend and backend for the Agentic Private Banker demo + +( cd backend && uvicorn backend.main:app --reload & ) +( cd frontend && npm run dev & ) +wait