{"id":30407875,"url":"https://github.com/ray8118/anime-recommendation","last_synced_at":"2026-05-01T23:38:24.878Z","repository":{"id":305015110,"uuid":"1021002432","full_name":"RaY8118/anime-recommendation","owner":"RaY8118","description":"NekoRec is a full-stack web application for personalized anime recommendations. It features anime browsing, detailed views, genre   exploration, and content-based recommendations using FastAPI (Python) for the backend with Gemini Embeddings and React (TypeScript) for   the frontend.","archived":false,"fork":false,"pushed_at":"2025-08-21T11:55:16.000Z","size":493,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-21T13:35:16.707Z","etag":null,"topics":["anime-search","anime-website","embeddings","fastapi","mongodb-atlas","python","typescript"],"latest_commit_sha":null,"homepage":"https://nekorec.pages.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RaY8118.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-16T18:12:38.000Z","updated_at":"2025-08-21T11:55:18.000Z","dependencies_parsed_at":"2025-07-17T23:32:53.764Z","dependency_job_id":"5a497021-2a93-409c-b492-6529caeea912","html_url":"https://github.com/RaY8118/anime-recommendation","commit_stats":null,"previous_names":["ray8118/anime-recommendation"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RaY8118/anime-recommendation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaY8118%2Fanime-recommendation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaY8118%2Fanime-recommendation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaY8118%2Fanime-recommendation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaY8118%2Fanime-recommendation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RaY8118","download_url":"https://codeload.github.com/RaY8118/anime-recommendation/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaY8118%2Fanime-recommendation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271539817,"owners_count":24777495,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-21T02:00:08.990Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anime-search","anime-website","embeddings","fastapi","mongodb-atlas","python","typescript"],"created_at":"2025-08-21T20:55:30.052Z","updated_at":"2026-05-01T23:38:24.869Z","avatar_url":"https://github.com/RaY8118.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ✨ NekoRec: Anime Recommendation System\n\nNekoRec is a full-stack web application designed to provide personalized anime recommendations. Users can browse anime, view details, explore by genre, and receive recommendations based on content similarity.\n\n## 🚀 Features\n\n- 📚 **Browse Anime:** Explore a wide collection of anime.\n- 🎬 **Anime Details:** View detailed information about each anime, including synopsis, genres, and more.\n- 🏷️ **Genre Exploration:** Filter and discover anime by various genres.\n- ❤️ **Personalized Recommendations:** Get anime recommendations based on content similarity (e.g., description, genres).\n- 💡 **Suggest Anime:** Functionality for users to suggest new anime\n- 💬 **AI Chatbot:** Interact with a multi-model AI chatbot for anime recommendations and information. Users can select from various models to customize their experience.\n\n## 🛠️ Technologies Used\n\n### 🐍 Backend\n\n- **Python:** The core programming language.\n- **FastAPI:** A modern, fast (high-performance) web framework for building APIs with Python 3.7+.\n- **uv:** A fast Python package installer and resolver.\n- **Gemini Embeddings:** Used for generating vector embeddings of anime descriptions for content-based recommendations.\n- **OpenRouter:** Enables multi-model support for the chatbot, allowing users to select from a variety of large language models.\n- **MongoDB:** NoSQL database used for storing anime data and embeddings.\n- **Anilist API:** Data for anime is sourced from the Anilist API.\n- **Data Processing:** Custom scripts for fetching anime data, text cleaning, generating embeddings, and calculating similarity for recommendations.\n\n### 🌐 Frontend\n\n- **React:** A JavaScript library for building user interfaces.\n- **TypeScript:** A typed superset of JavaScript that compiles to plain JavaScript.\n- **Vite:** A fast build tool that provides a lightning-fast development experience.\n- **Tanstack Query:** For efficient data fetching, caching, and state management.\n- **Tailwind CSS:** A utility-first CSS framework for rapidly building custom designs.\n- **ESLint:** For code linting and maintaining code quality.\n\n## 🏁 Getting Started\n\nFollow these instructions to set up and run the project locally.\n\n### 📋 Prerequisites\n\n- **Python 3.9+** (or the version specified in `.python-version` in the `backend` directory)\n- **Node.js** (LTS version recommended) or **Bun** (if using `bun.lock`)\n- **Git**\n\n### ⚙️ Backend Setup\n\n1.  Navigate to the `backend` directory:\n    ```bash\n    cd backend\n    ```\n2.  Install `uv` (if you don't have it):\n    ```bash\n    pip install uv\n    ```\n3.  Create a virtual environment and install dependencies using `uv`:\n    ```bash\n    uv venv\n    source .venv/bin/activate  # On Windows: .venv\\Scripts\\activate\n    uv pip install -r requirements.txt # Or uv pip install -e . if pyproject.toml is configured for editable install\n    ```\n    _Note: If `requirements.txt` is not present, `uv.lock` is used. You might need to run `uv pip install` directly or `uv sync`._\n4.  Run the FastAPI application:\n    ```bash\n    uvicorn app.main:app --reload\n    ```\n    The backend API will be available at `http://127.0.0.1:8000` (or similar).\n\n### 🖥️ Frontend Setup\n\n1.  Navigate to the `frontend` directory:\n    ```bash\n    cd frontend\n    ```\n2.  Install dependencies using npm, yarn, or bun:\n    ```bash\n    npm install\n    # or yarn install\n    # or bun install\n    ```\n3.  Start the development server:\n    ```bash\n    npm run dev\n    # or yarn dev\n    # or bun dev\n    ```\n    The frontend application will be available at `http://localhost:5173` (or similar).\n\n## 📂 Project Structure\n\n```\n.\n├── .gitignore\n├── backend/                      # FastAPI backend application\n│   ├── .python-version           # Specifies the exact Python version\n│   ├── .venv/                    # Python virtual environment\n│   ├── uv.lock                   # Lock file for `uv` dependency management\n│   ├── app/                      # Main FastAPI application code\n│   │   ├── routers/              # API endpoints (e.g., animes, ping)\n│   │   ├── schemas/              # Pydantic models for data validation\n│   │   └── utils/                # Utility functions (embeddings, similarity, data fetching, text cleaning)\n│   ├── fetch_anime.py            # Script for fetching and processing anime data\n│   ├── Dockerfile                # Docker configuration for the backend\n│   └── pyproject.toml            # Project configuration and dependencies (Poetry/Rye)\n├── frontend/                     # React/TypeScript frontend application\n│   ├── bun.lock                  # Lock file for Bun package manager\n│   ├── eslint.config.js          # ESLint configuration for code quality\n│   ├── public/                   # Static assets\n│   ├── src/                      # Frontend source code\n│   │   ├── components/           # Reusable React components\n│   │   ├── hooks/                # Custom React hooks\n│   │   ├── pages/                # Main application pages/views\n│   │   ├── services/             # API service integrations\n│   │   └── types/                # TypeScript type definitions\n│   ├── package.json              # Frontend dependencies and scripts\n│   ├── tailwind.config.js        # Tailwind CSS configuration\n│   └── vite.config.ts            # Vite build configuration\n└── README.md                     # This project README file\n```\n\n## 🚀 Deployment\n\n### Backend\n\nThe backend is deployed as a Docker image on Docker.\n\n### Frontend\n\nThe frontend is deployed on Cloudflare Pages.\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to open issues or submit pull requests.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fray8118%2Fanime-recommendation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fray8118%2Fanime-recommendation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fray8118%2Fanime-recommendation/lists"}