{"id":15192102,"url":"https://github.com/needs/teerank-rework","last_synced_at":"2026-02-06T14:20:50.166Z","repository":{"id":78455366,"uuid":"448605738","full_name":"needs/teerank-rework","owner":"needs","description":"A simple ranking system for teeworlds","archived":false,"fork":false,"pushed_at":"2023-12-31T12:30:14.000Z","size":979,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-15T01:55:36.220Z","etag":null,"topics":["docker","dockercompose","flask","pytest","python","redis","teeworlds"],"latest_commit_sha":null,"homepage":"","language":"Python","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/needs.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}},"created_at":"2022-01-16T16:14:16.000Z","updated_at":"2023-12-31T13:33:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"fc55ad0e-fe42-41db-a377-524bb7ac56a3","html_url":"https://github.com/needs/teerank-rework","commit_stats":null,"previous_names":["needs/teerank-rework"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/needs/teerank-rework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/needs%2Fteerank-rework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/needs%2Fteerank-rework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/needs%2Fteerank-rework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/needs%2Fteerank-rework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/needs","download_url":"https://codeload.github.com/needs/teerank-rework/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/needs%2Fteerank-rework/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29164848,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T12:44:37.655Z","status":"ssl_error","status_checked_at":"2026-02-06T12:44:13.991Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["docker","dockercompose","flask","pytest","python","redis","teeworlds"],"created_at":"2024-09-27T21:05:01.579Z","updated_at":"2026-02-06T14:20:50.149Z","avatar_url":"https://github.com/needs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Teerank.io\n\nTeerank is a simple and fast ranking system for Teeworlds. You can test the\nlastest stable version at teerank.io.\n\n# Run\n\n```bash\n# Production\n$ docker-compose up --build\n\n# Run tests loop\n$ docker-compose -f docker-compose-test.yml -p teerank-dev up --build\n\n# Development server at localhost:80\n$ docker-compose -f docker-compose-development.yml -p teerank-test up --build\n```\n\nI usually launch tests and the development server on two different shells.\nWhen a source file is changed, tests will be run again and the development\nserver will be relaunch with the new version.  Hence once the containers are\nlaunched there is no need to run them again: just refresh your page in the\nbrowser and check test logs and that's it.\n\n# Legacy\n\nThis project is a reboot of teerank.com.  The former was written in C and used\nSQLite.  While good, this technologies are arguably not the best tools in the\nbox for making a ranking website.\n\nThis project instead relies on Python, Redis and Flask.  Performance is not\nreally a concern so Python is a good language of choice, as it improves\ndevelopement speed and is accessible to more people.  Redis is handy because\nit provides a way to sort our players directly while SQLite doesn't.\n\nFinally, the old teerank frontend was a C program compiled into a CGI which\nthen was plugged into Nginx.  It worked, but it was difficult to setup.  We\nchoose to use Flask, because it fit our needs and Flask deals with all the\nnasty parts under the hood.\n\nAlso the domain teerank.com expired by accident, and was immediately\ncyber-squatted.  They refused my buying offers, so at some point I stopped\nthe server and let the project die.  Now the domain is available again but\ndue to the premium system for .com demains, it costs more than a thousant\ndollars, which is not something I want ot pay for a pet project.  That's why\nteerank is now available at teerank.io.\n\n# Goals\n\n  - Reference every servers and players accross all teeworlds versions;\n  - Provide a ranking system for every mods;\n  - Gather historical data on players, servers, maps, clans and more;\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneeds%2Fteerank-rework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneeds%2Fteerank-rework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneeds%2Fteerank-rework/lists"}