Commit Graph
53 Commits
Author SHA1 Message Date
Yusuf İpek 8c32ff2a91 Merge pull request #7 from yusufipk/pr-4
Created a recommendation system for all platforms.
2025-11-23 15:00:13 +03:00
Yusuf İpek 95ad5e32fd refactor: Remove experience level from recommendation system
- Remove experienceLevel from UserProfile, RecommendationRequest, and PackagePreset types
- Remove experience level validation and handling from GET/POST endpoints
- Disable localStorage persistence in useRecommendationProfile hook (session-only storage)
- Disable automatic onboarding modal on first visit
- Set recommendations section to expanded by default
- Add empty state card for recommendations with wizard button
- Add translations
2025-11-23 14:55:49 +03:00
Yusuf İpek a5b65bb4df feat: Add package name formatting for Windows packages and update contribution docs
- Format Windows winget package IDs for better display (e.g., "Microsoft.VisualStudioCode" → "Visual Studio Code")
- Extract last segment from dotted package names and convert CamelCase to spaced format
- Add title attribute to package names for full name on hover
- Update README with optional icon addition step in contribution guide
- Document Simple Icons integration process for new package submissions
- Add package icons
2025-11-23 14:42:14 +03:00
Yusuf İpek 55e9e3b97d feat: Add package icons using Simple Icons and remove sorting functionality
- Integrate Simple Icons via CDN with SVG mask technique for theme-aware icons
- Add icon mapping for 150+ packages across all categories (development, design, multimedia, system tools, gaming, productivity, education)
- Implement fallback to default PackageIcon when icon unavailable or fails to load
- Add icon error handling with hidden img element to detect load failures
- Update RecommendationCard and RecommendationListItem to display
2025-11-23 14:38:39 +03:00
Yusuf İpek d66c02b7fa refactor: Remove useRecommendationProfile hook dependency and derive state from props in RecommendationsSection
- Replace hook-based state management with direct prop-based state derivation
- Implement getEffectiveOS and isProfileComplete as inline functions using profile prop
- Remove effectiveProfile intermediate variable and use profile prop directly
- Update all references from effectiveProfile to profile throughout component
- Simplify component dependencies by removing hook coupling
2025-11-23 14:28:59 +03:00
Yusuf İpek 9266de1f3e docs: Add comprehensive package contribution guide and validation tooling
- Add bilingual README with English/Turkish language switcher
- Create detailed package contribution guidelines with platform-specific naming conventions
- Add validation script for verifying package presets against database
- Include best practices and example PR format for contributors
- Add tsx dependency for running TypeScript validation scripts
- Document validation workflow with manual and automated verification options
2025-11-23 14:26:07 +03:00
Yusuf İpek 24c80559c8 refactor: Remove experience level selection and simplify category display in onboarding modal. 2025-11-23 13:43:31 +03:00
Yusuf İpek 4eac0917d0 feat: Implement platform locking with shadcn-ui tooltips and remove preset match badge. 2025-11-23 13:28:51 +03:00
Yusuf İpek 5b66d4700a Remove recommendation score and reason from UI and simplify logic 2025-11-23 13:10:34 +03:00
Yusuf İpek 17bbe54cb1 refactor: Pass user profile as a prop to the recommendations section and remove the manual refresh button. 2025-11-23 13:08:25 +03:00
Yusuf İpek b6afaaf67e Refactor recommendations: fix modal closing, update icons, extract components 2025-11-23 13:01:01 +03:00
ersaayan 4b45216d22 fix: address code review feedback
- Add validation for categories and experienceLevel in GET endpoint
- Fix type safety: remove 'any' types, use proper Platform type
- Fix hardcoded translations in Header component
- Refactor platform loading to use centralized platform list
- Remove duplicate getPackageManagerForOS logic
- Improve architectural consistency and DRY principles

