Skip to content

jadbox/favorfind

Repository files navigation

FavorFind Logo

FavorFind

The Ultimate Directory of the Best Things on the Internet

Built with Astro Powered by Bun React


🎯 Overview

FavorFind is an intelligent platform designed to assist with purchase decisions by streamlining the discovery of high-quality products through a dynamic dialpad interface. Users begin in the "Buy" category and navigate sub-menus to specify needsβ€”for instance, selecting "Electronics" to explore options like Smartphones, TVs, Laptops, Desktops, Tablets, or Accessories. Personalization is achieved via preference tags such as repairable, open source, eco-friendly, or trendy, ensuring recommendations match individual criteria.

This guided approach supports efficient buying choices, from 4K home theater projectors with extended lamp life to sustainable technology solutions.

✨ Key Features

🎨 Dynamic Dialpad Navigation

  • 4-Step Guided Search: Navigate through Buy, Learn, Guide, Social, News, and Lookup categories
  • Smart Categorization: AI-powered third-level menu generation using Gemini
  • Icon-Based Interface: Beautiful Lucide React icons for intuitive navigation

πŸ” Intelligent Search

  • Multiple Search Providers: Perplexity AI, Gemini, and Semantic Scholar integration
  • Smart Caching: SQLite-based caching for lightning-fast repeat searches
  • Advanced Filters: Content type, source type, date, and relevance sorting

πŸ“š Personal Library

  • Save & Organize: Keep track of your favorite resources
  • Persistent Storage: Local storage for instant access across sessions
  • Quick Access: View your saved items anytime

🎨 Modern UI/UX

  • Responsive Design: Works seamlessly on desktop, tablet, and mobile
  • Dark Theme: Eye-friendly interface for extended browsing
  • Smooth Animations: Polished interactions with loading states

πŸ› οΈ Tech Stack

  • Framework: Astro - The web framework for content-driven websites
  • Runtime: Bun - Fast all-in-one JavaScript runtime
  • Frontend: React 19 - UI components with hooks
  • Styling: Tailwind CSS - Utility-first CSS framework
  • Icons: Lucide React - Beautiful & consistent icons
  • AI: Google Gemini - Dynamic menu generation
  • Search: Perplexity AI - Intelligent search results
  • Database: SQLite (via Bun) - Local caching and storage

πŸš€ Getting Started

Prerequisites

  • Bun >= 1.0.0
  • Node.js >= 18.0.0 (optional, for compatibility)

Installation

  1. Clone the repository

    git clone https://github.com/jadbox/favorfind.git
    cd favorfind
  2. Install dependencies

    bun install
  3. Set up environment variables

    Create a .env file in the root directory:

    GEMINI_API_KEY=your_gemini_api_key_here
    PERPLEXITY_API_KEY=your_perplexity_api_key_here
    SEMANTIC_SCHOLAR_API=your_semantic_scholar_api_key_here
  4. Start the development server

    bun run dev
  5. Open your browser

    Navigate to http://localhost:4322

πŸ”‘ API Keys

Gemini API (Required)

  • Purpose: Dynamic menu generation for the dialpad's third level
  • Get Your Key: Google AI Studio

Perplexity AI (Required)

Semantic Scholar (Optional)

πŸ“– Usage

Using the Dialpad

  1. Select a Category: Choose from Buy, Learn, Guide, Social, News, or Lookup & Forecast
  2. Pick a Subcategory: Drill down into specific topics
  3. Choose Specifics: AI generates relevant options based on your selections
  4. View Results: Get curated search results matching your exact needs

Filtering Results

Refine your search results with filters on the results page.

Saving to Library

Click the bookmark icon on any result to save it to your personal library for later reference.

πŸ—οΈ Project Structure

favorfind/
β”œβ”€β”€ public/
β”‚   └── images/          # Static assets including logo
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/      # React components
β”‚   β”‚   β”œβ”€β”€ Dialer.tsx   # Dynamic dialpad component
β”‚   β”‚   β”œβ”€β”€ SearchResultsFilters.tsx
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ config/          # Configuration files
β”‚   β”‚   β”œβ”€β”€ dialerConfig.ts
β”‚   β”‚   └── filterConfig.ts
β”‚   β”œβ”€β”€ layouts/         # Astro layouts
β”‚   β”œβ”€β”€ pages/           # Astro pages & API routes
β”‚   β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”‚   β”œβ”€β”€ dialer/  # Dialpad API endpoints
β”‚   β”‚   β”‚   └── search.ts
β”‚   β”‚   └── index.astro
β”‚   β”œβ”€β”€ services/        # Data providers & services
β”‚   β”‚   β”œβ”€β”€ cache.ts     # SQLite caching
β”‚   β”‚   β”œβ”€β”€ geminiDataProvider.ts
β”‚   β”‚   └── perplexityDataProvider.ts
β”‚   └── utils/           # Utility functions
└── plans/               # Project documentation

πŸ§ͺ Development

Build for Production

bun run build

Preview Production Build

bun run preview

Run with Bun

bun start

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“„ License

This project is licensed under the MIT License.

πŸ™ Acknowledgments


Made with ❀️ for the internet by Jonathan Dunlap https://www.linkedin.com/in/jonathandunlap/

About

For favorfind.com

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published