stemedb/applications/DASHBOARD_SEPARATION_SUMMARY.md
jml cce54358d2 feat(aphoria): add git commit tracking + comprehensive documentation
**Git Commit Tracking**
- Automatically capture git commit hash when claims/observations are ingested
- Store in assertion metadata for temporal context and audit trails
- Graceful degradation in non-git environments
- Solves double-commit problem by capturing hash at ingestion time

**Implementation**
- walker/git.rs: get_current_commit_hash() utility function
- bridge.rs: Accept optional git_commit parameter in all conversion functions
- episteme/local: Store project_root, capture git hash during ingestion
- 5 new tests for git hash tracking + metadata validation
- All 1162 aphoria tests passing

**Documentation Overhaul**
- README: Added Observations vs Claims distinction, git tracking, dashboard
- CLI Reference: New sections for git integration and ignore/exclusion system
- Comprehensive ignore documentation: .aphoriaignore, inline comments, 4 methods
- Enhanced verification engine docs with matching capabilities
- DOCUMENTATION_UPDATES.md: Complete audit summary

**Dashboard Separation**
- Moved Aphoria-specific UI from stemedb-dashboard to aphoria-dashboard
- Clean separation of concerns: StemeDB for core, Aphoria for security
- Added dashboard documentation and setup guides

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 18:36:46 +00:00

234 lines
6.6 KiB
Markdown

