index.html 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Cognio - Memory Dashboard</title>
  7. <link rel="stylesheet" href="styles.css">
  8. </head>
  9. <body>
  10. <div class="app" id="app">
  11. <!-- Sidebar -->
  12. <aside class="sidebar">
  13. <div class="logo">
  14. <h1>Cognio</h1>
  15. <p>Memory Dashboard</p>
  16. </div>
  17. <nav class="nav">
  18. <a href="#" class="nav-item active" data-view="memories">
  19. <span class="icon">📝</span>
  20. Memories
  21. </a>
  22. <a href="#" class="nav-item" data-view="stats">
  23. <span class="icon">📊</span>
  24. Statistics
  25. </a>
  26. <a href="#" class="nav-item" data-view="settings">
  27. <span class="icon">⚙️</span>
  28. Settings
  29. </a>
  30. </nav>
  31. <div class="theme-toggle">
  32. <button id="themeToggle" class="theme-btn">
  33. <span class="icon theme-icon"></span>
  34. <span class="label">Dark Mode</span>
  35. </button>
  36. </div>
  37. </aside>
  38. <!-- Main Content -->
  39. <main class="main">
  40. <!-- Header -->
  41. <header class="header">
  42. <div class="search-bar">
  43. <input type="text" id="searchInput" placeholder="Search memories by meaning..." class="search-input">
  44. <button id="searchBtn" class="btn btn-primary">Search</button>
  45. </div>
  46. <button id="addMemoryBtn" class="btn btn-success">+ Add Memory</button>
  47. </header>
  48. <!-- Views Container -->
  49. <div class="content">
  50. <!-- Memories View -->
  51. <div id="memoriesView" class="view active">
  52. <!-- Filters -->
  53. <div class="filters">
  54. <select id="projectFilter" class="filter-select">
  55. <option value="">All Projects</option>
  56. </select>
  57. <select id="tagFilter" class="filter-select">
  58. <option value="">All Tags</option>
  59. </select>
  60. <select id="sortFilter" class="filter-select">
  61. <option value="recent">Most Recent</option>
  62. <option value="oldest">Oldest</option>
  63. <option value="relevance">Relevance</option>
  64. </select>
  65. <button id="bulkSelectBtn" class="btn btn-secondary">Bulk Select</button>
  66. </div>
  67. <!-- Bulk Actions (hidden by default) -->
  68. <div id="bulkActions" class="bulk-actions hidden">
  69. <span id="selectedCount">0 selected</span>
  70. <button id="bulkTagBtn" class="btn btn-sm">Add Tags</button>
  71. <button id="bulkDeleteBtn" class="btn btn-sm btn-danger">Delete</button>
  72. <button id="cancelBulkBtn" class="btn btn-sm">Cancel</button>
  73. </div>
  74. <!-- Memories List -->
  75. <div id="memoriesList" class="memories-list">
  76. <div class="loading">Loading memories...</div>
  77. </div>
  78. <!-- Pagination -->
  79. <div class="pagination">
  80. <button id="prevPage" class="btn btn-sm" disabled>Previous</button>
  81. <span id="pageInfo">Page 1 of 1</span>
  82. <button id="nextPage" class="btn btn-sm" disabled>Next</button>
  83. </div>
  84. </div>
  85. <!-- Statistics View -->
  86. <div id="statsView" class="view">
  87. <div class="stats-grid">
  88. <div class="stat-card">
  89. <h3>Total Memories</h3>
  90. <p class="stat-value" id="totalMemories">-</p>
  91. </div>
  92. <div class="stat-card">
  93. <h3>Projects</h3>
  94. <p class="stat-value" id="totalProjects">-</p>
  95. </div>
  96. <div class="stat-card">
  97. <h3>Tags</h3>
  98. <p class="stat-value" id="totalTags">-</p>
  99. </div>
  100. <div class="stat-card">
  101. <h3>Avg Memory Size</h3>
  102. <p class="stat-value" id="avgSize">-</p>
  103. </div>
  104. </div>
  105. <div class="charts-grid">
  106. <div class="chart-card">
  107. <h3>Memories by Project</h3>
  108. <div id="projectChart" class="chart"></div>
  109. </div>
  110. <div class="chart-card">
  111. <h3>Popular Tags</h3>
  112. <div id="tagCloud" class="tag-cloud"></div>
  113. </div>
  114. </div>
  115. </div>
  116. <!-- Settings View -->
  117. <div id="settingsView" class="view">
  118. <div class="settings-section">
  119. <h2>API Configuration</h2>
  120. <div class="form-group">
  121. <label>API URL</label>
  122. <input type="text" id="apiUrl" placeholder="Auto-detected: window.location.origin" class="form-input">
  123. <small style="color: var(--text-secondary); margin-top: 4px; display: block;">
  124. Leave empty to auto-detect. Works with localhost, Docker, and remote servers.
  125. </small>
  126. </div>
  127. <div class="form-group">
  128. <label>API Key (Optional)</label>
  129. <input type="password" id="apiKey" placeholder="Enter API key if required" class="form-input">
  130. </div>
  131. <button id="saveSettings" class="btn btn-primary">Save Settings</button>
  132. </div>
  133. <div class="settings-section">
  134. <h2>Display Preferences</h2>
  135. <div class="form-group">
  136. <label>Memories per page</label>
  137. <select id="pageSize" class="form-input">
  138. <option value="10">10</option>
  139. <option value="20" selected>20</option>
  140. <option value="50">50</option>
  141. <option value="100">100</option>
  142. </select>
  143. </div>
  144. </div>
  145. </div>
  146. </div>
  147. </main>
  148. </div>
  149. <!-- Modals -->
  150. <!-- Add/Edit Memory Modal -->
  151. <div id="memoryModal" class="modal">
  152. <div class="modal-content">
  153. <div class="modal-header">
  154. <h2 id="modalTitle">Add Memory</h2>
  155. <button class="modal-close">&times;</button>
  156. </div>
  157. <div class="modal-body">
  158. <div class="form-group">
  159. <label>Text *</label>
  160. <textarea id="memoryText" rows="6" class="form-input" placeholder="Enter your memory here..."></textarea>
  161. </div>
  162. <div class="form-row">
  163. <div class="form-group">
  164. <label>Project</label>
  165. <input type="text" id="memoryProject" class="form-input" placeholder="e.g., LEARNING">
  166. </div>
  167. <div class="form-group">
  168. <label>Tags (comma-separated)</label>
  169. <input type="text" id="memoryTags" class="form-input" placeholder="e.g., python, fastapi">
  170. </div>
  171. </div>
  172. <div class="form-group">
  173. <label>
  174. <input type="checkbox" id="autoTag" checked>
  175. Auto-generate tags (requires API key)
  176. </label>
  177. </div>
  178. <div class="preview-section">
  179. <h4>Preview</h4>
  180. <div id="memoryPreview" class="preview"></div>
  181. </div>
  182. </div>
  183. <div class="modal-footer">
  184. <button id="saveMemory" class="btn btn-primary">Save</button>
  185. <button class="modal-close btn btn-secondary">Cancel</button>
  186. </div>
  187. </div>
  188. </div>
  189. <script src="app.js"></script>
  190. </body>
  191. </html>