---
title: "Deploy TeamX - Appwrite"
description: "Deploy Team Collaboration with Appwrite, ElevenLabs, Resend & Firecrawl"
category: "Starters"
url: https://railway.com/deploy/teamx-appwrite
---

# Deploy TeamX - Appwrite

Deploy Team Collaboration with Appwrite, ElevenLabs, Resend & Firecrawl

**[Deploy TeamX - Appwrite on Railway](https://railway.com/template/teamx-appwrite)**

- **Creator:** Ak Deepankar's Projects
- **Category:** Starters
- **Total deploys:** 1

## Template content

### Resend

- **Image:** ghcr.io/railwayapp/function-bun:1.2.16
- **Start command:** `./run.sh aW1wb3J0IHsgSG9ubyB9IGZyb20gImhvbm9ANCI7CmltcG9ydCB7IGNvcnMgfSBmcm9tICJob25vL2NvcnMiOwoKY29uc3QgYXBwID0gbmV3IEhvbm8oKTsKCmFwcC51c2UoIi8qIiwgY29ycygpKTsKCmFwcC5nZXQoIi8iLCAoYykgPT4gYy50ZXh0KCJyZXNlbmQtc2VydmljZSAoQnVuICsgSG9ubykiKSk7CgovLyBLZWVwIGJvdGggL2hlYWx0aCBhbmQgL2FwaS9oZWFsdGggZm9yIGNvbXBhdGliaWxpdHkKYXBwLmdldCgiL2hlYWx0aCIsIChjKSA9PiBjLmpzb24oeyBzdGF0dXM6ICJvayIgfSkpOwphcHAuZ2V0KCIvYXBpL2hlYWx0aCIsIChjKSA9PiBjLmpzb24oeyBzdGF0dXM6ICJvayIgfSkpOwoKYXBwLmdldCgiL3Rlc3QiLCAoYykgPT4gewogIGNvbnN0IGFwaUtleSA9IEJ1bi5lbnYuUkVTRU5EX0FQSV9LRVk7CiAgY29uc3QgZnJvbUFkZHJlc3MgPSBCdW4uZW52LlJFU0VORF9GUk9NOwogIGlmICghYXBpS2V5IHx8ICFmcm9tQWRkcmVzcykgewogICAgcmV0dXJuIGMuanNvbigKICAgICAgeyBvazogZmFsc2UsIGVycm9yOiAiTWlzc2luZyBSRVNFTkRfQVBJX0tFWSBvciBSRVNFTkRfRlJPTSIgfSwKICAgICAgNTAwCiAgICApOwogIH0KICByZXR1cm4gYy5qc29uKHsgb2s6IHRydWUsIGZyb206IGZyb21BZGRyZXNzIH0pOwp9KTsKCmFwcC5wb3N0KCIvc2VuZCIsIGFzeW5jIChjKSA9PiB7CiAgdHJ5IHsKICAgIGNvbnN0IGFwaUtleSA9IEJ1bi5lbnYuUkVTRU5EX0FQSV9LRVk7CiAgICBpZiAoIWFwaUtleSkgewogICAgICByZXR1cm4gYy5qc29uKHsgZXJyb3I6ICJTZXJ2ZXIgbWlzc2luZyBSRVNFTkRfQVBJX0tFWSIgfSwgNTAwKTsKICAgIH0KCiAgICBjb25zdCBmcm9tQWRkcmVzcyA9IChCdW4uZW52LlJFU0VORF9GUk9NID8/ICIiKS50cmltKCk7CiAgICBpZiAoIWZyb21BZGRyZXNzKSB7CiAgICAgIHJldHVybiBjLmpzb24oCiAgICAgICAgewogICAgICAgICAgZXJyb3I6CiAgICAgICAgICAgICJTZXJ2ZXIgbWlzc2luZyBSRVNFTkRfRlJPTSAobXVzdCBiZSBhIHZlcmlmaWVkIHNlbmRlci9kb21haW4pIiwKICAgICAgICB9LAogICAgICAgIDUwMAogICAgICApOwogICAgfQoKICAgIGNvbnN0IGJvZHkgPSBhd2FpdCBjLnJlcS5qc29uKCkuY2F0Y2goKCkgPT4gKHt9KSk7CgogICAgY29uc3QgdG9SYXc6IHVua25vd24gPSBib2R5Py50byA/PyBbXTsKICAgIGNvbnN0IHN1YmplY3RSYXc6IHVua25vd24gPSBib2R5Py5zdWJqZWN0ID8/ICIiOwogICAgY29uc3QgaHRtbFJhdzogdW5rbm93biA9IGJvZHk/Lmh0bWwgPz8gIiI7CgogICAgY29uc3QgdG9MaXN0OiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkodG9SYXcpCiAgICAgID8gdG9SYXcKICAgICAgOiB0eXBlb2YgdG9SYXcgPT09ICJzdHJpbmciICYmIHRvUmF3LnRyaW0oKQogICAgICA/IFt0b1Jhdy50cmltKCldCiAgICAgIDogW107CiAgICBjb25zdCBzdWJqZWN0OiBzdHJpbmcgPQogICAgICB0eXBlb2Ygc3ViamVjdFJhdyA9PT0gInN0cmluZyIgPyBzdWJqZWN0UmF3LnRyaW0oKSA6ICIiOwogICAgY29uc3QgaHRtbDogc3RyaW5nID0gdHlwZW9mIGh0bWxSYXcgPT09ICJzdHJpbmciID8gaHRtbFJhdy50cmltKCkgOiAiIjsKCiAgICBpZiAoIXRvTGlzdC5sZW5ndGggfHwgIXN1YmplY3QgfHwgIWh0bWwpIHsKICAgICAgcmV0dXJuIGMuanNvbih7IGVycm9yOiAidG8sIHN1YmplY3QsIGh0bWwgYXJlIHJlcXVpcmVkIiB9LCA0MDApOwogICAgfQoKICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goImh0dHBzOi8vYXBpLnJlc2VuZC5jb20vZW1haWxzIiwgewogICAgICBtZXRob2Q6ICJQT1NUIiwKICAgICAgaGVhZGVyczogewogICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthcGlLZXl9YCwKICAgICAgICAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL2pzb24iLAogICAgICB9LAogICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7CiAgICAgICAgZnJvbTogZnJvbUFkZHJlc3MsCiAgICAgICAgdG86IHRvTGlzdCwKICAgICAgICBzdWJqZWN0LAogICAgICAgIGh0bWwsCiAgICAgIH0pLAogICAgfSk7CgogICAgY29uc3QgZGF0YTogdW5rbm93biA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpOwoKICAgIGNvbnN0IGlzT2JqZWN0ID0gKHZhbDogdW5rbm93bik6IHZhbCBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PgogICAgICB0eXBlb2YgdmFsID09PSAib2JqZWN0IiAmJiB2YWwgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsKTsKCiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7CiAgICAgIGNvbnN0IGVycm9yUGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBpc09iamVjdChkYXRhKSA/IGRhdGEgOiB7fTsKICAgICAgcmV0dXJuIGMuanNvbigKICAgICAgICB7CiAgICAgICAgICBlcnJvcjogIlJlc2VuZEVycm9yIiwKICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLAogICAgICAgICAgLi4uZXJyb3JQYXlsb2FkLAogICAgICAgIH0sCiAgICAgICAgNTAyCiAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIGMuanNvbihpc09iamVjdChkYXRhKSA/IGRhdGEgOiB7fSk7CiAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7CiAgICAvLyBUcnkgdG8gdW53cmFwIGVycm9yIGRldGFpbHMgc2ltaWxhcmx5IHRvIHRoZSBGbGFzayB2ZXJzaW9uCiAgICBjb25zdCBlcnJvciA9IGVyciBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjsKICAgIGNvbnN0IG1lc3NhZ2UgPSAoZXJyb3I/Lm1lc3NhZ2UgYXMgc3RyaW5nKSB8fCBTdHJpbmcoZXJyKTsKICAgIGNvbnN0IG5hbWUgPSAoZXJyb3I/Lm5hbWUgYXMgc3RyaW5nKSB8fCAiRXJyb3IiOwogICAgcmV0dXJuIGMuanNvbih7IGVycm9yOiBuYW1lLCBtZXNzYWdlIH0sIDUwMCk7CiAgfQp9KTsKCkJ1bi5zZXJ2ZSh7CiAgcG9ydDogKGltcG9ydC5tZXRhIGFzIGFueSkuZW52Py5QT1JUID8/IEJ1bi5lbnYuUE9SVCA/PyAzMDAwLAogIGZldGNoOiBhcHAuZmV0Y2gsCn0pOwo=`
- **Public domain:** Yes

### OpenAI+ElevenLabs TTS

- **Image:** ghcr.io/railwayapp/function-bun:1.2.16
- **Start command:** `./run.sh Ly8gaW5kZXgudHMKaW1wb3J0IE9wZW5BSSBmcm9tICJvcGVuYWkiOwoKY29uc3Qgb3BlbmFpID0gbmV3IE9wZW5BSSh7CiAgYXBpS2V5OiBwcm9jZXNzLmVudi5PUEVOQUlfQVBJX0tFWSEsCn0pOwoKY29uc3QgRUxFVkVOTEFCU19BUElfS0VZID0gcHJvY2Vzcy5lbnYuRUxFVkVOTEFCU19BUElfS0VZITsKY29uc3QgRUxFVkVOTEFCU19WT0lDRV9JRCA9IHByb2Nlc3MuZW52LkVMRVZFTkxBQlNfVk9JQ0VfSUQhOwpjb25zdCBFTEVWRU5MQUJTX01PREVMX0lEID0KICBwcm9jZXNzLmVudi5FTEVWRU5MQUJTX01PREVMX0lEIHx8ICJlbGV2ZW5fbXVsdGlsaW5ndWFsX3YyIjsKY29uc3QgT1BFTkFJX01PREVMID0gcHJvY2Vzcy5lbnYuT1BFTkFJX01PREVMIHx8ICJncHQtNG8tbWluaSI7Cgpjb25zdCBNSU5fRFVSQVRJT05fTUlOID0gMC41Owpjb25zdCBNQVhfRFVSQVRJT05fTUlOID0gMi4wOwoKaW50ZXJmYWNlIEdlbmVyYXRlUmVxdWVzdCB7CiAgcHJvbXB0OiBzdHJpbmc7CiAgZHVyYXRpb25fbWludXRlcz86IG51bWJlcjsKfQoKZnVuY3Rpb24gc2FuaXRpemVEdXJhdGlvbk1pbnV0ZXMocmF3VmFsdWU6IGFueSk6IG51bWJlciB7CiAgbGV0IG1pbnV0ZXMgPSBOdW1iZXIocmF3VmFsdWUpOwogIGlmIChpc05hTihtaW51dGVzKSkgbWludXRlcyA9IDEuMDsKICBpZiAobWludXRlcyA8IE1JTl9EVVJBVElPTl9NSU4pIHJldHVybiBNSU5fRFVSQVRJT05fTUlOOwogIGlmIChtaW51dGVzID4gTUFYX0RVUkFUSU9OX01JTikgcmV0dXJuIE1BWF9EVVJBVElPTl9NSU47CiAgcmV0dXJuIG1pbnV0ZXM7Cn0KCmZ1bmN0aW9uIHdpdGhDb3JzSGVhZGVycyhoZWFkZXJzOiBIZWFkZXJzID0gbmV3IEhlYWRlcnMoKSkgewogIGhlYWRlcnMuc2V0KCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAiKiIpOyAvLyBvciB5b3VyIGZyb250ZW5kIGRvbWFpbgogIGhlYWRlcnMuc2V0KCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgIkdFVCwgUE9TVCwgT1BUSU9OUyIpOwogIGhlYWRlcnMuc2V0KCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgIkNvbnRlbnQtVHlwZSwgQXV0aG9yaXphdGlvbiIpOwogIHJldHVybiBoZWFkZXJzOwp9Cgphc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVN0b3J5V2l0aE9wZW5BSSgKICBwcm9tcHQ6IHN0cmluZywKICBkdXJhdGlvbk1pbnV0ZXM6IG51bWJlcgopOiBQcm9taXNlPHN0cmluZz4gewogIGNvbnN0IHdvcmRzUGVyTWludXRlID0gMTUwOwogIGNvbnN0IHRhcmdldFdvcmRzID0gTWF0aC5tYXgoCiAgICAxNTAsCiAgICBNYXRoLm1pbigzMDAwLCBNYXRoLmZsb29yKGR1cmF0aW9uTWludXRlcyAqIHdvcmRzUGVyTWludXRlKSkKICApOwogIGNvbnN0IHN5c3RlbSA9IGBZb3UgYXJlIGFuIGV4cGVydCBhdWRpb2Jvb2sgc2NyaXB0IHdyaXRlci4gQ3JhZnQgYSBjb2hlc2l2ZSwgZW5nYWdpbmcsIGFuZCB2aXZpZCBtaW5pIGF1ZGlvYm9vayBzY3JpcHQuIFdyaXRlIGluIGNsZWFyIHBhcmFncmFwaHMgc3VpdGFibGUgZm9yIG5hcnJhdGlvbi4gRG8gbm90IGluY2x1ZGUgc3RhZ2UgZGlyZWN0aW9ucyBvciBoZWFkaW5ncy4gQWltIGZvciByb3VnaGx5ICR7dGFyZ2V0V29yZHN9IHdvcmRzIHNvIGl0IGZpdHMgYWJvdXQgJHtkdXJhdGlvbk1pbnV0ZXN9IG1pbnV0ZXMgYXQgfjE1MCBXUE0uIFJldHVybiBvbmx5IHRoZSBzY3JpcHQgdGV4dC5gOwogIGNvbnN0IHVzZXIgPSBgVG9waWMvUHJvbXB0OiAke3Byb21wdH1cblxuUGxlYXNlIHByb2R1Y2Ugb25seSBwbGFpbiB0ZXh0IHBhcmFncmFwaHMuYDsKCiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBvcGVuYWkuY2hhdC5jb21wbGV0aW9ucy5jcmVhdGUoewogICAgbW9kZWw6IE9QRU5BSV9NT0RFTCwKICAgIG1lc3NhZ2VzOiBbCiAgICAgIHsgcm9sZTogInN5c3RlbSIsIGNvbnRlbnQ6IHN5c3RlbSB9LAogICAgICB7IHJvbGU6ICJ1c2VyIiwgY29udGVudDogdXNlciB9LAogICAgXSwKICAgIHRlbXBlcmF0dXJlOiAwLjksCiAgICBtYXhfdG9rZW5zOiAyMDQ4LAogIH0pOwoKICByZXR1cm4gKHJlc3BvbnNlLmNob2ljZXNbMF0ubWVzc2FnZT8uY29udGVudCB8fCAiIikudHJpbSgpOwp9Cgphc3luYyBmdW5jdGlvbiBzeW50aGVzaXplV2l0aEVsZXZlbkxhYnModGV4dDogc3RyaW5nKTogUHJvbWlzZTxVaW50OEFycmF5PiB7CiAgY29uc3QgdXJsID0gYGh0dHBzOi8vYXBpLmVsZXZlbmxhYnMuaW8vdjEvdGV4dC10by1zcGVlY2gvJHtFTEVWRU5MQUJTX1ZPSUNFX0lEfS9zdHJlYW1gOwoKICBjb25zdCByZXNwID0gYXdhaXQgZmV0Y2godXJsLCB7CiAgICBtZXRob2Q6ICJQT1NUIiwKICAgIGhlYWRlcnM6IHsKICAgICAgInhpLWFwaS1rZXkiOiBFTEVWRU5MQUJTX0FQSV9LRVksCiAgICAgIGFjY2VwdDogImF1ZGlvL21wZWciLAogICAgICAiY29udGVudC10eXBlIjogImFwcGxpY2F0aW9uL2pzb24iLAogICAgfSwKICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsKICAgICAgdGV4dCwKICAgICAgbW9kZWxfaWQ6IEVMRVZFTkxBQlNfTU9ERUxfSUQsCiAgICAgIHZvaWNlX3NldHRpbmdzOiB7CiAgICAgICAgc3RhYmlsaXR5OiAwLjUsCiAgICAgICAgc2ltaWxhcml0eV9ib29zdDogMC43NSwKICAgICAgfSwKICAgIH0pLAogIH0pOwoKICBpZiAoIXJlc3Aub2spIHsKICAgIHRocm93IG5ldyBFcnJvcihgRWxldmVuTGFicyBlcnJvcjogJHtyZXNwLnN0YXR1c30gJHthd2FpdCByZXNwLnRleHQoKX1gKTsKICB9CgogIHJldHVybiBuZXcgVWludDhBcnJheShhd2FpdCByZXNwLmFycmF5QnVmZmVyKCkpOwp9CgpleHBvcnQgZGVmYXVsdCB7CiAgYXN5bmMgZmV0Y2gocmVxOiBSZXF1ZXN0KSB7CiAgICBjb25zdCB7IHBhdGhuYW1lIH0gPSBuZXcgVVJMKHJlcS51cmwpOwoKICAgIC8vIEhhbmRsZSBDT1JTIHByZWZsaWdodCByZXF1ZXN0cwogICAgaWYgKHJlcS5tZXRob2QgPT09ICJPUFRJT05TIikgewogICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHsgc3RhdHVzOiAyMDQsIGhlYWRlcnM6IHdpdGhDb3JzSGVhZGVycygpIH0pOwogICAgfQoKICAgIGlmIChwYXRobmFtZSA9PT0gIi9oZWFsdGgiIHx8IHBhdGhuYW1lID09PSAiLyIpIHsKICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZSgKICAgICAgICBKU09OLnN0cmluZ2lmeSh7IHN0YXR1czogIm9rIiwgc2VydmljZTogImF1ZGlvLXNlcnZpY2UiIH0pLAogICAgICAgIHsKICAgICAgICAgIGhlYWRlcnM6IHdpdGhDb3JzSGVhZGVycygKICAgICAgICAgICAgbmV3IEhlYWRlcnMoeyAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL2pzb24iIH0pCiAgICAgICAgICApLAogICAgICAgIH0KICAgICAgKTsKICAgIH0KCiAgICBpZiAocGF0aG5hbWUgPT09ICIvZ2VuZXJhdGUiICYmIHJlcS5tZXRob2QgPT09ICJQT1NUIikgewogICAgICB0cnkgewogICAgICAgIGNvbnN0IGRhdGEgPSAoYXdhaXQgcmVxLmpzb24oKSkgYXMgR2VuZXJhdGVSZXF1ZXN0OwogICAgICAgIGNvbnN0IHByb21wdCA9IChkYXRhLnByb21wdCB8fCAiIikudHJpbSgpOwogICAgICAgIGNvbnN0IGR1cmF0aW9uTWludXRlcyA9IHNhbml0aXplRHVyYXRpb25NaW51dGVzKAogICAgICAgICAgZGF0YS5kdXJhdGlvbl9taW51dGVzID8/IDEuMAogICAgICAgICk7CgogICAgICAgIGlmICghcHJvbXB0KSB7CiAgICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6ICJwcm9tcHQgaXMgcmVxdWlyZWQiIH0pLCB7CiAgICAgICAgICAgIHN0YXR1czogNDAwLAogICAgICAgICAgICBoZWFkZXJzOiB3aXRoQ29yc0hlYWRlcnMoCiAgICAgICAgICAgICAgbmV3IEhlYWRlcnMoeyAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL2pzb24iIH0pCiAgICAgICAgICAgICksCiAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIGlmICghcHJvY2Vzcy5lbnYuT1BFTkFJX0FQSV9LRVkpIHsKICAgICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoCiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6ICJTZXJ2ZXIgbWlzc2luZyBPUEVOQUlfQVBJX0tFWSIgfSksCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBzdGF0dXM6IDUwMCwKICAgICAgICAgICAgICBoZWFkZXJzOiB3aXRoQ29yc0hlYWRlcnMoCiAgICAgICAgICAgICAgICBuZXcgSGVhZGVycyh7ICJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIgfSkKICAgICAgICAgICAgICApLAogICAgICAgICAgICB9CiAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoIUVMRVZFTkxBQlNfQVBJX0tFWSkgewogICAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZSgKICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogIlNlcnZlciBtaXNzaW5nIEVMRVZFTkxBQlNfQVBJX0tFWSIgfSksCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBzdGF0dXM6IDUwMCwKICAgICAgICAgICAgICBoZWFkZXJzOiB3aXRoQ29yc0hlYWRlcnMoCiAgICAgICAgICAgICAgICBuZXcgSGVhZGVycyh7ICJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIgfSkKICAgICAgICAgICAgICApLAogICAgICAgICAgICB9CiAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoIUVMRVZFTkxBQlNfVk9JQ0VfSUQpIHsKICAgICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoCiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6ICJTZXJ2ZXIgbWlzc2luZyBFTEVWRU5MQUJTX1ZPSUNFX0lEIiB9KSwKICAgICAgICAgICAgewogICAgICAgICAgICAgIHN0YXR1czogNTAwLAogICAgICAgICAgICAgIGhlYWRlcnM6IHdpdGhDb3JzSGVhZGVycygKICAgICAgICAgICAgICAgIG5ldyBIZWFkZXJzKHsgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiB9KQogICAgICAgICAgICAgICksCiAgICAgICAgICAgIH0KICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBjb25zdCB0cmFuc2NyaXB0ID0gYXdhaXQgZ2VuZXJhdGVTdG9yeVdpdGhPcGVuQUkoCiAgICAgICAgICBwcm9tcHQsCiAgICAgICAgICBkdXJhdGlvbk1pbnV0ZXMKICAgICAgICApOwogICAgICAgIGlmICghdHJhbnNjcmlwdCkgewogICAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZSgKICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogIk9wZW5BSSByZXR1cm5lZCBlbXB0eSBjb250ZW50IiB9KSwKICAgICAgICAgICAgewogICAgICAgICAgICAgIHN0YXR1czogNTAwLAogICAgICAgICAgICAgIGhlYWRlcnM6IHdpdGhDb3JzSGVhZGVycygKICAgICAgICAgICAgICAgIG5ldyBIZWFkZXJzKHsgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiB9KQogICAgICAgICAgICAgICksCiAgICAgICAgICAgIH0KICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBjb25zdCBhdWRpb0J5dGVzID0gYXdhaXQgc3ludGhlc2l6ZVdpdGhFbGV2ZW5MYWJzKHRyYW5zY3JpcHQpOwogICAgICAgIGNvbnN0IGF1ZGlvQmFzZTY0ID0gQnVmZmVyLmZyb20oYXVkaW9CeXRlcykudG9TdHJpbmcoImJhc2U2NCIpOwoKICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKAogICAgICAgICAgSlNPTi5zdHJpbmdpZnkoewogICAgICAgICAgICBhdWRpb19iYXNlNjQ6IGF1ZGlvQmFzZTY0LAogICAgICAgICAgICB0cmFuc2NyaXB0LAogICAgICAgICAgICBtaW1lOiAiYXVkaW8vbXBlZyIsCiAgICAgICAgICAgIGdlbmVyYXRvcjogIm9wZW5haSIsCiAgICAgICAgICAgIG9wZW5haV9tb2RlbDogT1BFTkFJX01PREVMLAogICAgICAgICAgfSksCiAgICAgICAgICB7CiAgICAgICAgICAgIGhlYWRlcnM6IHdpdGhDb3JzSGVhZGVycygKICAgICAgICAgICAgICBuZXcgSGVhZGVycyh7ICJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIgfSkKICAgICAgICAgICAgKSwKICAgICAgICAgIH0KICAgICAgICApOwogICAgICB9IGNhdGNoIChlcnI6IGFueSkgewogICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoCiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7IGVycm9yOiBlcnIubWVzc2FnZSB8fCBTdHJpbmcoZXJyKSB9KSwKICAgICAgICAgIHsKICAgICAgICAgICAgc3RhdHVzOiA1MDAsCiAgICAgICAgICAgIGhlYWRlcnM6IHdpdGhDb3JzSGVhZGVycygKICAgICAgICAgICAgICBuZXcgSGVhZGVycyh7ICJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIgfSkKICAgICAgICAgICAgKSwKICAgICAgICAgIH0KICAgICAgICApOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IGVycm9yOiAiTm90IEZvdW5kIiB9KSwgewogICAgICBzdGF0dXM6IDQwNCwKICAgICAgaGVhZGVyczogd2l0aENvcnNIZWFkZXJzKAogICAgICAgIG5ldyBIZWFkZXJzKHsgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiB9KQogICAgICApLAogICAgfSk7CiAgfSwKfTsK`
- **Public domain:** Yes

### Firecrawl Extract

- **Image:** ghcr.io/railwayapp/function-bun:1.2.16
- **Start command:** `./run.sh aW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAiYnVmZmVyIjsKCmNvbnN0IEZJUkVDUkFXTF9BUElfS0VZID0gcHJvY2Vzcy5lbnYuRklSRUNSQVdMX0FQSV9LRVkhOwpjb25zdCBGSVJFQ1JBV0xfQVBJX1VSTCA9ICJodHRwczovL2FwaS5maXJlY3Jhd2wuZGV2L3YxL2V4dHJhY3QiOwoKaW50ZXJmYWNlIEV4dHJhY3RSZXF1ZXN0IHsKICB1cmw6IHN0cmluZzsKICBwcm9tcHQ/OiBzdHJpbmc7Cn0KCmZ1bmN0aW9uIHdpdGhDb3JzSGVhZGVycyhoZWFkZXJzOiBIZWFkZXJzID0gbmV3IEhlYWRlcnMoKSkgewogIGhlYWRlcnMuc2V0KCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAiKiIpOyAvLyBvciB5b3VyIGZyb250ZW5kIGRvbWFpbgogIGhlYWRlcnMuc2V0KCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgIkdFVCwgUE9TVCwgT1BUSU9OUyIpOwogIGhlYWRlcnMuc2V0KCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgIkNvbnRlbnQtVHlwZSwgQXV0aG9yaXphdGlvbiIpOwogIHJldHVybiBoZWFkZXJzOwp9Cgphc3luYyBmdW5jdGlvbiBwb2xsRmlyZWNyYXdsUmVzdWx0KGpvYklkOiBzdHJpbmcpIHsKICBjb25zdCBQT0xMX0lOVEVSVkFMX01TID0gMzAwMDsKCiAgd2hpbGUgKHRydWUpIHsKICAgIGNvbnN0IHBvbGxSZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0ZJUkVDUkFXTF9BUElfVVJMfS8ke2pvYklkfWAsIHsKICAgICAgaGVhZGVyczogbmV3IEhlYWRlcnMoewogICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtGSVJFQ1JBV0xfQVBJX0tFWX1gLAogICAgICB9KSwKICAgIH0pOwoKICAgIGlmICghcG9sbFJlc3BvbnNlLm9rKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICBgRmlyZWNyYXdsIHBvbGxpbmcgZXJyb3I6ICR7CiAgICAgICAgICBwb2xsUmVzcG9uc2Uuc3RhdHVzCiAgICAgICAgfSAke2F3YWl0IHBvbGxSZXNwb25zZS50ZXh0KCl9YAogICAgICApOwogICAgfQoKICAgIGNvbnN0IHBvbGxKc29uOiBhbnkgPSBhd2FpdCBwb2xsUmVzcG9uc2UuanNvbigpOwoKICAgIGlmIChwb2xsSnNvbi5zdGF0dXMgPT09ICJjb21wbGV0ZWQiKSB7CiAgICAgIHJldHVybiBwb2xsSnNvbi5kYXRhOwogICAgfSBlbHNlIGlmICgKICAgICAgcG9sbEpzb24uc3RhdHVzID09PSAiZmFpbGVkIiB8fAogICAgICBwb2xsSnNvbi5zdGF0dXMgPT09ICJjYW5jZWxsZWQiCiAgICApIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaXJlY3Jhd2wgam9iICR7cG9sbEpzb24uc3RhdHVzfWApOwogICAgfQoKICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIFBPTExfSU5URVJWQUxfTVMpKTsKICB9Cn0KCmV4cG9ydCBkZWZhdWx0IHsKICBhc3luYyBmZXRjaChyZXE6IFJlcXVlc3QpIHsKICAgIGNvbnN0IHsgcGF0aG5hbWUgfSA9IG5ldyBVUkwocmVxLnVybCk7CgogICAgaWYgKHJlcS5tZXRob2QgPT09ICJPUFRJT05TIikgewogICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHsKICAgICAgICBzdGF0dXM6IDIwNCwKICAgICAgICBoZWFkZXJzOiB3aXRoQ29yc0hlYWRlcnMobmV3IEhlYWRlcnMoKSksCiAgICAgIH0pOwogICAgfQoKICAgIGlmIChwYXRobmFtZSA9PT0gIi9oZWFsdGgiIHx8IHBhdGhuYW1lID09PSAiLyIpIHsKICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZSgKICAgICAgICBKU09OLnN0cmluZ2lmeSh7IHN0YXR1czogIm9rIiwgc2VydmljZTogImZpcmVjcmF3bC1wcm94eSIgfSksCiAgICAgICAgewogICAgICAgICAgaGVhZGVyczogd2l0aENvcnNIZWFkZXJzKAogICAgICAgICAgICBuZXcgSGVhZGVycyh7ICJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIgfSkKICAgICAgICAgICksCiAgICAgICAgfQogICAgICApOwogICAgfQoKICAgIGlmIChwYXRobmFtZSA9PT0gIi9leHRyYWN0IiAmJiByZXEubWV0aG9kID09PSAiUE9TVCIpIHsKICAgICAgdHJ5IHsKICAgICAgICAvLyBSZW5hbWUgdG8gYXZvaWQgcmVkZWNsYXJpbmcgJ2RhdGEnCiAgICAgICAgY29uc3QgcmVxdWVzdERhdGEgPSAoYXdhaXQgcmVxLmpzb24oKSkgYXMgRXh0cmFjdFJlcXVlc3Q7CiAgICAgICAgY29uc3QgdXJsID0gKHJlcXVlc3REYXRhLnVybCB8fCAiIikudHJpbSgpOwogICAgICAgIGNvbnN0IHByb21wdCA9CiAgICAgICAgICByZXF1ZXN0RGF0YS5wcm9tcHQ/LnRyaW0oKSB8fAogICAgICAgICAgIkV4dHJhY3QgYSBjb25jaXNlIDYtMTAgc2VudGVuY2Ugc3VtbWFyeSBvZiB0aGUgbWFpbiBjb250ZW50IG9uIHRoZSBwYWdlLiBJZ25vcmUgbmF2aWdhdGlvbiBhbmQgYm9pbGVycGxhdGUuIjsKCiAgICAgICAgaWYgKCF1cmwpIHsKICAgICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogInVybCBpcyByZXF1aXJlZCIgfSksIHsKICAgICAgICAgICAgc3RhdHVzOiA0MDAsCiAgICAgICAgICAgIGhlYWRlcnM6IHdpdGhDb3JzSGVhZGVycygKICAgICAgICAgICAgICBuZXcgSGVhZGVycyh7ICJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIgfSkKICAgICAgICAgICAgKSwKICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFGSVJFQ1JBV0xfQVBJX0tFWSkgewogICAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZSgKICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogIlNlcnZlciBtaXNzaW5nIEZJUkVDUkFXTF9BUElfS0VZIiB9KSwKICAgICAgICAgICAgewogICAgICAgICAgICAgIHN0YXR1czogNTAwLAogICAgICAgICAgICAgIGhlYWRlcnM6IHdpdGhDb3JzSGVhZGVycygKICAgICAgICAgICAgICAgIG5ldyBIZWFkZXJzKHsgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiB9KQogICAgICAgICAgICAgICksCiAgICAgICAgICAgIH0KICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoewogICAgICAgICAgdXJsczogW3VybF0sCiAgICAgICAgICBwcm9tcHQsCiAgICAgICAgfSk7CgogICAgICAgIGNvbnNvbGUubG9nKCJTZW5kaW5nIEZpcmVjcmF3bCByZXF1ZXN0IGJvZHk6IiwgYm9keSk7CgogICAgICAgIC8vIFN0YXJ0IGV4dHJhY3Rpb24gam9iCiAgICAgICAgY29uc3Qgc3RhcnRSZXNwb25zZSA9IGF3YWl0IGZldGNoKEZJUkVDUkFXTF9BUElfVVJMLCB7CiAgICAgICAgICBtZXRob2Q6ICJQT1NUIiwKICAgICAgICAgIGhlYWRlcnM6IHdpdGhDb3JzSGVhZGVycygKICAgICAgICAgICAgbmV3IEhlYWRlcnMoewogICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtGSVJFQ1JBV0xfQVBJX0tFWX1gLAogICAgICAgICAgICAgICJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgICAgICAgIH0pCiAgICAgICAgICApLAogICAgICAgICAgYm9keSwKICAgICAgICB9KTsKCiAgICAgICAgaWYgKCFzdGFydFJlc3BvbnNlLm9rKSB7CiAgICAgICAgICBjb25zdCBlcnJvclRleHQgPSBhd2FpdCBzdGFydFJlc3BvbnNlLnRleHQoKTsKICAgICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoCiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHsKICAgICAgICAgICAgICBlcnJvcjogYEZpcmVjcmF3bCBBUEkgZXJyb3I6ICR7c3RhcnRSZXNwb25zZS5zdGF0dXN9ICR7ZXJyb3JUZXh0fWAsCiAgICAgICAgICAgIH0pLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgc3RhdHVzOiBzdGFydFJlc3BvbnNlLnN0YXR1cywKICAgICAgICAgICAgICBoZWFkZXJzOiB3aXRoQ29yc0hlYWRlcnMoCiAgICAgICAgICAgICAgICBuZXcgSGVhZGVycyh7ICJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIgfSkKICAgICAgICAgICAgICApLAogICAgICAgICAgICB9CiAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgY29uc3Qgc3RhcnRKc29uOiBhbnkgPSBhd2FpdCBzdGFydFJlc3BvbnNlLmpzb24oKTsKCiAgICAgICAgY29uc29sZS5sb2coCiAgICAgICAgICAiRmlyZWNyYXdsIGluaXRpYWwgcmVzcG9uc2UgSlNPTjoiLAogICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc3RhcnRKc29uLCBudWxsLCAyKQogICAgICAgICk7CgogICAgICAgIC8vIFBvbGwgZm9yIGpvYiBjb21wbGV0aW9uIHVzaW5nIGpvYiBJRAogICAgICAgIGNvbnN0IGV4dHJhY3RlZERhdGEgPSBhd2FpdCBwb2xsRmlyZWNyYXdsUmVzdWx0KHN0YXJ0SnNvbi5pZCk7CgogICAgICAgIC8vIEV4dHJhY3Qgc3VtbWFyeSBzYWZlbHkKICAgICAgICBsZXQgc3VtbWFyeSA9ICIiOwogICAgICAgIGNvbnN0IGRhdGFGaWVsZCA9IGV4dHJhY3RlZERhdGE7CgogICAgICAgIGlmIChkYXRhRmllbGQgJiYgdHlwZW9mIGRhdGFGaWVsZCA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFGaWVsZCkgJiYgZGF0YUZpZWxkLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgY29uc3QgZmlyc3QgPSBkYXRhRmllbGRbMF07CiAgICAgICAgICAgIGlmIChmaXJzdCAmJiB0eXBlb2YgZmlyc3QgPT09ICJvYmplY3QiKSB7CiAgICAgICAgICAgICAgY29uc3QgZmlyc3RPYmogPSBmaXJzdCBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+OwogICAgICAgICAgICAgIHN1bW1hcnkgPQogICAgICAgICAgICAgICAgZmlyc3RPYmouc3VtbWFyeT8udHJpbSgpIHx8CiAgICAgICAgICAgICAgICBmaXJzdE9iai5jb250ZW50Py50cmltKCkgfHwKICAgICAgICAgICAgICAgIGZpcnN0T2JqLnRleHQ/LnRyaW0oKSB8fAogICAgICAgICAgICAgICAgIiI7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIGRhdGFGaWVsZCBpcyBvYmplY3QKICAgICAgICAgICAgY29uc3Qgb2JqID0gZGF0YUZpZWxkIGFzIFJlY29yZDxzdHJpbmcsIGFueT47CiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIFsic3VtbWFyeSIsICJjb250ZW50IiwgInRleHQiXSkgewogICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqW2tleV0gPT09ICJzdHJpbmciICYmIG9ialtrZXldLnRyaW0oKS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICBzdW1tYXJ5ID0gb2JqW2tleV0udHJpbSgpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBGYWxsYmFjayB0byByYXcgZGF0YSBzdHJpbmcgaWYgbm8gc3VtbWFyeSBmb3VuZAogICAgICAgIGlmICghc3VtbWFyeSkgewogICAgICAgICAgc3VtbWFyeSA9IEpTT04uc3RyaW5naWZ5KGV4dHJhY3RlZERhdGEpLnNsaWNlKDAsIDUwMDApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IHN1bW1hcnkgfSksIHsKICAgICAgICAgIGhlYWRlcnM6IHdpdGhDb3JzSGVhZGVycygKICAgICAgICAgICAgbmV3IEhlYWRlcnMoeyAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL2pzb24iIH0pCiAgICAgICAgICApLAogICAgICAgIH0pOwogICAgICB9IGNhdGNoIChlcnI6IGFueSkgewogICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoCiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7IGVycm9yOiBlcnIubWVzc2FnZSB8fCBTdHJpbmcoZXJyKSB9KSwKICAgICAgICAgIHsKICAgICAgICAgICAgc3RhdHVzOiA1MDAsCiAgICAgICAgICAgIGhlYWRlcnM6IHdpdGhDb3JzSGVhZGVycygKICAgICAgICAgICAgICBuZXcgSGVhZGVycyh7ICJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIgfSkKICAgICAgICAgICAgKSwKICAgICAgICAgIH0KICAgICAgICApOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IGVycm9yOiAiTm90IEZvdW5kIiB9KSwgewogICAgICBzdGF0dXM6IDQwNCwKICAgICAgaGVhZGVyczogd2l0aENvcnNIZWFkZXJzKAogICAgICAgIG5ldyBIZWFkZXJzKHsgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiB9KQogICAgICApLAogICAgfSk7CiAgfSwKfTsK`
- **Public domain:** Yes

### TeamX

- **Source:** https://github.com/akdeepankar/TeamX
- **Start command:** `npm run start`
- **Public domain:** Yes

## Documentation

# Deploy and Host 

TeamX - Appwrite is a versatile team collaboration app that combines real-time chat, activity feeds, and team management features with a smooth React/Next.js frontend connected to a powerful Appwrite backend hosted in the cloud. It’s designed to keep teams organized and engaged with tools like polls, audio summaries, announcements, and more — all in one easy-to-use platform! 🎯✨

## About Hosting 

Hosting TeamX - Appwrite involves deploying your frontend app on Railway while connecting it to the cloud-hosted Appwrite backend for databases, file storage, and authentication. The app uses Railway-hosted serverless functions for powerful integrations like email broadcasting (Resend), AI-generated audio (ElevenLabs), and content summarization (Firecrawl Extract). Setting up environment variables, configuring API keys, and deploying on Railway lets you easily scale your app while keeping everything secure and maintainable. The seamless integration of frontend, backend, and AI features makes for an efficient, collaborative team workspace! 🌐⚙️

## Common Use Cases

- Real-time team chat and collaboration 💬  
- Sending broadcast announcements and templated emails 📣  
- Creating interactive activities: polls, audio summaries, text announcements, and more 🎙️📊  

## Dependencies for TeamX - Appwrite Hosting

- Appwrite cloud backend for database, authentication, and storage ☁️  
- Railway for hosting the frontend and reusable backend functions 🚂  
- API keys for Resend (email), ElevenLabs (text-to-speech), and Firecrawl Extract (content summarization) 🔑  

### Deployment Dependencies

- A Railway project configured to deploy your Next.js frontend and backend functions  
- Environment variables set on Railway for:  
  - Resend API key  
  - ElevenLabs API key  
  - Firecrawl Extract API key  
  - Appwrite project endpoint and IDs  
- Connected Appwrite cloud project with required collections and storage buckets  
- Proper permissions on Appwrite and API services to allow secure interaction  

### Dependencies for Project

- [Railway](https://railway.app/) account for deploying and managing your app  
- Cloud-hosted [Appwrite](https://appwrite.io/) project with configured databases and storage  
- API credentials for third-party services: Resend, ElevenLabs, Firecrawl Extract  

### Implementation Details 

This Blog Contains More Details -  [TeamX](https://akdeepankar.hashnode.dev/build-a-team-of-hundreds-with-appwrite-and-railway)

## Why Deploy 

Railway is a singular platform that makes deploying your entire infrastructure stack simple and scalable. It takes care of configuration, scaling, and monitoring, so you don’t have to juggle multiple environments.  

Deploying TeamX - Appwrite on Railway means unifying your frontend, cloud backend connections, and reusable functions — like Resend for emails, ElevenLabs for TTS, and Firecrawl Extract for summaries — all in one place. This boosts reusability, enabling you to integrate these features into future projects without rewriting your backend logic.  

With Railway, you get a full-stack deployment that’s easy to maintain, scale, and extend — perfect for building collaborative, AI-enhanced team apps! 🚀✨  


## Similar templates

- [Paperless-ngx](https://railway.com/deploy/paperless-ngx-3) — Document management with OCR on Railway with PostgreSQL and Redis
- [open-excalidraw](https://railway.com/deploy/open-excalidraw) — Self-hostable collaborative drawing built on Excalidraw
- [caring-vibrancy](https://railway.com/deploy/caring-vibrancy) — Deploy and Host caring-vibrancy with Railway

Open this page in a browser: https://railway.com/deploy/teamx-appwrite
