| Name | Message | Date |
|---|---|---|
| 📄 POC_PLAN.md | 1 month ago |
📄
POC_PLAN.md
GitBrowser POC Plan
POC Scope
Iteration 1: Basic Repository File View (Current)
Goal: Display root directory file listing at /repo path
Features:
- Single route:
/repo - Display repository file tree at root level (HEAD commit)
- Show file/folder list similar to GitHub's repository homepage
- Display basic file metadata:
- Name
- Type (file/directory)
- Last commit message
- Last commit date
- Navigate into subdirectories
- NO README viewing (next iteration)
- NO file content viewing (next iteration)
Technical Approach:
- Use LibGit2Sharp for all git operations directly in Razor pages
- LibGit2Sharp types serve directly as models (thin UI layer)
- Read-only operations only
- Repository path configured in appsettings.json
- NO service abstractions - inject IConfiguration and use LibGit2Sharp directly
- Keep it SIMPLE
Out of Scope:
- File viewing
- README rendering
- Multiple repositories
- Branch switching
- Search
- Diffs
- Commit history
Future Iterations
Iteration 2: File Viewing
- Click on file to view contents
- Default to showing README.md of current directory
- Syntax highlighting for code files
Iteration 3: Multiple Repositories
- Change route from
/repoto/<repo-name> - Support multiple configured repositories
- Repository selection/listing page
Iteration 4+: Enhanced Features
- Commit history view
- Diff viewer
- Branch switching
- Search functionality
Technical Stack
- Git Integration: LibGit2Sharp
- UI Framework: Blazor (Server-side rendering)
- Styling: Custom modern CSS (no frameworks, GitHub-inspired)
- Operations: Read-only git operations
Configuration
Repository path will be stored in appsettings.json:
{
"GitBrowser": {
"RepositoryPath": "D:\\path\\to\\repo"
}
}
Architecture Notes
- Keep it simple: LibGit2Sharp types are the models
- NO service abstractions or interfaces
- Blazor pages use LibGit2Sharp directly
- Inject IConfiguration, use Repository directly in page
- No complex abstractions or mapping layers - KISS principle