{"id":19661974,"url":"https://github.com/centrifugal/grand-chat-tutorial","last_synced_at":"2025-07-21T13:33:33.094Z","repository":{"id":214344920,"uuid":"728141499","full_name":"centrifugal/grand-chat-tutorial","owner":"centrifugal","description":"Source code for Centrifugo grand tutorial – Building WebSocket chat/messenger application from scratch. See the tutorial here - https://centrifugal.dev/docs/tutorial/intro","archived":false,"fork":false,"pushed_at":"2025-04-17T16:44:16.000Z","size":685,"stargazers_count":37,"open_issues_count":1,"forks_count":8,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-28T21:43:00.307Z","etag":null,"topics":["chat","django","instant-messaging","messenger","react","scalability","tutorial","websocket"],"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/centrifugal.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,"zenodo":null}},"created_at":"2023-12-06T10:13:26.000Z","updated_at":"2025-04-24T14:53:06.000Z","dependencies_parsed_at":"2023-12-27T15:26:51.232Z","dependency_job_id":"de536467-581d-4f9b-b52e-6702848e8244","html_url":"https://github.com/centrifugal/grand-chat-tutorial","commit_stats":null,"previous_names":["centrifugal/grand-chat-tutorial"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/centrifugal/grand-chat-tutorial","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centrifugal%2Fgrand-chat-tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centrifugal%2Fgrand-chat-tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centrifugal%2Fgrand-chat-tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centrifugal%2Fgrand-chat-tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/centrifugal","download_url":"https://codeload.github.com/centrifugal/grand-chat-tutorial/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centrifugal%2Fgrand-chat-tutorial/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266312028,"owners_count":23909743,"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-07-21T11:47:31.412Z","response_time":64,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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":["chat","django","instant-messaging","messenger","react","scalability","tutorial","websocket"],"created_at":"2024-11-11T16:09:10.459Z","updated_at":"2025-07-21T13:33:33.061Z","avatar_url":"https://github.com/centrifugal.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Django + React + Centrifugo chat (instant messenger) application \n\nThis is a source code for [Centrifugo Chat/Messenger Tutorial](https://centrifugal.dev/docs/tutorial/intro).\n\n\u003cimg src=\"https://centrifugal.dev/img/grand-chat-tutorial-tech.png?v=1\" /\u003e\n\n## Running locally\n\nYou need Docker with Docker Compose. First, run the app:\n\n```sh\ndocker compose up\n```\n\nAfter containers started for the first time, from another terminal window (you must be in the repo root) create admin user (or better two since you want to try chatting, right?):\n\n```sh\ndocker compose exec backend python manage.py createsuperuser\n```\n\nThen go to [http://localhost:9000/admin](http://localhost:9000/admin), use admin user credentials to login and create several rooms. Alternatively, you can open Django shell:\n\n```sh\ndocker compose exec backend python manage.py shell\n```\n\nAnd then inside Django shell:\n\n```python\nfrom app.utils import setup_dev\nsetup_dev()\n```\n\nRunning `setup_dev` function will create 100k users and then 4 rooms with different number of members (100, 1k, 10k, 100k).\n\nThen go to [http://localhost:9000](http://localhost:9000) and enjoy the working app! Login using second user (from incognito tab to not logout the first one session, or simply use different browser/device) to see the real-time in action.\n\n![demo](grandchat.png?raw=true \"Image of app\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcentrifugal%2Fgrand-chat-tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcentrifugal%2Fgrand-chat-tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcentrifugal%2Fgrand-chat-tutorial/lists"}