# Dashboard Separation Summary
**Date**: 2026-02-08
**Status**: ✅ Complete
## What Was Done
Successfully separated Aphoria Dashboard from StemeDB Dashboard into two independent applications.
## Changes Made
### 1. Created Aphoria Dashboard (Port 18189)
**New Directory**: `applications/aphoria-dashboard/`
**Structure**:
```
aphoria-dashboard/
├── package.json (port 18189, name "aphoria-dashboard")
├── .env.local (proxy mode)
├── .gitignore
├── README.md
├── next.config.ts
├── tsconfig.json
├── postcss.config.mjs
├── components.json
└── src/
├── app/
│ ├── layout.tsx (Aphoria branding)
│ ├── page.tsx (redirect to /scans)
│ ├── globals.css
│ ├── scans/page.tsx
│ ├── claims/page.tsx
│ └── corpus/page.tsx
├── components/
│ ├── scans/ (12 files)
│ ├── claims/ (7 files)
│ ├── corpus/ (8 files)
│ ├── layout/
│ │ ├── sidebar.tsx (Aphoria-specific, 3 routes)
│ │ ├── header.tsx
│ │ └── theme-toggle.tsx
│ ├── shared/ (3 files)
│ └── ui/ (8 files)
└── lib/
├── api/ (client, types, index)
├── auth/ (api-key)
├── utils.ts
├── format.ts
├── types.ts
└── constants.ts
```
**Routes**:
- `/` → redirects to `/scans`
- `/scans` → ScansPanel
- `/claims` → ClaimsPanel
- `/corpus` → CorpusPanel
**Branding**:
- Icon: Shield (Lucide)
- Title: "Aphoria Dashboard"
- Footer: "Aphoria Dashboard v0.1.0"
### 2. Updated StemeDB Dashboard (Port 18188)
**Removed**:
- `src/app/scans/`, `src/app/claims/`, `src/app/corpus/` (3 route directories)
- `src/components/scans/`, `src/components/claims/`, `src/components/corpus/` (27 component files)
**Updated**:
- `src/components/layout/sidebar.tsx`:
- Removed imports: `Scan`, `Library`, `FileCheck`
- Removed 3 navigation items (Corpus, Scans, Claims)
- Now has 6 routes (Skeptic Query, Layered View, Sources, Quarantine, Circuit Breakers, Audit Trail)
**Added**:
- `README.md` - Documentation for StemeDB Dashboard
**Remaining Routes**:
- `/skeptic` → Skeptic Query
- `/layered` → Layered View
- `/sources` → Sources
- `/quarantine` → Quarantine
- `/circuit` → Circuit Breakers
- `/audit` → Audit Trail
### 3. Documentation
**Created**:
- `applications/aphoria-dashboard/README.md` - Aphoria Dashboard docs
- `applications/stemedb-dashboard/README.md` - StemeDB Dashboard docs
- `applications/DASHBOARD_SYNC.md` - Shared code sync guide
- `applications/DASHBOARD_SEPARATION_SUMMARY.md` - This file
**Updated**:
- `CLAUDE.md` - Port scheme table (added ports 18188 and 18189)
## Port Scheme
| Port | Service | Dashboard |
|------|---------|-----------|
| 18180 | Backend API | Both dashboards proxy to this |
| 18188 | StemeDB Dashboard | Database admin |
| 18189 | Aphoria Dashboard | Code quality |
## Shared Code
Both dashboards share infrastructure:
- **UI Components**: `src/components/ui/` (8 files)
- **Shared Components**: `src/components/shared/` (3 files)
- **Layout Components**: `header.tsx`, `theme-toggle.tsx` (NOT `sidebar.tsx`)
- **Library Code**: `src/lib/` (API client, types, utils)
- **Configuration**: `globals.css`, `components.json`
See `applications/DASHBOARD_SYNC.md` for sync procedures.
## Dependencies
Both dashboards have identical dependencies:
- Next.js 16.1.6
- React 19.2.3
- TailwindCSS 4
- shadcn/ui components
- lucide-react icons
## Testing Status
### ✅ Completed
- [x] Directory structure created
- [x] Files copied and organized
- [x] Routes created for Aphoria Dashboard
- [x] Routes removed from StemeDB Dashboard
- [x] Sidebars updated with correct navigation
- [x] Documentation created
- [x] Port scheme documented
- [x] Dependencies installed for Aphoria Dashboard
### ⚠️ Pending (requires Node.js >=20.9.0)
- [ ] Build verification (`npm run build`)
- [ ] Runtime testing with all three services
- [ ] E2E verification of API proxying
- [ ] UI/UX verification
**Note**: Current Node.js version is 20.8.1, but Next.js 16 requires >=20.9.0. The dev servers should work, but production builds may fail until Node is updated.
## Next Steps
To complete testing:
1. **Update Node.js** (if needed):
```bash
nvm install 20.9.0
nvm use 20.9.0
```
2. **Build Both Dashboards**:
```bash
cd applications/stemedb-dashboard && npm run build
cd ../aphoria-dashboard && npm run build
```
3. **Choose Access Method**:
**Option A: Direct Ports (Recommended for dev)**
```bash
# Terminal 1: Backend API
cargo run --bin stemedb-api # port 18180
# Terminal 2: StemeDB Dashboard
cd applications/stemedb-dashboard && npm run dev # port 18188
# Terminal 3: Aphoria Dashboard
cd applications/aphoria-dashboard && npm run dev # port 18189
# Access:
# http://localhost:18188 (StemeDB)
# http://localhost:18189 (Aphoria)
```
**Option B: Nginx Subdomain Routing (Recommended for shared)**
```bash
# Setup nginx once
./setup-nginx-subdomain.sh
# Then start services (same as above)
# Access:
# http://stemedb.local (StemeDB)
# http://aphoria.local (Aphoria)
```
**Option C: Interactive Setup Helper**
```bash
./setup-dashboards.sh
```
See `applications/NGINX_SETUP_GUIDE.md` for full details.
4. **Verify Functionality**:
- StemeDB Dashboard: Test all 6 routes
- Aphoria Dashboard: Test all 3 routes
- Verify removed routes return 404 in StemeDB Dashboard
- Verify API calls work in both dashboards
## Success Criteria
- [x] Aphoria Dashboard has its own directory
- [x] StemeDB Dashboard has Aphoria features removed
- [x] Both dashboards have independent navigation
- [x] Port scheme is documented
- [x] Sync procedures are documented
- [ ] Both dashboards build successfully (pending Node.js update)
- [ ] Both dashboards run concurrently (pending testing)
- [ ] API proxying works in both (pending testing)
## Rollback Plan
If issues arise:
```bash
# This work was done in a single session
# To rollback, use git:
git checkout HEAD -- applications/stemedb-dashboard/
git clean -fd applications/aphoria-dashboard/
```
## Notes
- **Architecture Decision**: Used "Copy with Documentation" approach (Option D from plan)
- **Code Drift**: Acceptable with documented sync procedures
- **Future Enhancement**: Consider monorepo packages if syncing becomes frequent (>1x/week)
- **API Client**: Kept full client in both dashboards (has both StemeDB + Aphoria methods)
- **Build System**: No workspace needed, dashboards are fully independent