{"id":15473484,"url":"https://github.com/seluj78/pymatcha","last_synced_at":"2025-09-11T19:31:46.285Z","repository":{"id":38310942,"uuid":"158558202","full_name":"Seluj78/PyMatcha","owner":"Seluj78","description":"Python Matcha Dating Website","archived":false,"fork":false,"pushed_at":"2024-10-14T16:59:00.000Z","size":18906,"stargazers_count":9,"open_issues_count":1,"forks_count":4,"subscribers_count":3,"default_branch":"dev","last_synced_at":"2024-12-30T03:20:35.585Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Seluj78.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-21T14:12:46.000Z","updated_at":"2024-08-23T06:00:58.000Z","dependencies_parsed_at":"2024-08-05T19:54:11.279Z","dependency_job_id":null,"html_url":"https://github.com/Seluj78/PyMatcha","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seluj78%2FPyMatcha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seluj78%2FPyMatcha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seluj78%2FPyMatcha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seluj78%2FPyMatcha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Seluj78","download_url":"https://codeload.github.com/Seluj78/PyMatcha/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232662557,"owners_count":18557472,"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","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":[],"created_at":"2024-10-02T02:53:58.841Z","updated_at":"2025-01-06T01:52:38.413Z","avatar_url":"https://github.com/Seluj78.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![GitHub](https://img.shields.io/github/license/seluj78/pymatcha?style=for-the-badge) ![Travis (.com)](https://img.shields.io/travis/com/seluj78/pymatcha/dev?label=builds%20and%20tests\u0026style=for-the-badge) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/seluj78/pymatcha?style=for-the-badge) ![Libraries.io dependency status for GitHub repo](https://img.shields.io/librariesio/github/seluj78/pymatcha?style=for-the-badge)\n# PyMatcha\n#### Made by [Jules Lasne](https://github.com/seluj78) and [Lauris Skraucis](https://github.com/suppalarry) \n\n## Summary\n - [Why ?](#why)\n - [Installation](#installation)\n   - [For Production](#for-production)\n   - [For developpment](#for-developpment)\n      - [Backend](#backend)\n      - [Workers](#workers)\n      - [Frontend](#frontend)\n - [Services in docker-compose](#the-different-services-on-the-docker-compose)\n - [What does it look like](#what-does-it-look-like)\n - [How long did it take](#how-long-did-it-take)\n - [How many lines of code](#how-many-lines-of-code)\n - [What are the features](#features-implemented)\n    - [What are the bonuses](#bonuses-implemented)\n\n### Why ?\nMatcha is a [42](https://42.fr) school project aiming to teach how to make a dating website. Lauris and Jules chose to make it as close as it could be to a real production product.\nYou can find the subject [here](https://github.com/Seluj78/PyMatcha/blob/dev/subject.pdf)\n\n### Installation\n\nFirst of all, contact [Jules](https://github.com/seluj78) or [Lauris](https://github.com/supalarry) to get the env files.\n\nFor more information, checkout [the backend .env.template](https://github.com/Seluj78/PyMatcha/blob/dev/.env.template) and [the frontend .env.template](https://github.com/Seluj78/PyMatcha/blob/dev/frontend/.env.template)\n\n#### For production\nYou can simply download or git clone the project and, once inside of it, run `docker-compose up --build`.\n\nThe website will be accessible on port `4242`.\n\nIf you do not want to build the containers yourself, you can use `docker-compose-gh.yml` instead:\n\n```bash\ndocker-compose -f docker-compose-gh.yml up\n```\n\n#### For developpment\nFirst of all, clone or download the repository, extract it if necessary then cd into it.\n\n##### Backend:\nYou'll need `python3.8`+. cd in the backend and run:\n```shell\npython3.8 -m venv venv --prompt PyMatcha\n```\n```shell\nsource venv/bin/activate\n```\n```shell\npip install backend/requirements.txt\n```\n```shell\npython run.py\n```\n\n##### Workers:\nSame thing as for the backend, just then `cd` in the backend folder and run\n```shell\ncelery -A PyMatcha.celery worker -E --loglevel=INFO -B --pool=threads\n```\n\n##### Frontend:\n`cd` in the frontend folder and run `yarn install` then `yarn run`\n\n### The different services on the docker-compose:\n\n - Backend on port `8080`\n - Frontend on port `4242`\n - Swagger doc on `9000`\n - PHPMyAdmin for debug on `8183`\n - Workers on internal port\n - Redis on `6379`\n - MySQL on internal port\n\n### What does it look like\n![Home page](https://i.imgur.com/fS5QMl2.jpeg)\n![Sign Up](https://i.imgur.com/YuHHG6D.png)\n![Onboarding](https://i.imgur.com/iOQQRKQ.png)\n![Recommended profiles](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/recommended_profiles.jpg?raw=true)\n![Search page](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/search_page.png?raw=true)\n![Search no results](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/search_no_results.png?raw=true)\n![Search results](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/search_results.jpg?raw=true)\n![Profile settings](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/profile_settings.png?raw=true)\n![History](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/history.jpg?raw=true)\n![Profile](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/unmatched_profile.png?raw=true)\n![Matched profile](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/matched_profile.jpg?raw=true)\n![Matches and chat](https://i.imgur.com/bofiix9.png)\n\n### How long did it take\nLauris and Jules started working on it at the begining of september and finished on `XXX`.\nIf you see commits before September, it's of an older version where Jules changed twice of frontend partner\nHere is a nice visual representation of the commits:\n\n[![Gource Video](https://img.youtube.com/vi/wi6zGENXwdo/0.jpg)](https://youtu.be/wi6zGENXwdo)\n\n### How many lines of code\nAs of Thu 12 Nov 11:40\n```\n     637 text files.\n     624 unique files.                                          \n     164 files ignored.\n\ngithub.com/AlDanial/cloc v 1.88  T=1.68 s (333.3 files/s, 17377.3 lines/s)\n-------------------------------------------------------------------------------\nLanguage                     files          blank        comment           code\n-------------------------------------------------------------------------------\nJSON                           329              0              0           7924\nPython                         119           1560           2126           5633\nVuejs Component                 53            146             91           4492\nYAML                             7             32             22           2531\nXML                             14              0              0           2042\nJavaScript                      21             44             35           1156\nCSS                              5             61              5            459\nHTML                             4              0             22            253\nSQL                              1             43             66            202\nMarkdown                         4             42              0            139\nTOML                             1              3              5             21\nDockerfile                       1             12              0             18\nSVG                              1              0              0              8\n-------------------------------------------------------------------------------\nSUM:                           560           1943           2372          24878\n-------------------------------------------------------------------------------\n```\n\n### Features implemented\n - Sign-up and sign-in\n    - Forgot password email\n    - Resend confirmation email\n    - Registration process to add info on user\n - Browse recommended users\n    - Filter them\n    - Sort them\n - Search users\n    - Filter them\n    - Sort them\n - Like and superlike a user\n - Notifications for:\n    - Like\n    - Unlike\n    - Match\n    - Message\n  - Chat with instant replies\n  - Settings page where you can modify everything\n  - History page \n\n#### Bonuses implemented\n - Superlikes\n - [CI/CD](https://github.com/Seluj78/PyMatcha/blob/dev/.travis.yml)\n - [Postman API tests](https://github.com/Seluj78/PyMatcha/blob/dev/PyMatchaV2.postman_collection.json)\n - Bots\n - [Swagger API Documentation](https://github.com/Seluj78/PyMatcha/blob/dev/backend/schemas/swagger.yaml)\n - Backend Site map (:8080/site-map)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseluj78%2Fpymatcha","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseluj78%2Fpymatcha","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseluj78%2Fpymatcha/lists"}