Resolves Gemini Code Assist review comments
2025-11-22 18:52:36 +03:00
Eren Ali Şavk bfc8341ea8 Merge pull request #1 from ersaayan/feature/smart-package-recommendations
feat: Smart Package Recommendations System
2025-11-22 18:35:49 +03:00
ersaayan ccea8a40a4 feat: enhance recommendations with category tracking and UI improvements 2025-11-22 18:33:51 +03:00
ersaayan 32b415a97f feat: smart package recommendations with UX improvements
- Added smart recommendations section with category-based filtering
- Implemented onboarding flow with 3-step wizard (categories, OS, experience level)
- Added 'Select All/Deselect All' for recommendations
- Added 'Preferences' button in header to reopen onboarding
- Fixed script generation for recommendation-based packages (auto-detect platform)
- Fixed onboarding completion bug (removed duplicate save)
- Added comprehensive debug logging
- Enhanced ScriptPreview to work with auto-generated platform info
- Optimized recommendation API with proper validation and error handling
- Added localStorage profile management with version control
2025-11-22 18:10:16 +03:00
ersaayan f8fffdce83 perf: Optimize recommendation system and improve error handling
- Fix N+1 query problem in preset package fetching
  * Search with limit 5 to find best matches
  * Case-insensitive package name matching
  * Fallback to most popular when no exact match

- Improve category filtering accuracy
  * Update category mapping to match database schema
  * Remove duplicate packages in category fetching
  * Better distribution across categories

- Add version control for localStorage profile
  * Support future schema migrations
  * Auto-migrate old profiles to new version
  * Persist version in localStorage

- Enhance error handling
  * Specific error messages for 400/500/404 responses
  * Network error detection
  * User-friendly error messages in UI

- Fix OS detection fallback
  * Default to ubuntu when detection returns unknown
  * Prevent empty OS selection in onboarding

- Add better API validation
  * Explicit limit range validation (1-50)
  * Clear error messages for invalid inputs
2025-11-22 17:47:52 +03:00
capitolgrape 8a3d10504b paru desteği eklendi 2025-11-22 16:32:11 +03:00
ersaayan bcf8652728 refactor: standardize string quotes and improve code readability across multiple files
- Updated string quotes from single to double in useRecommendationProfile.ts, client.ts, recommendationService.ts, and recommendations.ts for consistency.
- Enhanced error handling and logging in API client and recommendation service.
- Improved code structure and formatting for better readability and maintainability.
- Ensured consistent use of semicolons and spacing throughout the codebase.
2025-11-22 16:21:15 +03:00
ersaayan 73f9248e98 feat: Add smart package recommendations feature
- Implement onboarding modal with 3-step wizard
  - Category selection (up to 3 categories)
  - OS detection with manual override
  - Experience level selection

- Add intelligent recommendation engine
  - Hybrid scoring algorithm (category 40%, popularity 30%, OS 20%, preset 10%)
  - 7 curated categories with preset packages
  - Support for all platforms (Windows, macOS, Ubuntu, Debian, Arch, Fedora)

- Create recommendation UI components
  - RecommendationsSection with grid layout
  - Package cards with recommendation scores and reasons
  - User profile display with customization options

- Add localStorage-based profile management
  - Persistent user preferences
  - Automatic OS detection
  - Profile CRUD operations via useRecommendationProfile hook

- Implement API endpoint
  - POST /api/recommendations
  - GET /api/recommendations (query params)
  - Request validation and error handling

- Add full i18n support
  - English and Turkish translations
  - Onboarding flow, categories, and UI labels

- Update TypeScript config (lib: es2017 for array.includes)

