Commit Graph
32 Commits
Author SHA1 Message Date
Michal Vrba c74b2f02e8 Improve Blazor startup compatibility 2026-10-19 17:31:46 +02:00
Michal Vrba 69fde8469b Use supported .NET 10 runtime image 2026-10-19 17:26:38 +02:00
Michal Vrba a26c584462 Prepare Linux deployment with yt-dlp and persistent downloads 2026-10-19 17:23:30 +02:00
Michal Vrba 471010c536 Improve API base URL handling for downloads and logging
Refactored API and Blazor client to dynamically construct download URLs using the configured API base URL instead of hardcoded localhost addresses. Enhanced root endpoint and startup logs to reflect environment-specific URLs. Added GetBaseUrl() to ITuneRipperApiService for consistent URL generation.
2025-12-16 14:46:05 +01:00
Michal Vrba 879fbd4a53 Lazily create session directories on first MP3 save
Session directories are now created only when the first MP3 file is saved, not at session creation. Added EnsureSessionDirectoryExists to ISessionService and SessionService to handle this logic. Updated VideoService to call this method before saving files. Cleanup now logs when no directory exists for expired sessions.
2025-12-14 16:39:00 +01:00
Michal Vrba dec69eb937 show progress 2025-12-14 16:33:34 +01:00
Michal Vrba bf85ef29f8 del 2025-12-14 16:23:01 +01:00
Michal Vrba 30ba1b22e3 fix 2025-12-14 16:06:27 +01:00
Michal Vrba 77a327fabf Move session info to bottom and restyle for subtlety
Session info display was relocated from the logo area to the bottom of the main content in Home.razor. Updated CSS to make the session info less prominent by removing background and border, reducing font size and padding, and lowering opacity. Improved layout and responsiveness for a more subtle appearance.
2025-12-14 12:48:39 +01:00
Michal Vrba 1013e3e133 reposnsive design
Enhance responsive design and mobile usability

