| Category |
Technology |
| Framework |
React 19, TypeScript 5.9 |
| Bundler |
Vite (Rolldown) |
| 3D Rendering |
Three.js, @react-three/fiber, @react-three/drei |
| Styling |
styled-components |
| Animation |
Framer Motion |
| HTTP Client |
Axios |
| Icons |
Lucide React |
| Linting |
ESLint, typescript-eslint |
void/
├── public/ # Static assets
│ └── vite.svg
│
├── src/
│ ├── @types/ # TypeScript type definitions
│ │ └── api.ts # API request/response interfaces
│ │
│ ├── assets/ # Images & icons
│ │ ├── logo.ico
│ │ └── react.svg
│ │
│ ├── components/ # Reusable UI components
│ │ ├── ChatInput.tsx # Glassmorphism chat input
│ │ ├── GlassCard.tsx # Keyword ranking card (glass UI)
│ │ ├── ParticleSphere.tsx# 3D particle sphere (custom shader)
│ │ ├── ResponseBox.tsx # AI response display box
│ │ └── SendButton.tsx # Send button (glass UI)
│ │
│ ├── pages/ # Page-level components
│ │ └── MainPage.tsx # Main layout & state management
│ │
│ ├── services/ # API layer
│ │ └── userService.ts # Axios instance & API calls
│ │
│ ├── styles/ # Global styles
│ │ └── GlobalStyles.ts # styled-components global reset
│ │
│ ├── App.tsx # Root component
│ └── main.tsx # Entry point
│
├── index.html # HTML template
├── vite.config.ts # Vite configuration
├── tsconfig.json # TypeScript config (base)
├── tsconfig.app.json # TypeScript config (app)
├── tsconfig.node.json # TypeScript config (node)
├── eslint.config.js # ESLint configuration
└── package.json
- 커스텀 GLSL ShaderMaterial 기반 파티클 시스템
- Fibonacci sphere 분포를 활용한 균일한 파티클 배치
- 3D hash noise를 이용한 반경 변위 및 shimmer 효과
- 대각선 회전 + 파동 모션 애니메이션
- GPU 최적화 (프레임당
uTime uniform만 갱신)
backdrop-filter: blur() 기반의 유리 질감 컴포넌트
- 빛 반사 효과 (
::after, inset box-shadow)
- Framer Motion 기반 등장/퇴장/호버 애니메이션
POST /ask — AI 질의응답
GET /ranking/top3 — 실시간 인기 키워드 (20분 폴링)
# Install dependencies
yarn install
# Set environment variables
cp .env.example .env
# Edit .env and set VITE_API_URL
# Start dev server
yarn dev
# Build for production
yarn build
# Preview production build
yarn preview
| Variable |
Description |
VITE_API_URL |
Backend API base URL |