{"id":31923032,"url":"https://github.com/rocketchat/workshop.apps.development","last_synced_at":"2025-10-13T23:43:33.317Z","repository":{"id":277135175,"uuid":"931402346","full_name":"RocketChat/Workshop.Apps.Development","owner":"RocketChat","description":"Resources for Apps Development Workshop","archived":false,"fork":false,"pushed_at":"2025-06-10T11:46:17.000Z","size":182,"stargazers_count":9,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-29T01:40:00.385Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RocketChat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2025-02-12T08:08:33.000Z","updated_at":"2025-04-04T03:36:36.000Z","dependencies_parsed_at":"2025-02-12T10:48:03.488Z","dependency_job_id":"847a8464-4a31-4026-92eb-4648aff9ba69","html_url":"https://github.com/RocketChat/Workshop.Apps.Development","commit_stats":null,"previous_names":["rocketchat/workshop.apps.development"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RocketChat/Workshop.Apps.Development","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2FWorkshop.Apps.Development","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2FWorkshop.Apps.Development/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2FWorkshop.Apps.Development/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2FWorkshop.Apps.Development/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RocketChat","download_url":"https://codeload.github.com/RocketChat/Workshop.Apps.Development/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2FWorkshop.Apps.Development/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017232,"owners_count":26086016,"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-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":[],"created_at":"2025-10-13T23:43:30.821Z","updated_at":"2025-10-13T23:43:33.306Z","avatar_url":"https://github.com/RocketChat.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Workshop.Apps.Development\nGuide to get started with Rocket.Chat Apps Development Workshop.\n\n## Getting Started\n\n### Requirements\n- Node.js v20.18.1\n- Unix-based OS (Linux, macOS, WSL2)\n\n### Pre-requisites\n\n1. Join the Workshop server workspace shared in the workshop room.\n2. Join the room `#challengechat` in the workshop server.\n\u003e **Hint**: Find the room under the **Directory** tab in the left sidebar.\n3. Note down the server URL and your credentials (username and password) for the workshop server.\n\n## Part 1: Deploying Your First Rocket.Chat App\nIn this part, you'll learn how to deploy a summarization app and implement a slash command.\n\n#### 1. Install the Rocket.Chat Apps CLI\nInstall `rc-apps` globally:\n\n```bash\nnpm install -g @rocket.chat/apps-cli\n```\n\nVerify the installation:\n\n```bash\nrc-apps -v\n```\n\nYou should see the CLI version information:\n\n```bash\n@rocket.chat/apps-cli/1.12.0 darwin-arm64 node-v20.18.1\n```\n\n\u003e **Note:** The platform information (e.g., \"darwin-arm64\") will differ depending on your operating system.\n\n#### 2. Clone the repository\n\n```bash\ngit clone https://github.com/RocketChat/Workshop.Apps.Development.git\n```\n\n#### 3. Navigate to the app directory\n\n```bash\ncd Workshop.Apps.Development/app \n```\n\n#### 4. Personalize your app\nModify the following files:\n\n- In the `app.json` file:\n  - Change `nameSlug` to a unique value (e.g., `ai-chat-summarizer-\u003cyourname\u003e`)\n  - Generate a new UUID at [uuidgenerator.net](https://www.uuidgenerator.net/version4) for the `id` field\n    - **Important:** Do NOT use `0034268f-e49a-4113-be51-4a5ca77aeeb1`\n  - Update the `author` field with your name\n\n- Replace the `icon.png` file:\n  1. Delete the existing icon\n  2. Create a new icon (recommend using AI image generation)\n  3. You can use [Pollinations.AI](https://image.pollinations.ai/prompt/YOUR_INITIAL_avatar) with your initial\n  4. Save as `icon.png` (keep file size small)\n\n#### 5. Customize your command\nOpen `/commands/SummarizeCommand.ts` and change the `command` field to a unique name (e.g., `\u003cyourname\u003e-chat-summary`).\n\n#### 6. Install dependencies\n\n```bash\nnpm install\n```\n\n#### 7. Build your app\n\n```bash\nrc-apps package\n```\n\n#### 8. Update the LLM API endpoint\nOpen the file [`/settings/settings.ts`](https://github.com/RocketChat/Workshop.Apps.Development/blob/main/app/settings/settings.ts) and modify the L12 key value and package value to `[llama3-8b.local:1234](http://llama3-8b.local:1234)`.\n\n\u003e **Note:** The API call is made to `http://llama3-8b.local:1234/v1/chat/completions` so `llama3-8b.local` is the hostname and `1234` the port.\n\n#### 9. Configure and deploy\nEdit the `.rcappsconfig` file with your credentials:\n\n```json\n{\n  \"url\": \"https://workspace_server_url\",\n  \"username\": \"your_username\",\n  \"password\": \"your_password\"\n}\n```\n\n\u003e **Important:** Use the server URL shared in the workshop room along with your personal credentials.\n\nDeploy your app:\n\n```bash\nrc-apps deploy\n```\n\n#### 10. Test your slash command\nType `/\u003cyourname\u003e-chat-summary` in the thread on the `#challengechat` channel and press Enter.\n\n## Part 2: The App\n\n### How does the app works?\n![image](https://github.com/user-attachments/assets/c662a7f7-7802-4ab7-8db5-dd5f4458e599)\n\nThe app works in a simple way. It only does three steps:\n1. Read the messages\n2. Summarize the messages (main feature)\n3. Execute the add-ons\n\n\n### What is exactly add-ons?\n\u003cdiv style=\"text-align: center\"\u003e\n\u003cimg src=\"https://github.com/user-attachments/assets/972a9b70-276b-4a81-9859-4f2c0e374c4f\" width=\"500\"\u003e\n\u003c/div\u003e\n\nIn the `Marketplace`, you will be able to see these settings. For every add-ons you check, the **app will create corresponding prompt and execute an LLM call**. In this case, instead of just summarizing the message (step 2), the app will also output what are the summaries **for each participant.**\n\n### Enabling the add-ons\n\n1. Navigate to **Administration** (kebab menu) → **Marketplace**\n2. Select the **Private Apps** tab\n3. Find and click on your deployed app\n4. Go to the **Settings** tab\n5. In the **Summary add-ons** section, select any one add-on\n6. Click **Save**\n7. Test your command again with `/\u003cyourname\u003e-chat-summary` in the `#challengechat` channels' thread \n\u003e **For curious minds ✨**, the prompt for the add-on can be found in the [`/constants/prompt.ts`](https://github.com/RocketChat/Workshop.Apps.Development/blob/main/app/constants/prompts.ts) file. You can modify the prompt to suit your needs.\n8. Verify that you see the chat summary plus the selected add-on functionality\n9. Take a screenshot of your successful result\n10. Share your screenshot in the workshop channel along with your email address to receive an invitation to the Workshop Meetup\n\n### Where is the add-on code?\n\n\u003cdiv style=\"text-align: center\"\u003e\n\u003cimg src=\"https://github.com/user-attachments/assets/c5b97ee5-9272-44a9-abea-6b048769b7ba\" width=\"500\"\u003e\n\u003c/div\u003e\n\nBasically, this code only do\n```\nif (\"assigned-tasks\" is checked) {\n    // 1. Create assigned task prompt\n    // 2. Execute LLM call\n    // 3. Show message to user\n}\n```\n\nSo, if the question is \"can I add my own add-ons\"? Obviously yes, you can just \n1. Add another block of if statement,\n2. Create corresponding prompt, and \n3. Execute the LLM call (same code everywhere)\n\n**HOWEVER !!** Don't forget to add your add-ons in the settings here to make it appear in the settings.\n\n\u003cdiv style=\"text-align: center\"\u003e\n\u003cimg src=\"https://github.com/user-attachments/assets/65afde95-a40a-48d6-9bd0-60d6c1936732\" width=\"500\"\u003e\n\u003c/div\u003e\n\n## Next Steps\nTo deepen your understanding, explore the [Rocket.Chat Apps documentation](https://developer.rocket.chat/docs/rocketchat-apps-engine) and most importantly, **have fun!** understading the App code you just deployed and how to improve it.\n\n## Resources\n- [Rocket.Chat Apps Documentation](https://developer.rocket.chat/docs/rocketchat-apps-engine)\n- [Prompt Engineering](https://www.promptingguide.ai/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocketchat%2Fworkshop.apps.development","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frocketchat%2Fworkshop.apps.development","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocketchat%2Fworkshop.apps.development/lists"}