Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Repo Recommender

Coverage Status

See Product Requirements Document on Google Docs.

The Repository Recommender system uses a Github-authenticated user's stars as machine learning features to recommend other repositories to follow, using low-rank matrix approximation.

Repo Recommender Demo Screencast

Built With

Key algorithms/methods

File structure

├──             # Helper functions interfacing with api
├──                # Configuration variables
├──              # Helper functions interfacing with the database
├── experiments.ipynb        # Jupyter NB including SVD tests
├──                 # Flask-SQLAlchemy classes for the data model
├── requirements.txt         # Defines requirements
├──                   # Recommender system functions
├──                # Flask routes
├──         # Tests for
├──            # Tests for
├──              # Tests for
├──           # Tests for and front-end
├──            # Tests for
├──               # Decorator for logging
├──      # Script by Katie Byers to introspect DB & set autoincrementing primary keys
├──                 # Helper methods for
├── static
│   ├── graph.js             # d3 for graph on homepage
│   ├── recs.jsx             # AJAX requests and functions to render React components
│   ├── repo.jsx             # React components for displaying repositories
│   └── style.css            # CSS
└── templates
    ├── base.html            # Template (includes navbar, header, & footer)
    ├── home.html            # Homepage
    ├── repo_recs.html       # Repo recommendations rendered with React components
    └── user_info.html       # Details about a user and their repositories


  • Plan features for 2.0:
    • Add AJAX to follow users
    • Write route to show stars of a user
    • Add like/dislike feature to "Like" a repo without starring
      • I.e., "see more like this" / "see less like this"
    • Write API requests instead of using PyGithub?
    • Build queue table and handlers instead of crawling recursively
    • Expand async calls to dynamically increase crawl breadth on login

Resources used:.