{"id":42561970,"url":"https://github.com/subshell/group-challenge","last_synced_at":"2026-01-28T20:32:02.872Z","repository":{"id":39706988,"uuid":"341469762","full_name":"subshell/group-challenge","owner":"subshell","description":"upload and rate photos together 📸","archived":false,"fork":false,"pushed_at":"2024-12-30T13:00:09.000Z","size":2425,"stargazers_count":4,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-12-28T18:47:55.461Z","etag":null,"topics":["party"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/subshell.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}},"created_at":"2021-02-23T07:42:10.000Z","updated_at":"2025-08-15T12:25:14.000Z","dependencies_parsed_at":"2024-01-03T14:44:59.714Z","dependency_job_id":null,"html_url":"https://github.com/subshell/group-challenge","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/subshell/group-challenge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subshell%2Fgroup-challenge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subshell%2Fgroup-challenge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subshell%2Fgroup-challenge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subshell%2Fgroup-challenge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/subshell","download_url":"https://codeload.github.com/subshell/group-challenge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subshell%2Fgroup-challenge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28850938,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T15:15:36.453Z","status":"ssl_error","status_checked_at":"2026-01-28T15:15:13.020Z","response_time":57,"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":["party"],"created_at":"2026-01-28T20:32:02.206Z","updated_at":"2026-01-28T20:32:02.858Z","avatar_url":"https://github.com/subshell.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Group Challenge\n\n[![Docker](https://github.com/subshell/group-challenge/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/subshell/group-challenge/actions/workflows/docker-publish.yml)\n\nAn easy-to-use website to create submission-based challenges that will be evaluated together in real-time.\nAny user is allowed to create challenges with a fixed start and end date while others join and contribute.\nCurrently supported challenges are:\n\n- 📸 **Photo Challenge**\n\n![Start Screen](.github/start_screen.png)\n\n## Configuration\n\nThe configuration is usally located under `/app/config.yaml`.\nWe also support configuration via environment variabels with a `GC_` prefix:\n\n- `GC_SERVER_PORT`\n- `GC_DB_USER`\n- `GC_DB_PASSWORD`\n\n**All available configuration options:**\n\n```yaml\nserver:\n  port: 8080\n  staticFilesDir: \"./static\"\ndb:\n  user: postgres\n  password: postgres # prefered method: use env variable GC_DB_PASSWORD\n  database: group_challenge\n  host: \"localhost:5432\"\n  poolSize: 50\n  logQueries: false\nchallenges:\n  liveParty:\n    defaultTimePerSubmissionSeconds: 45\nimgProxy:\n  enabled: true\n  url: \"http://localhost:8081\"\n  localFilePath: \"/tmp/group-challenge-cache\"\n  thumbnailQuality: 90\n  maxThumbnailWidth: 420\n  maxThumbnailHeight: 420\n  fullSizeQuality: 75\n  maxFullWidth: 1280\n  maxFullHeight: 1280\n```\n\n## Local development\n\nThis project includes pre-configured configuration files to launch the api, frontend, and postgres in VS Code.\nAlternatively you can start all services with the following commands:\n\n1. **Postgres:** start a postgres db at port `5432`.\n\n```sh\n  mkdir /tmp/group-challenge-cache\n  docker compose up\n```\n\n2. **API:** start the go api server at port `8080`.\n\n```sh\n  cd api \u0026\u0026 go mod tidy \u0026\u0026 go run main.go\n```\n\n3. **Frontend:** start the frontend at port `3000`.\n\n```sh\n  cd frontend \u0026\u0026 npm i \u0026\u0026 npm run dev\n```\n\n## Container\n\nFor official container images visit https://github.com/subshell/group-challenge/pkgs/container/group-challenge\n\n### Building the container\n\nThe container contains the frontend as well as the backend.\n\n```sh\n  docker build . --tag group-challenge\n```\n\n### Running the container\n\nBefore you can run the `group-challenge` container, make sure that postgresql and optionally imgProxy is running.\nYou can start both applications with `mkdir /tmp/group-challenge-cache \u0026\u0026 docker-compose up`.\n\nBy default you can open your browser at http://localhost:8080/ to see the running group-challenge app.\n\n#### Your localy created container\n\n```sh\n  docker run --network=host group-challenge\n```\n\n#### Official container\n\n```sh\n  docker run --network=host ghcr.io/subshell/group-challenge:latest\n```\n\n## Kubernetes support\n\nThe helm chart is available under https://subshell.github.io/helm-charts-lab/\n\n```sh\nhelm repo add subshell-public https://subshell.github.io/helm-charts-lab\nhelm install -f gc-values.yaml group-challenge subshell-public/group-challenge\n```\n\nThis chart uses the [Bitnami Postgres Helm Chart](https://github.com/bitnami/charts/tree/master/bitnami/postgresql) as a dependency. Configure it with `postgresql` in your `values.yaml` file.\nYou definitely want to change the password using `global.postgresql.postgresqlPassword` or a secret. You have to install the `pgcrypto` extension manually.\n\n2. Open the browser at `http://localhost:8080`.\n\n## Image processing\n\nTo reduce the size of all uploaded images, we support [imgProxy](https://docs.imgproxy.net). See `imgProxy` for its configuration.\n\n---\n\nTake a look at this project from the [subshell](https://subshell.com) team. We make [Sophora](https://subshell.com/sophora/): a content management software for content creation, curation, and distribution. [Join our team!](https://subshell.com/jobs/) | [Imprint](https://subshell.com/about/imprint/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsubshell%2Fgroup-challenge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsubshell%2Fgroup-challenge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsubshell%2Fgroup-challenge/lists"}