{"id":26085216,"url":"https://github.com/semrush/app-center-sample-app","last_synced_at":"2025-10-05T03:41:04.967Z","repository":{"id":216309971,"uuid":"736734303","full_name":"semrush/app-center-sample-app","owner":"semrush","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-27T11:13:28.000Z","size":38,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-25T21:47:13.026Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/semrush.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-12-28T18:09:02.000Z","updated_at":"2024-11-27T11:13:32.000Z","dependencies_parsed_at":"2024-06-07T12:18:15.117Z","dependency_job_id":null,"html_url":"https://github.com/semrush/app-center-sample-app","commit_stats":null,"previous_names":["semrush/app-center-sample-app"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semrush%2Fapp-center-sample-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semrush%2Fapp-center-sample-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semrush%2Fapp-center-sample-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semrush%2Fapp-center-sample-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/semrush","download_url":"https://codeload.github.com/semrush/app-center-sample-app/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248505862,"owners_count":21115354,"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":[],"created_at":"2025-03-09T05:55:00.297Z","updated_at":"2025-10-05T03:40:59.907Z","avatar_url":"https://github.com/semrush.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sample app repository\n\nThis is a sample application to demonstrate the capabilities of the Semrush App Center API. \nIt was built on Python backend and React TypeScript frontend, \nbecause it's the most popular stack. You can use any other technologies—for example,\nvanilla JS.\n\n# Starting the application\n\n## Requirements\n\n*  Node.js version `20` or higher.\n*  Python version `3.11` or higher.\n*  Registered **test** app in Semrush App Center.\n   [Learn how to register ›](https://www.semrush.com/apps/docs/join-appcenter).\n\n## Step 1. Create a virtual environment\n\n```bash\npython3 -m venv .venv\n. .venv/bin/activate\n```\n\n## Step 2. Install Python requirements\n\n```bash\npip install -r requirements.txt\n```\n\n## Step 3. Install frontend requirements and build the frontend\n\n```bash\ncd frontend; npm install; npm run build\n```\n\n## Step 4. Run the application\n\n1.  Using your test application ID and secret, as a quick solution, replace the `SEMRUSH_APP_ID` and \n    `SEMRUSH_APP_SECRET` \"default\" field in [config.py](./config.py).\n    For a more secure solution, set them as environment variables. \n    This step is necessary to make JWT validation work properly. \n    Without this step, Semrush iframe will be creating JWTs signed with your app secret, \n    and this app will try to verify them using the incorrect app secret value.\n1.  Start the backend:\n    ```bash\n    python3 app.py\n    ```\n\nThe default backend port is `8080`, defined in [config.py](./config.py).\n\n## Step 5. Connect to your application from the Semrush iframe\n\n1. Ask the App Center Team to change your test app iframe URL in Semrush to `http://localhost:8080`.\n1. Open your application page in Semrush and see this app running in the iframe.\n\n# Development\n\n## Edit the frontend\n\nWhen editing the frontend, rebuild it after each edit:\n\n```bash\ncd frontend; npm run build\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemrush%2Fapp-center-sample-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsemrush%2Fapp-center-sample-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemrush%2Fapp-center-sample-app/lists"}