94 lines
3.7 KiB
Markdown
94 lines
3.7 KiB
Markdown
# VideoStudy.app - Gemini Context
|
|
|
|
## Project Overview
|
|
|
|
**VideoStudy.app** is a .NET 8.0 platform designed to analyze YouTube videos using Artificial Intelligence. It leverages Microsoft Semantic Kernel to provide summaries, extract key moments, and generate study materials from video content.
|
|
|
|
The project is structured as a distributed application with a backend API handling AI processing and a Blazor Hybrid Desktop application for the user interface.
|
|
|
|
### Key Technologies
|
|
* **Framework:** .NET 8.0
|
|
* **AI Orchestration:** Microsoft Semantic Kernel (v1.70.0)
|
|
* **LLM Providers:** Supports Groq (Cloud), Ollama (Local), and OpenAI.
|
|
* **UI:** Blazor Hybrid (Razor Components) with Bootstrap 5.
|
|
* **Video Processing:** YoutubeExplode (download), FFmpeg (screenshots), Whisper.net (transcription).
|
|
* **Document Generation:** QuestPDF.
|
|
|
|
## Architecture
|
|
|
|
The solution (`VideoStudy.sln`) consists of the following key projects:
|
|
|
|
1. **`VideoStudy.API`**: ASP.NET Core Web API.
|
|
* Acts as the central intelligence hub.
|
|
* Handles interaction with LLM providers via Semantic Kernel.
|
|
* Exposes endpoints for video analysis (`POST /api/analyze`) and health checks.
|
|
* Runs on `http://localhost:5000`.
|
|
|
|
2. **`VideoStudy.Desktop`**: Blazor Hybrid Desktop Application.
|
|
* **Server Project:** `VideoStudy.Desktop` (Hosts the app, runs on `http://localhost:5001`).
|
|
* **Client Project:** `VideoStudy.Desktop.Client` (Wasm/UI logic).
|
|
* Provides the user interface for inputting URLs, viewing progress, and displaying results.
|
|
* Communicates with `VideoStudy.API` via HTTP.
|
|
|
|
3. **`VideoStudy.Shared`**: Class Library.
|
|
* Contains shared data models (`AnalysisRequest`, `AnalysisResponse`, `KeyMoment`) ensuring type safety between API and Desktop.
|
|
|
|
## Development & Usage
|
|
|
|
### Prerequisites
|
|
* .NET 8.0 SDK
|
|
* FFmpeg (required for advanced processing features like screenshots)
|
|
* An LLM Provider (Ollama running locally or an API Key for Groq/OpenAI)
|
|
|
|
### Building the Project
|
|
To build the entire solution:
|
|
```bash
|
|
dotnet build VideoStudy.sln
|
|
```
|
|
|
|
### Running the Application
|
|
The application requires **two separate terminals** running simultaneously.
|
|
|
|
**Terminal 1: Start the API**
|
|
```bash
|
|
cd VideoStudy.API
|
|
dotnet run
|
|
# Listens on http://localhost:5000
|
|
```
|
|
|
|
**Terminal 2: Start the Desktop App**
|
|
```bash
|
|
cd VideoStudy.Desktop/VideoStudy.Desktop
|
|
dotnet run
|
|
# Listens on http://localhost:5001
|
|
```
|
|
|
|
### Accessing the UI
|
|
Open your browser to `http://localhost:5001` to use the application.
|
|
|
|
## Configuration
|
|
|
|
Configuration is managed via `appsettings.json` files in the respective projects.
|
|
|
|
**LLM Configuration (`VideoStudy.API/appsettings.json`):**
|
|
To change the AI provider (e.g., switching from Groq to Ollama), update the `LlmSettings` section or modify the dependency injection in `Program.cs`.
|
|
|
|
**Desktop Configuration (`VideoStudy.Desktop/VideoStudy.Desktop/appsettings.json`):**
|
|
Ensure the `BaseUrl` points to the running API instance (default: `http://localhost:5000`).
|
|
|
|
## Project Structure
|
|
|
|
* `VideoStudy.API/Controllers/`: API Endpoints.
|
|
* `VideoStudy.Desktop/Components/Pages/`: Blazor UI Pages (e.g., `Home.razor`).
|
|
* `VideoStudy.Desktop/Services/`: Client-side logic for FFmpeg, YouTube download, etc.
|
|
* `VideoStudy.Shared/Models.cs`: Core data contracts.
|
|
|
|
## Current Status (Phase 2)
|
|
|
|
* **Completed:** Basic API structure, UI layout (Bootstrap), Semantic Kernel integration, YoutubeExplode integration.
|
|
* **In Progress:** Advanced transcription (Whisper.net), PDF generation, robust error handling, and persistence.
|
|
|
|
## Common Issues
|
|
* **Connection Refused:** Ensure the API is running *before* trying to analyze a video in the Desktop app.
|
|
* **Port Conflicts:** If ports 5000 or 5001 are in use, modify `launchSettings.json` or use `dotnet run --urls`.
|