{"id":13406103,"url":"https://github.com/flathub-infra/website","last_synced_at":"2026-04-24T12:35:21.001Z","repository":{"id":36959596,"uuid":"473937582","full_name":"flathub-infra/website","owner":"flathub-infra","description":"Monorepo with website and API","archived":false,"fork":false,"pushed_at":"2024-10-29T08:26:27.000Z","size":33429,"stargazers_count":224,"open_issues_count":85,"forks_count":88,"subscribers_count":13,"default_branch":"main","last_synced_at":"2024-10-29T09:47:49.659Z","etag":null,"topics":["flathub","flatpak","hacktoberfest","python","react","website"],"latest_commit_sha":null,"homepage":"https://flathub.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flathub-infra.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":"2022-03-25T09:00:32.000Z","updated_at":"2024-10-29T08:26:30.000Z","dependencies_parsed_at":"2024-11-05T12:45:52.548Z","dependency_job_id":null,"html_url":"https://github.com/flathub-infra/website","commit_stats":null,"previous_names":["flathub-infra/website","flathub/website"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flathub-infra%2Fwebsite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flathub-infra%2Fwebsite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flathub-infra%2Fwebsite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flathub-infra%2Fwebsite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flathub-infra","download_url":"https://codeload.github.com/flathub-infra/website/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243562193,"owners_count":20311236,"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":["flathub","flatpak","hacktoberfest","python","react","website"],"created_at":"2024-07-30T19:02:21.031Z","updated_at":"2026-04-24T12:35:20.996Z","avatar_url":"https://github.com/flathub-infra.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"[![Backend CI](https://github.com/flathub-infra/website/actions/workflows/backend_ci.yml/badge.svg)](https://github.com/flathub-infra/website/actions/workflows/backend_ci.yml)\n[![Frontend CI](https://github.com/flathub-infra/website/actions/workflows/frontend_ci.yml/badge.svg)](https://github.com/flathub-infra/website/actions/workflows/frontend_ci.yml)\n[![Translation status](https://hosted.weblate.org/widgets/flathub/-/frontend/svg-badge.svg)](https://hosted.weblate.org/engage/flathub/)\n\n# flathub.org\n\nThis is the source code for the website, both backend and frontend. That's running on https://flathub.org.\n\n## Code contribution\n\nFirst of all thanks for considering contributing to this project!\n\nPull requests are welcome. Please, create an issue first explaining what you want to do and how.\n\nIf you want to contribute translations, please check out the instructions below.\n\n### Overview\n\nThis overview is supposed to give you a quick grasp, of what we have and how it works. There are subtle differences between local/prod - this is an approximation.\n\n```mermaid\nblock-beta\n    columns 3\n\n    block:external:1\n        columns 1\n\n        dl.flathub.org:1\n\n        hub.flathub.org/stats:1\n    end\n\n    block:group2\n        columns 3\n\n        fastly:3\n\n        down4\u003c[\" \"]\u003e(down):3\n\n        nginx:3\n\n        down1\u003c[\" \"]\u003e(down):3\n\n        frontend:3\n\n        down2\u003c[\" \"]\u003e(down):3\n\n        hub.flathub.org/stats--\u003ebackend\n        dl.flathub.org--\u003ebackend worker backend_node\n\n        down3\u003c[\" \"]\u003e(down):3\n\n        db1[(\"postgres\")] db2[(\"redis\")] db3[(\"meilisearch\")]\n\n    end\n\n    block:external2:1\n        columns 1\n\n        smtp:1\n\n        backend_node--\u003esmtp\n    end\n\n```\n\n### Development\n\nYou'll need `git`, `pnpm`, `docker` and `docker-compose-plugin`.\n\nGo to the folder where you manage your projects and checkout this project.\n\nThen start the backend:\n\n```sh\ncd backend\ndocker compose up\n```\n\nYou might need to use `--build` to rebuild the images, when dependencies change.\n\nUse another terminal session to run the following or use your browser to go to https://localhost:8000/docs and use the UI to run the `/update` endpoint.\nThis will populate the database with the latest data from Flathub.\n\n```sh\ncurl -X POST localhost:8000/update\n```\n\nThen open a terminal and go to the frontend folder.\nIf it's the first time you run it, run\n\n```sh\npnpm install\n```\n\nThen you should be able to start the dev server and see changes to the code:\n\n```sh\npnpm dev\n```\n\n### Generating api client\n\nWe're generating the api client from the openapi spec. To do so, make sure the backend is running and then run:\n\n```sh\npnpm openapi-codegen\n```\n\n### Storybook\n\nYou can also start the storybook via:\n\n```sh\npnpm storybook\n```\n\nOr [view the current state of our storybook](https://main--6676acc57f6288e909a4e184.chromatic.com/)\n\n## More backend instructions\n\nYou can find more backend instructions in the README in the backend folder.\n\n## Translations\n\nWe're using [Weblate](https://hosted.weblate.org/engage/flathub/) to translate the UI. So feel free, to contribute translations over there.\n\n\u003ca href=\"https://hosted.weblate.org/engage/flathub/\"\u003e\n\u003cimg src=\"https://hosted.weblate.org/widgets/flathub/-/glossary/multi-auto.svg\" alt=\"Translation status\" /\u003e\n\u003c/a\u003e\n\nThere are some translations, that get reused from [Appstreams Translations](https://hosted.weblate.org/projects/appstream/) for e.g. age ratings.\n\n## Stripe payment testing\n\nIn both staging and development environments, Stripe is running in test mode (all data is fake).\nTo test payment, card details can be used from https://stripe.com/docs/testing.\n\n## Thanks\n\n\u003ca href=\"https://www.chromatic.com/\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/321738/84662277-e3db4f80-af1b-11ea-88f5-91d67a5e59f6.png\" width=\"153\" height=\"30\" alt=\"Chromatic\" /\u003e\u003c/a\u003e\n\nThanks to [Chromatic](https://www.chromatic.com/) for providing the visual testing platform that helps us review UI changes and catch visual regressions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflathub-infra%2Fwebsite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflathub-infra%2Fwebsite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflathub-infra%2Fwebsite/lists"}