Major CSS overhaul for improved responsiveness and accessibility:
- Add .main-container for full viewport coverage
- Refactor Home.razor.css with extensive media queries for tablet, desktop, mobile, and print
- Improve input, button, and feature section layouts
- Add word-break/overflow handling for long text
- Support high-DPI, reduced motion, and print styles
- Update app.css for better font rendering, touch targets, and mobile performance
These changes ensure a more user-friendly experience across all devices.
2025-12-14 12:44:00 +01:00
Michal Vrba 695a0424bc Add DonateButton component with PayPal support
Introduced a new DonateButton component that displays a styled "Donate" button with a PayPal icon and opens a PayPal donation link in a new tab using JS interop. Added responsive CSS for the component. Integrated the DonateButton into Home.razor below the feature list to encourage user support. Updated _Imports.razor to make the component available app-wide.
2025-12-14 12:21:21 +01:00
Michal Vrba e361f26cdf doc updated 2025-12-14 12:15:26 +01:00
Michal Vrba bcae8557a8 added doc 2025-12-14 12:11:54 +01:00
Michal Vrba bf305de75f Add "Download All in ZIP" feature for session downloads
Introduce automatic ZIP file creation and management for session-based downloads.
- Server: Add endpoints to serve and provide info about session ZIPs; VideoService now updates ZIP after each MP3 download with user-friendly filenames.
- Client: Add "Download All in ZIP" button with loading state and ZIP info; trigger browser download via JS interop; responsive and styled UI.
- API: Extend service interfaces for ZIP download/info; add SessionZipInfo model.
- Docs: Update SESSION_MANAGEMENT.md with ZIP workflow, endpoints, and UX details.
- Robust error handling and logging throughout.
2025-12-14 11:55:53 +01:00
Michal Vrba 2d2e855202 Refactor downloads to use job-specific subdirectories
Organize downloaded files into per-job subdirectories under "downloads" instead of a flat structure. Update DownloadController and VideoService to read, write, and delete files within these job-specific directories. Add helper methods for directory management and improve logging. Update download/delete endpoints and result URLs to reflect the new structure. Clean up empty job directories after file deletion.
2025-12-14 11:04:46 +01:00
Michal Vrba 7c99721174 clean up 2025-12-12 21:25:34 +01:00
Michal Vrba 6e950bb45f Improve UX and update UI color scheme to blue
- Add @onblur and @onmousedown handlers to input/button for better focus and click behavior
- Change download button disabling logic to only depend on processing state
- Update progress bars, status, and card colors from green to blue
- Add .output-message CSS class for blue-themed output messages
- Adjust pulse animation to use blue tones
- Add OnInputBlur and PreventDefault methods for improved input/button interaction
2025-12-12 21:21:31 +01:00
Michal Vrba 54fb8c2c5e Update docs: new README, IIS guide, and production web.config
- Replaced README.md with a modern, production-focused version featuring quick start, architecture, workflow, troubleshooting, and security sections
- Added DEPLOYMENT_GUIDE_IIS_Windows11.md with step-by-step IIS deployment instructions, including SSL, CORS, and permissions
- Added version-controlled web.config files for API and Blazor app with HTTPS redirection, security headers, and SPA/static file support
- Moved detailed yt-dlp integration notes to README_UPDATED.md for technical reference
- Improves clarity, maintainability, and production readiness of documentation and deployment
2025-12-12 15:31:03 +01:00
Michal Vrba 3ecff7ca73 Refactor: Use jobId_title.ext for downloads & improve UX
Adopt GUID-based {jobId}_{title}.ext filename convention for all downloads, ensuring unique, human-readable, and traceable files. Update DownloadController to use precise jobId-based file matching and generate user-friendly download names. Pass jobId to VideoService for consistent naming; add robust title sanitization. Remove fallback file search logic for predictability. Update README and API docs to reflect new format and workflow. Improve logging and error messages for clarity.
2025-12-12 10:28:48 +01:00
Michal Vrba 406cf31b49 Real YouTube download & MP3 conversion with yt-dlp
- Integrate yt-dlp.exe for real YouTube audio download/conversion
- Serve actual MP3 files from wwwroot/downloads via API and static files
- Report real-time progress from yt-dlp to frontend
- Enhance DownloadController: file serving, metadata, deletion endpoints
- Update VideoController to track and return real file info/URLs
- Enable static file serving in Program.cs; update API info/logging
- Update Blazor frontend to use real download URLs and remove old JS logic
- Add README_UPDATED.md with new workflow and troubleshooting
- Improve error handling, logging, and file cleanup throughout backend
- Update .gitignore for downloads and yt-dlp.exe
2025-12-12 09:54:59 +01:00
Michal Vrba 3a5de85cd4 Update video details to fetch real title & thumbnail only
Refactored backend to extract actual YouTube title and thumbnail from HTML, removing simulated metadata fields (description, author, duration, views, upload date, tags). Simplified UI to display only title and thumbnail, and enhanced visuals with animated musical notes background. Removed related formatting and display logic for unused metadata.
2025-12-11 16:26:43 +01:00
Michal Vrba e5d2c104ac Revert "Add animated floating musical notes background"
This reverts commit 95ca948743.
2025-12-11 15:53:47 +01:00
Michal Vrba 95ca948743 Add animated floating musical notes background
Enhance Home page with a floating musical notes background for a more engaging visual experience. Added markup and CSS for animated notes, including responsive adjustments. Removed obsolete inline styles from Home.razor.
2025-12-11 15:31:45 +01:00
Michal Vrba 160b7e7115 Streamline video conversion workflow & UI integration
Removed /api/video/details endpoint; video details now fetched as first step of processing and included in progress/status responses. Updated backend models and controller logic to support integrated workflow and improved error handling. Refactored frontend to show video info and conversion progress in real time, removed legacy API calls, and enhanced UI/UX with responsive video info cards and progress bars. Updated documentation and example code to reflect new workflow.
2025-12-11 14:59:14 +01:00
Michal Vrba 8bfcc3617b Add DI, config, and API service for Blazor frontend
Introduce configuration classes and environment-specific settings files. Add DI extensions for registering API/app settings and HttpClient. Implement ITuneRipperApiService with robust error handling and logging. Update Program.cs for config loading and startup logging. Add usage documentation and update imports for new services and extensions. Improves maintainability and developer experience.
2025-12-11 14:37:38 +01:00
Michal Vrba e2d9ee3c59 Initial implementation of TuneRipper API backend
- Add Health, Video, and Download controllers with endpoints for health checks, video details, processing, status, results, and simulated downloads
- Implement IVideoService for YouTube URL validation and mock video info
- Add API models for responses and job status tracking
- Configure DI, CORS (BlazorPolicy), OpenAPI, and root metadata endpoint in Program.cs
- Add README with usage, troubleshooting, and development notes
- Minor project file cleanup and encoding fix
2025-12-11 14:27:29 +01:00
Michal Vrba 5230bddc03 Replace weather example with shared YouTube models
Removed WeatherForecast API and model. Added TuneRipper.Shared project with shared configuration and YouTube processing models. Updated solution and project references to enable code sharing between API and client. Explicitly included Controllers folder in API project.
2025-12-11 14:11:46 +01:00
Michal Vrba b5376f342a simulated UI flow added 2025-12-11 13:52:07 +01:00
Michal Vrba 04bbfeae53 Update gradients to unified blue color scheme
Replaced purple/blue gradients with vibrant blues across main container, app title, buttons, input focus, loader, and progress bar. Adjusted box-shadow colors and loader title gradient for a modern, consistent visual style.
2025-12-11 13:42:51 +01:00
Michal Vrba c6a8055ece Replace Blazor loader with custom music-themed splash
Replaces default Blazor loading spinner with a custom, animated music-themed loader featuring a gradient background, floating musical notes, logo, equalizer animation, and dynamic progress bar/messages. Removes old loader CSS from app.css and adds new styles to index.html. Loader progress and messages are now animated via JavaScript, with interactive note effects on click. Loader and background fade out smoothly when the app is ready.
2025-12-11 13:37:44 +01:00
Michal Vrba 6e325e007e Redesign UI for TuneRipper, add PWA support & branding
Major UI overhaul for TuneRipper: removed sidebar navigation, refactored layout to a centered, single-page experience with a modern hero section and input form for YouTube-to-MP3 conversion. Added new logo and high-res icons (logo.png, icon-192.png, icon-512.png), updated favicon and app icons, and introduced manifest.json for PWA support. Removed Counter, Weather, and NotFound pages; improved global and page-specific CSS for branding and responsiveness.
2025-12-11 13:31:59 +01:00
Michal Vrba 41d5a757d9 initial commit 2025-12-11 12:53:44 +01:00