feat(phase-0): scaffold backend + web + docker + DB schema

- docker-compose.yml: timescaledb-ha (timescaledb 2.27 + vectorscale + pgvector + pgai)
  + backend (FastAPI, CUDA 12.1) + web (Next.js 14)
- docker-compose.gpu.yml: GPU profile overlay for RTX 3070 Ti
- build.bat: Windows bootstrap, auto-detects nvidia-smi and selects GPU/CPU compose
- backend: Dockerfile, pyproject.toml, FastAPI skeleton with /health and /health/db
- DB migration 001_init.sql: symbols (with trigram search), ohlcv_daily/1m (hypertables),
  macro_daily, trading_value_daily, news (vector embedding), predictions
  (with user_triggered flag for on-demand UX), prediction_outcomes, model_performance
- web: Next.js 14 + Tailwind + lightweight-charts placeholder
- README: KIS/DART/HuggingFace token issuance guides + 10 seed tickers + run instructions
This commit is contained in:
tkrmagid
2026-05-20 14:37:35 +09:00
parent 619dc7811b
commit cacddf5adf
30 changed files with 852 additions and 0 deletions

8
web/app/globals.css Normal file
View File

@@ -0,0 +1,8 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
html, body {
background: #0b0d12;
color: #e6e8eb;
}

15
web/app/layout.tsx Normal file
View File

@@ -0,0 +1,15 @@
import "./globals.css";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Stock Chart Site",
description: "개인용 주식 예측 차트",
};
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="ko">
<body className="min-h-screen">{children}</body>
</html>
);
}

14
web/app/page.tsx Normal file
View File

@@ -0,0 +1,14 @@
export default function HomePage() {
return (
<main className="mx-auto max-w-3xl px-6 py-16">
<h1 className="text-3xl font-bold tracking-tight">Stock Chart Site</h1>
<p className="mt-3 text-sm text-zinc-400">
Phase 0 scaffold. UI는 Phase 6 .
</p>
<div className="mt-8 rounded-md border border-zinc-800 bg-zinc-900/50 p-4 text-sm">
<div className="font-medium">Backend health</div>
<code className="mt-2 block text-zinc-400">GET {process.env.NEXT_PUBLIC_API_BASE}/health</code>
</div>
</main>
);
}