{"id":13630072,"url":"https://github.com/joincomet/comet","last_synced_at":"2025-04-17T13:31:28.418Z","repository":{"id":45568170,"uuid":"290625948","full_name":"joincomet/comet","owner":"joincomet","description":"All-in-one chat and forums for communities.","archived":false,"fork":false,"pushed_at":"2023-01-05T21:03:50.000Z","size":570174,"stargazers_count":280,"open_issues_count":60,"forks_count":38,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-11-08T21:38:25.723Z","etag":null,"topics":["comet","css","digitalocean","discord","electron","forums","graphql","html","javascript","mikro-orm","nodejs","react","reactjs","reddit","tailwindcss","typegraphql","typescript","urql","vite","yarn-workspaces"],"latest_commit_sha":null,"homepage":"https://joincomet.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joincomet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-08-26T23:24:52.000Z","updated_at":"2024-10-26T21:41:08.000Z","dependencies_parsed_at":"2023-02-04T16:31:52.083Z","dependency_job_id":null,"html_url":"https://github.com/joincomet/comet","commit_stats":null,"previous_names":[],"tags_count":148,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joincomet%2Fcomet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joincomet%2Fcomet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joincomet%2Fcomet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joincomet%2Fcomet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joincomet","download_url":"https://codeload.github.com/joincomet/comet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249344793,"owners_count":21254736,"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":["comet","css","digitalocean","discord","electron","forums","graphql","html","javascript","mikro-orm","nodejs","react","reactjs","reddit","tailwindcss","typegraphql","typescript","urql","vite","yarn-workspaces"],"created_at":"2024-08-01T22:01:29.121Z","updated_at":"2025-04-17T13:31:26.063Z","avatar_url":"https://github.com/joincomet.png","language":"JavaScript","readme":"# Comet ([joincomet.app](https://joincomet.app))\r\n\r\n![Screenshot](https://cdn.discordapp.com/attachments/824830925107101706/853725106647597116/unknown.png)\r\n\r\nAll-in-one chat and forums for communities.\r\n\r\nKnown active forks: https://github.com/gudfhr95/stelllar\r\n\r\n## Tech Stack\r\n\r\n### Frontend\r\n- [React.js](https://reactjs.org/)\r\n- [Electron](https://www.electronjs.org/)\r\n- [Tailwind CSS](https://tailwindcss.com/)\r\n- [Vite](https://vitejs.dev/guide/introduction.html)\r\n- [Apollo GraphQL Client](https://github.com/apollographql/apollo-client)\r\n- [GraphQL Code Generator](https://www.graphql-code-generator.com/)\r\n\r\n### Backend\r\n- [Node.js](https://nodejs.org/en/)\r\n- [TypeScript](https://www.typescriptlang.org/)\r\n- [Apollo Server Express](https://github.com/apollographql/apollo-server/tree/main/packages/apollo-server-express)\r\n- [graphql-ws](https://github.com/enisdenjo/graphql-ws)\r\n- [GraphQL Live Query](https://github.com/n1ru4l/graphql-live-query)\r\n- [TypeGraphQL](https://typegraphql.com/)\r\n- [MikroORM](https://mikro-orm.io/)\r\n- [PostgreSQL](https://www.postgresql.org/)\r\n- [Redis](https://redis.io/)\r\n\r\n[Join our Discord server](https://discord.gg/NPCMGSm) (mostly inactive)\r\n\r\n\r\n## Development Instructions\r\n\r\n### Frontend\r\n#### Development\r\nStart dev server:\r\n- `yarn run dev:web`\r\n\r\n#### Production\r\nThe frontend is a React app, and can be deployed in many ways. joincomet.app is using GitHub Pages in this repo, but\r\nanother good option is [Cloudflare Pages](https://pages.cloudflare.com/)\r\n\r\nBuild frontend:\r\n- `yarn run build:web`\r\n\r\nEnvironment variables:\r\n- `VITE_API_DOMAIN` (domain server is running on i.e. `api.joincomet.app`)\r\n\r\n### Backend\r\n\r\n#### Development\r\nStart dev server with below environment variables:\r\n- `yarn run dev:server`\r\n\r\nEnvironment variables:\r\n- `DATABASE_URL` (defaults to `postgresql://postgres:password@localhost:5432` if left blank)\r\n- `ACCESS_TOKEN_SECRET` (required, secret used for encrypting passwords)\r\n- `REDIS_URL` (optional, in-memory will be used if not provided)\r\n\r\nThe following environment variables are related to S3 file uploads and are required for file uploads to work. Comet has \r\n  only been tested with DigitalOcean Spaces, but may also work with AWS S3.\r\n- `MEDIA_DOMAIN` (domain media is hosted on i.e. `media.joincomet.app`)\r\n- `BUCKET` (name of bucket, DO Spaces requires this to be same as `MEDIA_DOMAIN` i.e. `media.joincomet.app`)\r\n- `AWS_ENDPOINT` (endpoint bucket is hosted on i.e. `nyc3.digitaloceanspaces.com`)\r\n- `AWS_ACCESS_KEY_ID` (access key ID provided by DO Spaces/AWS)\r\n- `AWS_SECRET_ACCESS_KEY` (secret access key provided by DO Spaces/AWS)\r\n\r\n#### Production\r\nA Docker image is available at [Docker Hub](https://hub.docker.com/repository/docker/joincomet/server). joincomet.\r\napp uses [DigitalOcean App Platform](https://www.digitalocean.com/products/app-platform/) to deploy the Docker image.\r\nRun the Docker image with the above environment variables.\r\n","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoincomet%2Fcomet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoincomet%2Fcomet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoincomet%2Fcomet/lists"}