{"id":27219977,"url":"https://github.com/coder8080/usmile","last_synced_at":"2026-04-05T21:31:59.588Z","repository":{"id":282886003,"uuid":"949949944","full_name":"coder8080/usmile","owner":"coder8080","description":"Телеграм-бот для создания партнерских сертификатов","archived":false,"fork":false,"pushed_at":"2025-04-09T15:21:52.000Z","size":33012,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-03T19:12:32.638Z","etag":null,"topics":["aiogram3","docker","docker-compose","github-actions-ci-cd","peewee","peewee-async","postgres","psycopg3","pypy","python","redis","telegram","telegram-bot"],"latest_commit_sha":null,"homepage":"https://t.me/usmile_cert_bot","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/coder8080.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":"2025-03-17T11:53:31.000Z","updated_at":"2025-04-09T15:21:55.000Z","dependencies_parsed_at":"2025-03-17T13:45:09.401Z","dependency_job_id":"87f3ecdd-e8e6-461f-9e63-16d3ebb73459","html_url":"https://github.com/coder8080/usmile","commit_stats":null,"previous_names":["coder8080/usmile"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/coder8080/usmile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coder8080%2Fusmile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coder8080%2Fusmile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coder8080%2Fusmile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coder8080%2Fusmile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coder8080","download_url":"https://codeload.github.com/coder8080/usmile/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coder8080%2Fusmile/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31451437,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"ssl_error","status_checked_at":"2026-04-05T21:22:51.943Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["aiogram3","docker","docker-compose","github-actions-ci-cd","peewee","peewee-async","postgres","psycopg3","pypy","python","redis","telegram","telegram-bot"],"created_at":"2025-04-10T06:50:20.265Z","updated_at":"2026-04-05T21:31:59.522Z","avatar_url":"https://github.com/coder8080.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://usmileclinic.ru/\"\u003e\n    \u003cpicture\u003e\n        \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./media/site_logo_dark.png\"\u003e\n        \u003cimg alt=\"3x-ui\" src=\"./media/site_logo_light.png\" height=\"60\" align=\"right\"\u003e\n    \u003c/picture\u003e\n\u003c/a\u003e\n\n# 🦷 USMILE Telegram Bot\n\n\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://t.me/usmile_cert_bot\"\u003e\n        \u003cimg alt=\"telegram-bot\" src=\"./media/bot_logo_small.png\"\u003e\n    \u003c/a\u003e\n\n[![Telegram](https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge\u0026logo=telegram\u0026logoColor=white)](#)\n[![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge\u0026logo=python\u0026logoColor=ffdd54)](#)\n[![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge\u0026logo=docker\u0026logoColor=white)](#)\n[![Postgres](https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white)](#)\n[![Redis](https://img.shields.io/badge/redis-%23DD0031.svg?style=for-the-badge\u0026logo=redis\u0026logoColor=white)](#)\n\n\u003c/div\u003e\n\nТелеграм бот для создания партнерских сертификатов стоматологии usmile\n\n⭐️ Поставьте звездочку - это очень мотивирует)\n\n## Функции\n\n- Администраторы могут создавать особые ссылки для партнеров\n- Пройдя по ссылке, партнер пополняет свой баланс\n- Партнер может создавать сертификаты, используя свой баланс\n- Администраторы могут проверить статус сертификата по его номеру\n- Администраторы могут пометить сертификат как использованный\n\n## Техническая информация\n\n### Стек\n\n- [Python3](https://www.python.org/)\n- [Aiogram3](https://aiogram.dev/) - библиотека для создания телеграм-ботов\n- [Peewee](https://github.com/coleifer/peewee) - легковесная ORM\n- [Docker](https://www.docker.com/) - контейнеризация\n- [Docker Compose](https://docs.docker.com/compose/) - удобный запуск нескольких контейнеров\n- [PostgreSQL](https://www.postgresql.org/) - база данных\n- [Redis](https://redis.io/) - быстрое хранилище типа ключ-значение\n\n### Разработка\n\n#### Установка зависимостей\n\nЗависимости устанавливаются во время сборки Docker контейнера. Но чтобы в вашем редакторе кода работало автодополнение, рекомендуется также установить зависимости в виртуальную среду:\n\n```bash\npython3 -m venv .venv\nsource ./.venv/bin/activate\npip install -r requirements.txt\n```\n\n#### Запуск\n\n```bash\ndocker compose --profile dev up --build\n```\n\n- `--profile dev` - использует параметры docker для разработки\n- `up` - запускает проект\n- `--build` - пересобирает контейнеры\n\nПри внесении изменений в файлы на диске бот перепускается. Реализовано с помощью [volumes](https://docs.docker.com/engine/storage/volumes/) и [watchdog](https://pypi.org/project/watchdog/)\n\n#### Добавление новых пакетов\n\nВсе пакеты, использующиеся проектом (даже во время разработки) должны быть добавлены в `requirements.txt`\n\nКоманды ниже предполагают, чтовы уже [установили зависимости](#установка-зависимостей)\n\n```bash\npip install package # package - ваш пакет\npip freeze \u003e requirements.txt # обновляет requirements.txt\n```\n\n### Продакшен\n\n_Сборка и деплой автоматизированы с помощью [github-actions](https://github.com/coder8080/usmile/actions)_\n\n**Команда запуска**\n\n```bash\ndocker compose --profile prod up -d\n```\n\n- `--profile prod` - использует параметры docker для продакшена\n- `up` - запускает проект\n- `-d` - фоновый режим и запуск при загрузке системы\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoder8080%2Fusmile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoder8080%2Fusmile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoder8080%2Fusmile/lists"}