{"id":31827261,"url":"https://github.com/machinekoder/speed-friending-and-dating-matcher","last_synced_at":"2025-10-11T18:23:50.193Z","repository":{"id":57469800,"uuid":"98917747","full_name":"machinekoder/speed-friending-and-dating-matcher","owner":"machinekoder","description":" Matching Software for Speed Friending and Dating Events","archived":false,"fork":false,"pushed_at":"2019-03-16T20:30:12.000Z","size":76,"stargazers_count":7,"open_issues_count":8,"forks_count":10,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-22T22:18:15.268Z","etag":null,"topics":["csv","matching","processing","python","social","social-network","speed-dating","speed-friending"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"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/machinekoder.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":"2017-07-31T18:30:35.000Z","updated_at":"2024-05-21T11:19:31.000Z","dependencies_parsed_at":"2022-09-19T10:20:38.455Z","dependency_job_id":null,"html_url":"https://github.com/machinekoder/speed-friending-and-dating-matcher","commit_stats":null,"previous_names":["machinekoder/speed-friending-matcher"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/machinekoder/speed-friending-and-dating-matcher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machinekoder%2Fspeed-friending-and-dating-matcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machinekoder%2Fspeed-friending-and-dating-matcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machinekoder%2Fspeed-friending-and-dating-matcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machinekoder%2Fspeed-friending-and-dating-matcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/machinekoder","download_url":"https://codeload.github.com/machinekoder/speed-friending-and-dating-matcher/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machinekoder%2Fspeed-friending-and-dating-matcher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279008282,"owners_count":26084430,"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-11T02:00:06.511Z","response_time":55,"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":["csv","matching","processing","python","social","social-network","speed-dating","speed-friending"],"created_at":"2025-10-11T18:23:49.073Z","updated_at":"2025-10-11T18:23:50.186Z","avatar_url":"https://github.com/machinekoder.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Matching Software for Speed Friending and Dating Events\n[![Build Status](https://travis-ci.org/DiffSK/configobj.svg?branch=master)](https://travis-ci.org/machinekoder/speed-friending-and-dating-matcher)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/machinekoder/speed-friending-matcher/blob/master/LICENSE)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n\nThis application is designed to make your life as organizer of speed friending or speed dating events easier. I created this software for a [local speed friending event in Vienna, Austria](https://www.meetup.com/de-DE/speed-friending-events/) to give back value to the event organizers. For me, the project additionally serves as a playground for software engineering best practices. The application was implemented in an agile, test-driven development process applying all development best practices so far known to me.\n\n## Installing the application\nTo install the live coding environment run:\n\n```bash\npython setup.py install\n```\n\nor install it via pip\n\n```bash\npip install speed-friending-matcher\n```\n\n## How to use it\nRun the speed-friending-matcher from the command line:\n```\nusage: speed_friending_matcher [-h] -i INPUT -o OUTPUT [-m MATCHMAKER] [-s]\n\nMatchmaking application for speed friending events\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -i INPUT, --input INPUT\n                        Input plugin and parameters e.g. csv:somefile.csv\n  -o OUTPUT, --output OUTPUT\n                        Output plugins and parameters e.g. todo:mytodo.txt\n  -m MATCHMAKER, --matchmaker MATCHMAKER\n                        Matchmaker, simple or clique\n  -s, --server          Starts a local webserver with a web GUI.\n```\n\nFor example:\n```bash\nspeed_friending_matcher -i csv:example/sample.csv -o todo:test.txt\n```\n\n## Importer Plugins\n\n* **csv:\u003cfilename\u003e.csv:** imports a CSV file with partipants data\n\n## Exporter Plugins\n\n`[]` means optional\n\n* todo - exports a TODO file\n```\ntodo:\u003cfilename\u003e.txt:[\u003ctemplate_filename\u003e.txt]\n```\n\n* onexlsx - exports a single Excel sheet containing matching information\n```\nonexlsx:\u003cfilename\u003e.xlsx\n```\n\n* clique - exports a file containing all found cliques, to be used with the clique matchmaker\n```\nclique:\u003cfilename\u003e.txt:[\u003cheader_filename\u003e.txt]:[\u003ctemplate_filename.txt]\n```\n\n* graph - exports a graphical representation of the match graph, supports any export formats supported by [GraphViz](https://www.graphviz.org/)\n```\ngraph:\u003cfilename\u003e.\u003cpng, dot, ...\u003e\n```\n\n## Matchmakers\n\n* **simple:** Simple I liked you, you liked me matchmaking\n* **clique:** Finds cliques of people liking each other\n\n## Run on your Server\n\nThe application can be started in server mode with the optional command line argument `-s`.\nHowever, please be aware that this starts a development server which is not recommended\nto be used for production.\n\nIf you want to run the application on your webserver please refer to \nthe [WSGI Guide for Flask.](http://flask.pocoo.org/docs/1.0/deploying/mod_wsgi/) or \nuse [gunicorn](https://gunicorn.org/).\n\nFor example:\n```bash\npip3 install gunicorn --user\ngunicorn -w 4 wsgi:application\n```\n\nUse your Apache or other webservers `.htaccess` to forward the port.\n\n### Detailed instructions\n\nThe following instructions were tested on a server with root access.\n\nIf you are running these steps in a production environment, make sure you have a back-up in place. I'm not responsible for any damages or losses.\n\nIf you have a webmaster, let your webmaster do the job.\n\nEzyatev created an alternative [guide for CentOS 7.6 with Apache server](https://gist.github.com/ezyatev/4f8be8618e610d0413883d33278bc6fa).\n\n#### Ensure Python and pip are installed\n\n1. Open a root terminal on your server\n2. Check if Python is installed\n\n```bash\nwhich python\n```\n\nShould return something along the lines of\n\n```\n/usr/bin/python\n```\n\nIf not please refer to your web hosts manual for installing Python.\n\n3. Check if pip is installed\n\n```bash\nwhich pip\n```\n\nShould return \n\n```\n/usr/bin/pip\n```\n\nIf not you can install pip with the `get-pip.py` script.\n\n```bash\nwget https://bootstrap.pypa.io/get-pip.py\npython get-pip.py\nrm get-pip.py\n```\n\n4. Install the Python dependencies\n\n```bash\npip install gunicorn aenum flask\n```\n\n#### Set-up the Script\n\n1. Log in with your user account\n\nEither via the root shell `su - \u003cusername\u003e` or via your webhosts login shell.\n\n2. Download the speed-friending matcher\n\n```bash\ncd ~\nmdkir repos\ncd repos\ngit clone https://github.com/machinekoder/speed-friending-and-dating-matcher.git\n``\n\n3. Create a start script\n\n```bash\ncd ~\nmkdir scripts\ncd scripts\nnano start-speed-friending-matcher.sh\n```\n\n```\n\n#!/bin/bash\npgrep -x gunicorn\nif [ $? -ne 0 ]; then\ncd ~/repos/speed-friending-and-dating-matcher\ngunicorn -w 4 wsgi:application -b localhost:5000\nfi\n```\n\n```bash\nchmod +x start-speed-friending-matcher.sh\n```\n\n4. Set up crontab to start the script\n\n```bash\ncrontab -e\n```\n\nInsert\n\n```\n* * * * * ~/scripts/start-speed-friending-matcher.sh\n```\n\nNow wait one minute and your server should be up and running.\n\n\n#### Configure Apache\n\nUse the `.htaccess` of your website to create a `RewriteRule` to the running `gunicorn` instance.\n\nIn this example we place the speed-friending script on the route `/script/*`, every other route is redirected to `/index.php`.\n\n```.htaccess\n\u003cIfModule mod_rewrite.c\u003e\nRewriteEngine On\nRewriteBase /\nRewriteRule ^script/(.*)$ http://localhost:5000/$1 [P,L]\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteCond %{REQUEST_FILENAME} !-d\nRewriteRule ^.*$ /index.php [L]\n\u003c/IfModule\u003e\n```\n\n#### Stopping everything\n\nFirst, you need to remove the start script from crontab `crontab -e`.\n\nThen kill all running gunicorn instances `killall gunicorn`.\n\n\n## Extending the software\nYou can extend the software by adding new import and export plugins. Take a look the default plugins\n [csvimporter](./importer/csvimporter.py) and [todoexporter](./exporter/todoexporter.py) for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmachinekoder%2Fspeed-friending-and-dating-matcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmachinekoder%2Fspeed-friending-and-dating-matcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmachinekoder%2Fspeed-friending-and-dating-matcher/lists"}