Closes #1
2025-11-22 16:20:36 +03:00
Yusuf İpek 00f3ce4706 feat: Enhance package search with normalized name matching and remove sync:arch script. 2025-11-22 16:10:15 +03:00
Yusuf İpek afd4456893 feat: Add AUR package synchronization and update README documentation. 2025-11-22 15:53:19 +03:00
Yusuf İpek 27a8544e02 feat: extend /api/sync endpoint to support Arch, Fedora, Winget, and Homebrew package syncing and document API usage. 2025-11-22 15:50:06 +03:00
Yusuf İpek 78578886e0 feat: Implement multi-level sorting for package search results, prioritizing name matches and adjusting count query parameters. 2025-11-22 14:44:53 +03:00
Yusuf İpek 4e64e2997c feat: use CF-Connecting-IP and X-Forwarded-For headers for rate limiting and add a test script. 2025-11-20 15:57:45 +03:00
Yusuf İpek af1ae5f1f8 feat: introduce API rate limiting for API routes and cap package query limits. 2025-11-20 15:55:43 +03:00
Yusuf İpek 48e2d2f05d feat: update Arch Linux script to use yay for package management and install yay if missing 2025-11-20 14:49:27 +03:00
Yusuf İpek 235238171b feat: Add README, refactor Cryptomus feature flag to use environment variable, and include GitHub link in header. 2025-11-20 14:45:24 +03:00
Yusuf İpek f482a1ee7a fix: ensure support status API is always dynamic by disabling caching 2025-11-20 14:38:32 +03:00
Yusuf İpek 99d9c7e00b feat: Add favicon and logo, configure app icons to use favicon, and unignore public directory. 2025-11-20 14:36:01 +03:00
Yusuf İpek fbb3664880 feat: Add favicon and logo, update header to use the new logo, and configure app icons. 2025-11-20 14:35:42 +03:00
Yusuf İpek 9c38be3a88 feat: add Cryptomus payment service toggle
- Added CRYPTOMUS_ENABLED environment variable to control payment service availability
- Created status endpoint to check service availability from frontend
- Updated Header to conditionally show support button based on service status
2025-11-17 18:33:19 +03:00
Yusuf İpek 9123dbb4c0 feat: expand cryptocurrency options and streamline payment flow
- Added support for 16 cryptocurrencies including Bitcoin, Ethereum, Monero, and popular stablecoins
- Removed email field from payment form as notifications are configured in merchant settings
- Organized crypto options by category (popular, stablecoins, other) for better UX
2025-11-17 17:58:54 +03:00
Yusuf İpek ce4d0a6e3a fix: correct Cryptomus signature generation to use base64 encoding
- Updated signature algorithm to match Cryptomus API requirements (MD5(base64(JSON) + API_KEY))
- Removed unnecessary key sorting that was incompatible with Cryptomus specification
- Simplified payment flow to redirect immediately to payment URL instead of showing intermediate success state
2025-11-17 17:32:58 +03:00
Yusuf İpek ea792a8a7f feat: add package pruning system with configurable grace periods
- Implemented automatic pruning of stale packages across all platform sync endpoints (Arch, AUR, Debian, Ubuntu, Fedora, Homebrew, Winget)
- Added `last_seen_at` tracking to mark packages as seen during sync runs and identify inactive packages
- Introduced `PRUNE_GRACE_DAYS` and `PRUNE_HARD_DELETE_DAYS` environment variables for configurable soft-delete and hard-delete thresholds
2025-11-13 01:54:23 +03:00
Yusuf İpek 560e78cb96 feat: add AUR repository support for Arch Linux packages
- Extended database schema and models to include 'aur' as a valid repository type alongside 'official' and 'third-party'
- Added repository filter UI in package browser for Arch platform to distinguish between official and AUR packages
- Enhanced init-db script with migration system to track and apply schema changes automatically
2025-11-12 20:43:50 +03:00
Yusuf İpek cce1098282 refactor: remove unused server-side sync scripts
- Deleted cron-setup.sh for automated sync scheduling
- Removed init-backend.sh database initialization script
- Removed server-sync.sh for platform synchronization
2025-11-12 00:35:37 +03:00
Yusuf İpek 1cb13f5314 refactor: make type and repository filters Debian/Ubuntu specific
- Removed type and repository filters from non-Debian/Ubuntu platforms (Arch, Fedora, macOS, Windows)
- Conditionally render type filter UI only for Debian/Ubuntu platforms
- Set type and repository to null in package fetchers for platforms that don't support these classifications
2025-11-12 00:22:33 +03:00
Yusuf İpek 4fb96f3dbc refactor: extract GitHub API rate limit handling into reusable method
- Consolidated duplicate fetch logic into githubFetch() helper with automatic retry
- Added header-based rate limit detection using x-ratelimit-* headers
- Implemented GITHUB_RL_STRICT mode for proactive rate limit management
2025-11-11 22:11:02 +03:00
Yusuf İpek 34fa6b5a87 fix: handle both gzipped and plain text package list responses
- Added magic number detection (0x1f 0x8b) to identify gzipped content
- Removed unnecessary gunzip options that were causing decompression issues
- Added fallback to treat non-gzipped responses as plain text
2025-11-11 20:26:34 +03:00
Yusuf İpek db91b8d96a feat: add API endpoints for Debian and Ubuntu package syncing
- Implemented /api/sync-debian and /api/sync-ubuntu routes with authentication and status tracking
- Added GET endpoints to check sync status and POST endpoints to trigger package fetches
- Included concurrent sync prevention and async error handling for long-running operations
2025-11-11 20:19:48 +03:00
Yusuf İpek 87f28e4da9 fix: correct SQL parameter index and improve API URL handling
- Fixed SQL UPDATE query parameter mismatch ($4 → $3) in Homebrew package fetcher
- Enhanced API_BASE_URL configuration to handle empty strings and trailing slashes, defaulting to '/api' for relative paths
2025-11-11 18:50:33 +03:00
Yusuf İpek cc82888c74 chore: remove debug endpoints and update configuration
- Removed debug-packages and test-sync API endpoints no longer needed
- Extracted sync status management into shared lib/sync/status module
- Updated Next.js config to remove deprecated experimental appDir flag
- Added port specification to production start script for consistency
2025-11-11 17:19:34 +03:00
Yusuf İpek b37373e807 feat: add authentication and configuration for sync operations
- Implemented SyncAuth to control sync access with server-only mode and secret key authorization
- Consolidated environment variables into single .env.example with improved sync configuration
- Protected all sync API endpoints (ubuntu, fedora, arch, homebrew, winget) with authentication checks
2025-11-11 16:41:37 +03:00
Yusuf İpek 6d39c9b48e feat: add cryptocurrency donation support with Cryptomus integration
- Added support modal component with payment creation flow and multi-language translations
- Integrated heart icon button in header to open donation modal
- Refactored PackageBrowser to accept packages as props and simplified filtering logic
2025-11-11 16:37:32 +03:00
Yusuf İpek 40a34d7133 fix: correct Windows package installation script generation
- Fixed package identifier usage: now uses `name` field (winget ID) instead of `id` field throughout Windows script
- Enhanced error handling with exit code checking and consistent [OK]/[ERROR] prefixes for better visibility
- Standardized PowerShell string quotes to single quotes for consistency
2025-11-11 16:26:51 +03:00
Yusuf İpek 299e951368 feat: add comprehensive Windows PowerShell script usage instructions
- Enhanced ScriptPreview with detailed Windows-specific installation steps including execution policy handling and winget availability checks
- Added localization support for all script preview UI elements and Windows usage instructions
- Improved script generator with automatic unblocking, admin privilege warnings, and winget validation
2025-11-11 16:13:29 +03:00
Yusuf İpek a462c18cc6 feat: add Homebrew package sync API with progress tracking
- Implemented API endpoint to fetch and store Homebrew formulae and casks from formulae.brew.sh
- Added real-time progress tracking for both fetch and storage operations with batch processing
- Created background sync process with status monitoring and duplicate detection
2025-11-10 20:14:56 +03:00
Yusuf İpek 2b93adcba5 feat: add Fedora package sync API endpoint
- Implemented API route with progress tracking for fetching and storing Fedora packages
- Created FedoraPackageFetcher service to scrape packages.fedoraproject.org with rate limiting
- Added batch processing and duplicate detection for efficient database storage
2025-11-10 20:06:23 +03:00
Yusuf İpek fdd5d9ef63 feat: add architecture sync script and cheerio dependency
- Added sync:arch npm script to synchronize architecture documentation
- Installed cheerio for HTML parsing capabilities
- Alphabetized package.json dependencies for better maintainability
2025-11-10 19:47:07 +03:00
Yusuf İpek 08f35aedbc feat: add multiple package sync sources and API integration
- Added undici dependency and implemented three package fetcher variants (simple text parsing, v2 with better error handling, and official repository sync)
- Integrated real API calls in PlatformSelector and PackageBrowser components with fallback to mock data
- Extended sync API route to support multiple data sources (debian-simple, ubuntu-simple, debian-official-v2, etc.) with platform initialization
2025-11-10 19:12:46 +03:00