{"id":22348748,"url":"https://github.com/chilleco/web","last_synced_at":"2026-05-06T07:35:51.795Z","repository":{"id":196166656,"uuid":"694785446","full_name":"chilleco/web","owner":"chilleco","description":"Template Full Stack Web Application","archived":false,"fork":false,"pushed_at":"2025-01-07T01:01:46.000Z","size":531,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-01-31T12:29:58.778Z","etag":null,"topics":["full-stack","js","python","template","web","webapp"],"latest_commit_sha":null,"homepage":"https://web.chill.services","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/chilleco.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":"2023-09-21T17:29:19.000Z","updated_at":"2025-01-07T01:01:50.000Z","dependencies_parsed_at":"2023-09-22T04:43:55.004Z","dependency_job_id":"e5c0c9a2-3807-42ae-8641-e4e84aa91647","html_url":"https://github.com/chilleco/web","commit_stats":null,"previous_names":["chilleco/web"],"tags_count":0,"template":true,"template_full_name":"kosyachniy/web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chilleco%2Fweb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chilleco%2Fweb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chilleco%2Fweb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chilleco%2Fweb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chilleco","download_url":"https://codeload.github.com/chilleco/web/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245641437,"owners_count":20648644,"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":["full-stack","js","python","template","web","webapp"],"created_at":"2024-12-04T11:06:22.760Z","updated_at":"2026-05-06T07:35:51.790Z","avatar_url":"https://github.com/chilleco.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Template Web App\nModern full-stack web application with Python FastAPI backend, Next.js frontend, Telegram bot, and Telegram / VK / MAX Mini App support. Built with Docker containers and featuring multilingual support, and production-ready flow.\n\n## Background tasks (Taskiq)\n- Worker: `uv run taskiq worker tasks.broker:broker tasks.registry`\n- Scheduler: `uv run taskiq scheduler tasks.scheduler:scheduler tasks.registry`\n- Fixed-delay periodic jobs (cycle after finish): trigger once, e.g. `await run_periodic.kiq(\"cache_categories\")`\n\n## Observability\n- Sentry (API/TG): set `SENTRY_DSN` (optional: `SENTRY_TRACES_SAMPLE_RATE`, `SENTRY_PROFILES_SAMPLE_RATE`, `SENTRY_SEND_DEFAULT_PII`).\n- Sentry (Web): set `NEXT_PUBLIC_SENTRY_DSN` (and optionally `NEXT_PUBLIC_SENTRY_RELEASE`, `NEXT_PUBLIC_SENTRY_TRACES_SAMPLE_RATE`, `NEXT_PUBLIC_SENTRY_PROFILES_SAMPLE_RATE`).\n- Logging (Swarm): containers log JSON to stdout/stderr only (no files). Required fields: `service`, `env`, `version`, `level`, `trace_id`/`request_id`, `msg`, `error.stack` (if present). Use labels only for low-cardinality values (service, stack, env, node, level); keep `request_id`, `user_id`, `ip`, `url` in JSON fields.\n- API/TG logging path is unified via Loguru: the same log records feed JSON stdout (Alloy -\u003e Loki -\u003e Grafana), errors/critical events to Sentry, and Telegram alerts when `silent=False` (default for `log.important(...)`).\n\n## Run\n[Before starting, you can learn how to configure the server →](https://github.com/kosyachniy/dev/blob/main/server/SERVER.md)\n\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003elocal\u003c/th\u003e\n            \u003cth\u003eprod\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd valign=\"top\"\u003e\n                1. Configure \u003ccode\u003e .env \u003c/code\u003e from \u003ccode\u003e .env.example \u003c/code\u003e and add:\n                \u003cpre\u003e\n# Type\n# local / test / dev / pre / prod\nENV=local\u003cbr /\u003e\n\n\\# Links\nPROTOCOL=http\nEXTERNAL_HOST=localhost\nEXTERNAL_PORT=80\nDATA_PATH=./data\n                \u003c/pre\u003e\n            \u003c/td\u003e\n            \u003ctd valign=\"top\"\u003e\n                1. Configure CI/CD variables/secrets (GitHub Actions vars+secrets or GitLab CI/CD variables).\n                Fill all keys from \u003ccode\u003e.env.example\u003c/code\u003e in CI variables/secrets.\n            \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\n                2. \u003ccode\u003e make up \u003c/code\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\n                2. \u003ccode\u003e make release \u003c/code\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\n                3. Open ` http://localhost/ `\n            \u003c/td\u003e\n            \u003ctd\u003e\n                3. Open ` https://web.chill.services/ ` (your link)\n            \u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\nUse `make down` to stop services.\n\n## Telegram bot (webhooks)\n- Service lives in `tg/` and runs a FastAPI webhook handler behind `/tg/`.\n- Required env: `TG_TOKEN` (bot token) and `TG` (public webhook URL like `https://host/tg/`).\n- Optional env: `TG_SECRET` (webhook secret header).\n- `/start` payload is treated as `utm` and forwarded to auth; the bot replies with a WebApp button to open the Mini App.\n- Bot message localization lives in `tg/messages/*.json` (en/ru/zh/es/ar).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchilleco%2Fweb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchilleco%2Fweb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchilleco%2Fweb/lists"}