{"id":28739848,"url":"https://github.com/codingforentrepreneurs/recommender","last_synced_at":"2025-10-29T23:52:59.999Z","repository":{"id":59600131,"uuid":"529371345","full_name":"codingforentrepreneurs/recommender","owner":"codingforentrepreneurs","description":"Build a recommendation engine using Django \u0026 a Machine Learning technique called Collaborative Filtering.","archived":false,"fork":false,"pushed_at":"2023-02-02T21:04:21.000Z","size":148,"stargazers_count":68,"open_issues_count":0,"forks_count":15,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-10-04T22:41:49.749Z","etag":null,"topics":["celery","django","keras","machine-learning","machine-learning-orchestration","mlops","python","recommender-system","redis"],"latest_commit_sha":null,"homepage":"https://www.codingforentrepreneurs.com/courses/recommender/","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codingforentrepreneurs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-08-26T18:48:15.000Z","updated_at":"2025-09-24T05:06:00.000Z","dependencies_parsed_at":"2023-02-18T00:31:41.875Z","dependency_job_id":null,"html_url":"https://github.com/codingforentrepreneurs/recommender","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/codingforentrepreneurs/recommender","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingforentrepreneurs%2Frecommender","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingforentrepreneurs%2Frecommender/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingforentrepreneurs%2Frecommender/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingforentrepreneurs%2Frecommender/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codingforentrepreneurs","download_url":"https://codeload.github.com/codingforentrepreneurs/recommender/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingforentrepreneurs%2Frecommender/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279012643,"owners_count":26085158,"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-10-12T02:00:06.719Z","response_time":53,"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":["celery","django","keras","machine-learning","machine-learning-orchestration","mlops","python","recommender-system","redis"],"created_at":"2025-06-16T06:11:01.916Z","updated_at":"2025-10-12T19:05:32.668Z","avatar_url":"https://github.com/codingforentrepreneurs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Recommender Course Image](https://static.codingforentrepreneurs.com/media/courses/recommender/8aa6d83c-8134-4e68-8954-65bc978033b2.jpg)](https://www.codingforentrepreneurs.com/courses/recommender/)\n\n# Recommender\n\nBuild a recommendation engine using Django \u0026amp; a Machine Learning technique called Collaborative Filtering.\n\n[Live demo with limited features](http://recommender.demo.cfe.sh)\n\n## Getting Started\n\n1. Clone the project and make it your own. Use branch `start` initially so we can all start in the same place.\n```bash\ngit clone https://github.com/codingforentrepreneurs/recommender\ncd recommender\n```\nIf you're _starting in the course_, use the following:\n\n```\ngit checkout start\nrm -rf .git\ngit init .\ngit add --all\ngit commit -m \"My recommender project\"\n```\n\n2. Create virtual environment and activate it.\n\n```bash\npython3.8 -m venv venv\nsource venv/bin/activate\n```\nUse `.\\venv\\Scripts\\activate` if on windows\n\n3. Install requirements\n```\n(venv) python -m pip install pip --upgrade\n(venv) python -m pip install -r requirements.txt\n```\n\n4. Open VSCode\n```bash\ncode .\n```\n\n5. Create `.env` file:\n\nIn `src/.env` add:\n```\nCELERY_BROKER_REDIS_URL='redis://localhost:6380'\nDJANGO_DEBUG='1'\nSECRET_KEY='o43ig(nx@1)ae$y6_@lbh95fp@3#lda3!y6agi\u0026r3e+m-z$cu_'\n```\nReplace your `SECRET_KEY` with a new one using [this guide](https://www.codingforentrepreneurs.com/blog/create-a-one-off-django-secret-key/) or simply:\n\n```bash\npython -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'\n```\n\n6. Start Docker Compose for a Redis Instance\n\nBelow will start a docker-based Redis instance that will run at port 6380 on your local machine to match the `.env` from the previous step.\n```\ndocker compose up -d\n```\nConsider watching my [Docker \u0026 Docker Compose](https://www.codingforentrepreneurs.com/courses/docker-and-docker-compose/) course if you're new to docker.\n\n7. Run Django Commands\n\n```\ncd path/to/recommender\nsource venv/bin/activate\n$(venv) cd src\n```\n\nMigrations and Create Superuser\n```\n$(venv) python manage.py makemigrations\n$(venv) python manage.py migrate\n$(venv) python manage.py createsuperuser\n```\n\nRun the server:\n```\n$(venv) python manage.py runserver\n```\n\n8. Download the Movies Dataset\n- Go to [this kaggle project](https://www.kaggle.com/datasets/rounakbanik/the-movies-dataset)\n- Login or sign up\n- Download [The Movies Dataset](https://www.kaggle.com/datasets/rounakbanik/the-movies-dataset)\n- Expand archive.zip (the downloaded file)\n- Copy contents into `recommender/src/data` so that you have:\n\n```\n# in recommender projectdir\n$(venv) ls src/data\ncredits.csv             links.csv               movies_metadata.csv     ratings_small.csv\nkeywords.csv            links_small.csv         ratings.csv\n```\nWe only need `links_small.csv`, `ratings_small.csv`, and `movies_metadata.csv` at this time.\n\nThe entire `src/data` folder is in `.gitignore` so you do not accidently commit this data to your git repo.\n\n9. Load in Movie Data\nRun migrations if needed:\n```\npython manage.py makemigrations\npython manage.py migrate\n```\nThen:\n```\npython manage.py loader 200_000 --movies\n```\n\n10. Load in Rating Data \n```\npython manage.py dataset_ratings\n```\n\n11. Train your ML Model\n```\npython manage.py train --epochs 20\n```\nWhen your worker is running, you can also do `python manage.py train --async --epochs 20`\n\n12. Run the Worker\n```\ncelery -A cfehome worker -l info --beat\n```\n\n13. Rate some movies\nWith the server running (`python manage.py runserver`) open up [http://localhost:8000/accounts/login](http://localhost:8000/login) and rate some movies.\n\n14. Create recommendation predictions\n\n```\npython manage.py recommend\n```\n\u003e This can also be done as a periodic task\n\n15. Review Predictions on Dashboard\n\n16. Celebrate!\n\n## Helpful Guides\n- [Using a Cloud-based Redis Server](https://www.codingforentrepreneurs.com/blog/remote-redis-servers-for-development/)\n- [Install Redis on Windows](https://www.codingforentrepreneurs.com/blog/redis-on-windows/)\n- [Install Redis on macOS](https://www.codingforentrepreneurs.com/blog/install-redis-mac-and-linux)\n- [Celery + Redis + Django Setup Guide](https://www.codingforentrepreneurs.com/blog/celery-redis-django/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingforentrepreneurs%2Frecommender","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodingforentrepreneurs%2Frecommender","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingforentrepreneurs%2Frecommender/lists"}