Skip to content

timothewt/artscout

Repository files navigation

ArtScout

Discover artworks tailored just for you.

Python FastAPI React Docker

✨ Features


  • 🎨 Artwork Discovery: Browse through a curated collection of 81,000+ artworks from various artists and genres
  • 🔍 Smart Search: Full-text search across artwork titles, artists, and genres with instant results
  • 🤖 AI-Powered Recommendations: Get personalized artwork suggestions based on your selection using deep learning models
  • ❤️ Like System: Save your favorite artworks and get better recommendations over time
  • 🎲 Feeling Lucky: Discover random artworks when you're in an exploratory mood
  • 🚀 Fast & Responsive: Modern React frontend with optimized API performance
  • 🐳 Docker Ready: One-command deployment
  • 🔒 Production Ready: Scalable FastAPI backend with health checks and proper error handling

🏗️ Architecture


artscout/
├── backend/                    # FastAPI backend server
│   ├── api/                   # REST API endpoints and routing
│   ├── db/                    # Database queries and connection management
│   ├── models/                # SQLAlchemy models and Pydantic schemas
│   ├── services/              # Business logic and recommendation engine
│   ├── tests/                 # Backend test suite
│   └── utils/                 # Helper functions and utilities
├── frontend/                   # React web application
│   ├── public/                # Static assets and manifest
│   └── src/                   # Source code
│       ├── assets/            # Images, fonts, and static resources
│       ├── components/        # React components
│       │   ├── artwork/       # Artwork-specific components
│       │   ├── layout/        # Layout and navigation components
│       │   ├── modals/        # Modal dialogs and overlays
│       │   └── ui/            # Reusable UI components
│       ├── contexts/          # React context providers
│       ├── hooks/             # Custom React hooks
│       ├── pages/             # Route-level page components
│       ├── services/          # API client and external services
│       ├── types/             # TypeScript type definitions
│       └── utils/             # Frontend utility functions
├── docker-compose.yml         # Production deployment configuration
└── pyproject.toml             # Project dependencies and configuration

🚀 Quick Start


Prerequisites

Ensure you have the following installed:

🐳 Production Setup (Docker - Recommended)

The fastest way to get ArtScout running with automatic database setup:

  1. Clone

    git clone https://gitlab.com/timothewt/artscout.git
    cd artscout 
  2. Set the environment variables

    Create a .env file based on .env.example:

    cp .env.example .env
    # Edit .env to set your API URLs
  3. Build and launch

    # Clean start (recommended)
    docker compose down -v
    docker compose build --no-cache
    docker compose up
  4. Access the app

    • Frontend: http://localhost:3000
    • Backend API: http://localhost:8000
    • API Docs: http://localhost:8000/docs

🛠️ Development Setup

For local development and customization:

  1. Clone the repository

    git clone https://gitlab.com/timothewt/artscout.git
    cd artscout
  2. Install Python dependencies

    Choose the installation that matches your needs:

    # Base installation
    pip install -e .
    
    # For app development
    pip install -e ".[dev]"
  3. Install frontend dependencies

    cd ./frontend
    npm install
    cd ../
  4. Start the development servers

    Backend (Terminal 1):

    uvicorn backend.main:app --reload --port 8000 --host 0.0.0.0

    Frontend (Terminal 2):

    cd ./frontend npm run dev
  5. Open your browser to http://localhost:5173

📦 Dependencies


Core Technologies

  • PyTorch - For the recommender system

Web Application Stack

  • FastAPI - Modern, fast framework for APIs
  • React - Component-based frontend framework

👥 Author

📄 License


This project is under license Apache 2.0.

Releases

No releases published

Packages

 
 
 

Contributors