diff --git a/README.md b/README.md index 933d7940..58c29ca6 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,12 @@ - **Tinkle** - [@Web3Tinkle](https://x.com/Web3Tinkle) - **Official Twitter** - [@nofx_official](https://x.com/nofx_official) +### Official Links + +- **Official Website**: [https://nofxai.com](https://nofxai.com) +- **Data Dashboard**: [https://nofxos.ai/dashboard](https://nofxos.ai/dashboard) +- **API Documentation**: [https://nofxos.ai/api-docs](https://nofxos.ai/api-docs) + > **Risk Warning**: This system is experimental. AI auto-trading carries significant risks. Strongly recommended for learning/research purposes or testing with small amounts only! ## Developer Community diff --git a/docs/i18n/ja/README.md b/docs/i18n/ja/README.md index b1df0541..63fcf937 100644 --- a/docs/i18n/ja/README.md +++ b/docs/i18n/ja/README.md @@ -22,6 +22,12 @@ - **Web ベース設定**: JSON 編集不要 - Web インターフェースですべて設定 - **リアルタイムダッシュボード**: ライブポジション、損益追跡、思考連鎖付き AI 決定ログ +### 公式リンク + +- **公式サイト**: [https://nofxai.com](https://nofxai.com) +- **データダッシュボード**: [https://nofxos.ai/dashboard](https://nofxos.ai/dashboard) +- **API ドキュメント**: [https://nofxos.ai/api-docs](https://nofxos.ai/api-docs) + > **リスク警告**: このシステムは実験的です。AI 自動取引には重大なリスクがあります。学習/研究目的または少額でのテストのみを強くお勧めします! ## 開発者コミュニティ diff --git a/docs/i18n/ko/README.md b/docs/i18n/ko/README.md index 6f386e5e..41a7f604 100644 --- a/docs/i18n/ko/README.md +++ b/docs/i18n/ko/README.md @@ -22,6 +22,12 @@ - **웹 기반 설정**: JSON 편집 불필요 - 웹 인터페이스에서 모든 설정 완료 - **실시간 대시보드**: 실시간 포지션, 손익 추적, 사고의 연쇄가 포함된 AI 결정 로그 +### 공식 링크 + +- **공식 웹사이트**: [https://nofxai.com](https://nofxai.com) +- **데이터 대시보드**: [https://nofxos.ai/dashboard](https://nofxos.ai/dashboard) +- **API 문서**: [https://nofxos.ai/api-docs](https://nofxos.ai/api-docs) + > **위험 경고**: 이 시스템은 실험적입니다. AI 자동 거래에는 상당한 위험이 있습니다. 학습/연구 목적 또는 소액 테스트만 강력히 권장합니다! ## 개발자 커뮤니티 diff --git a/docs/i18n/ru/README.md b/docs/i18n/ru/README.md index 92ef3c8a..b8d02160 100644 --- a/docs/i18n/ru/README.md +++ b/docs/i18n/ru/README.md @@ -22,6 +22,12 @@ - **Веб-конфигурация**: Без редактирования JSON — настройка всего через веб-интерфейс - **Панель реального времени**: Живые позиции, отслеживание P/L, логи решений AI с цепочкой рассуждений +### Официальные ссылки + +- **Официальный сайт**: [https://nofxai.com](https://nofxai.com) +- **Панель данных**: [https://nofxos.ai/dashboard](https://nofxos.ai/dashboard) +- **Документация API**: [https://nofxos.ai/api-docs](https://nofxos.ai/api-docs) + > **Предупреждение о рисках**: Эта система экспериментальная. AI автоторговля несёт значительные риски. Настоятельно рекомендуется использовать только для обучения/исследований или тестирования с небольшими суммами! ## Сообщество разработчиков diff --git a/docs/i18n/uk/README.md b/docs/i18n/uk/README.md index dfd455b6..af90efbd 100644 --- a/docs/i18n/uk/README.md +++ b/docs/i18n/uk/README.md @@ -22,6 +22,12 @@ - **Веб-конфігурація**: Без редагування JSON — налаштування всього через веб-інтерфейс - **Панель реального часу**: Живі позиції, відстеження P/L, логи рішень AI з ланцюжком міркувань +### Офіційні посилання + +- **Офіційний сайт**: [https://nofxai.com](https://nofxai.com) +- **Панель даних**: [https://nofxos.ai/dashboard](https://nofxos.ai/dashboard) +- **Документація API**: [https://nofxos.ai/api-docs](https://nofxos.ai/api-docs) + > **Попередження про ризики**: Ця система експериментальна. AI автоторгівля несе значні ризики. Наполегливо рекомендується використовувати лише для навчання/досліджень або тестування з невеликими сумами! ## Спільнота розробників diff --git a/docs/i18n/vi/README.md b/docs/i18n/vi/README.md index 05a020a6..ef73dd6a 100644 --- a/docs/i18n/vi/README.md +++ b/docs/i18n/vi/README.md @@ -22,6 +22,12 @@ - **Cấu Hình Web**: Không cần chỉnh sửa JSON - cấu hình mọi thứ qua giao diện web - **Dashboard Thời Gian Thực**: Vị thế trực tiếp, theo dõi P/L, nhật ký quyết định AI với chuỗi suy luận +### Liên Kết Chính Thức + +- **Website Chính Thức**: [https://nofxai.com](https://nofxai.com) +- **Bảng Điều Khiển Dữ Liệu**: [https://nofxos.ai/dashboard](https://nofxos.ai/dashboard) +- **Tài Liệu API**: [https://nofxos.ai/api-docs](https://nofxos.ai/api-docs) + > **Cảnh Báo Rủi Ro**: Hệ thống này mang tính thử nghiệm. Giao dịch tự động AI có rủi ro đáng kể. Chỉ nên sử dụng cho mục đích học tập/nghiên cứu hoặc kiểm tra với số tiền nhỏ! ## Cộng Đồng Nhà Phát Triển diff --git a/docs/i18n/zh-CN/README.md b/docs/i18n/zh-CN/README.md index 8236bdcd..582a1039 100644 --- a/docs/i18n/zh-CN/README.md +++ b/docs/i18n/zh-CN/README.md @@ -34,6 +34,12 @@ - **Tinkle** - [@Web3Tinkle](https://x.com/Web3Tinkle) - **官方 Twitter** - [@nofx_official](https://x.com/nofx_official) +### 官方链接 + +- **官网**: [https://nofxai.com](https://nofxai.com) +- **数据站点**: [https://nofxos.ai/dashboard](https://nofxos.ai/dashboard) +- **API 文档**: [https://nofxos.ai/api-docs](https://nofxos.ai/api-docs) + > **风险提示**: 本系统为实验性质。AI 自动交易存在重大风险。强烈建议仅用于学习/研究目的或小额测试! ## 开发者社区 diff --git a/web/src/App.tsx b/web/src/App.tsx index 0c3c050a..fb7fa602 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -14,6 +14,7 @@ import { FAQPage } from './pages/FAQPage' import { StrategyStudioPage } from './pages/StrategyStudioPage' import { DebateArenaPage } from './pages/DebateArenaPage' import { StrategyMarketPage } from './pages/StrategyMarketPage' +import { DataPage } from './pages/DataPage' import { LoginRequiredOverlay } from './components/LoginRequiredOverlay' import HeaderBar from './components/HeaderBar' import { LanguageProvider, useLanguage } from './contexts/LanguageContext' @@ -41,6 +42,7 @@ type Page = | 'backtest' | 'strategy' | 'strategy-market' + | 'data' | 'debate' | 'faq' | 'login' @@ -68,6 +70,7 @@ function App() { if (path === '/backtest' || hash === 'backtest') return 'backtest' if (path === '/strategy' || hash === 'strategy') return 'strategy' if (path === '/strategy-market' || hash === 'strategy-market') return 'strategy-market' + if (path === '/data' || hash === 'data') return 'data' if (path === '/debate' || hash === 'debate') return 'debate' if (path === '/dashboard' || hash === 'trader' || hash === 'details') return 'trader' @@ -88,6 +91,7 @@ function App() { const pathMap: Record = { 'competition': '/competition', 'strategy-market': '/strategy-market', + 'data': '/data', 'traders': '/traders', 'trader': '/dashboard', 'backtest': '/backtest', @@ -152,6 +156,8 @@ function App() { setCurrentPage('strategy') } else if (path === '/strategy-market' || hash === 'strategy-market') { setCurrentPage('strategy-market') + } else if (path === '/data' || hash === 'data') { + setCurrentPage('data') } else if (path === '/debate' || hash === 'debate') { setCurrentPage('debate') } else if ( @@ -370,6 +376,51 @@ function App() { if (route === '/reset-password') { return } + // Data page - publicly accessible with embedded dashboard + if (route === '/data') { + const dataPageNavigate = (page: Page) => { + const pathMap: Record = { + 'data': '/data', + 'competition': '/competition', + 'strategy-market': '/strategy-market', + 'traders': '/traders', + 'trader': '/dashboard', + 'backtest': '/backtest', + 'strategy': '/strategy', + 'debate': '/debate', + 'faq': '/faq', + } + const path = pathMap[page] + if (path) { + window.location.href = path + } + } + return ( +
+ +
+ +
+ setLoginOverlayOpen(false)} + featureName={loginOverlayFeature} + /> +
+ ) + } // Show landing page for root route if (route === '/' || route === '') { return @@ -408,6 +459,8 @@ function App() { > {currentPage === 'competition' ? ( + ) : currentPage === 'data' ? ( + ) : currentPage === 'strategy-market' ? ( ) : currentPage === 'traders' ? ( diff --git a/web/src/components/HeaderBar.tsx b/web/src/components/HeaderBar.tsx index e7252a0c..058d9186 100644 --- a/web/src/components/HeaderBar.tsx +++ b/web/src/components/HeaderBar.tsx @@ -13,6 +13,7 @@ type Page = | 'backtest' | 'strategy' | 'strategy-market' + | 'data' | 'debate' | 'faq' | 'login' @@ -98,6 +99,7 @@ export default function HeaderBar({ {(() => { // Define all navigation tabs const navTabs: { page: Page; path: string; label: string; requiresAuth: boolean }[] = [ + { page: 'data', path: '/data', label: language === 'zh' ? '数据' : 'Data', requiresAuth: false }, { page: 'strategy-market', path: '/strategy-market', label: language === 'zh' ? '策略市场' : 'Market', requiresAuth: true }, { page: 'traders', path: '/traders', label: t('configNav', language), requiresAuth: true }, { page: 'trader', path: '/dashboard', label: t('dashboardNav', language), requiresAuth: true }, @@ -327,6 +329,7 @@ export default function HeaderBar({
{(() => { const navTabs: { page: Page; path: string; label: string; requiresAuth: boolean }[] = [ + { page: 'data', path: '/data', label: language === 'zh' ? '数据' : 'Data', requiresAuth: false }, { page: 'strategy-market', path: '/strategy-market', label: language === 'zh' ? '策略市场' : 'Market', requiresAuth: true }, { page: 'traders', path: '/traders', label: t('configNav', language), requiresAuth: true }, { page: 'trader', path: '/dashboard', label: t('dashboardNav', language), requiresAuth: true }, diff --git a/web/src/pages/DataPage.tsx b/web/src/pages/DataPage.tsx new file mode 100644 index 00000000..096fb6e5 --- /dev/null +++ b/web/src/pages/DataPage.tsx @@ -0,0 +1,16 @@ +import { useLanguage } from '../contexts/LanguageContext' + +export function DataPage() { + const { language } = useLanguage() + + return ( +
+