diff --git a/src/routes/blog/post/a-recap-of-init/+page.markdoc b/src/routes/blog/post/a-recap-of-init/+page.markdoc index d16db0cb85..ca8d9866d1 100644 --- a/src/routes/blog/post/a-recap-of-init/+page.markdoc +++ b/src/routes/blog/post/a-recap-of-init/+page.markdoc @@ -30,7 +30,7 @@ We did everything in-house, which brought some challenges as we had to learn on ## The fun begins -And then, finally, we got to [announce Init](https://appwrite.io/blog/post/announcing-init) to all of you and have you join in the fun and create your tickets. +And then, finally, we got to [announce Init](/blog/post/announcing-init) to all of you and have you join in the fun and create your tickets. ![Init begins](/images/blog/a-recap-of-init/init5.png) @@ -76,13 +76,13 @@ We kicked off the first Discord session with Appwrite Hero and Vonage dev advoca ### Content list -- [Best practices for sending push notifications](https://appwrite.io/blog/post/push-notifications-best-practices) -- [How tools like Twilio can simplify messaging for developers](https://appwrite.io/blog/post/simplify-messaging-twilio) +- [Best practices for sending push notifications](/blog/post/push-notifications-best-practices) +- [How tools like Twilio can simplify messaging for developers](/blog/post/simplify-messaging-twilio) - [Product tour video](https://www.youtube.com/watch?v=QdDgPeuBZ1I) ## Another day -On day 1 we continued our same flow and announced Improved support for [server-side rendering.](https://appwrite.io/blog/post/introducing-support-for-server-side-rendering) +On day 1 we continued our same flow and announced Improved support for [server-side rendering.](/blog/post/introducing-support-for-server-side-rendering) {% youtube src="https://www.youtube-nocookie.com/embed/jeL4cSovOBA?si=0tMDecmUucWOYASg" thumbnail="/images/blog/a-recap-of-init/thumbnails/thumbnail-ssr.png" /%} @@ -100,9 +100,9 @@ For day 1 we invited [Hitesh Choudhary](https://twitter.com/Hiteshdotcom) to com ### Content list -- [SSR vs CSR with Next.js](https://appwrite.io/blog/post/csr-vs-ssr-with-nextjs) +- [SSR vs CSR with Next.js](/blog/post/csr-vs-ssr-with-nextjs) - [Product tour](https://youtu.be/7LN05c-ov_0) -- [Announcement SSR](https://appwrite.io/blog/post/introducing-support-for-server-side-rendering) +- [Announcement SSR](/blog/post/introducing-support-for-server-side-rendering) ## Safety first @@ -127,11 +127,11 @@ We got a curve ball thrown at us on day 2 of Init, as our guest for the day had ### Content list - [Product tour 2FA](https://youtu.be/OWRju8ZZuQ8) -- [Announcement 2FA](https://appwrite.io/blog/post/announcing-two-factor-authentication) -- [From passwords to protection: Implementing 2FA in your applications](https://appwrite.io/blog/post/password-protection-2fa) -- [Announcement Enum SDK support](https://appwrite.io/blog/post/introducing-enum-sdk-support) -- [Effective use of enums in API design](https://appwrite.io/blog/post/enums-api-design) -- [Enhancing type safety in software development with enums](https://appwrite.io/blog/post/enhancing-type-safety) +- [Announcement 2FA](/blog/post/announcing-two-factor-authentication) +- [From passwords to protection: Implementing 2FA in your applications](/blog/post/password-protection-2fa) +- [Announcement Enum SDK support](/blog/post/introducing-enum-sdk-support) +- [Effective use of enums in API design](/blog/post/enums-api-design) +- [Enhancing type safety in software development with enums](/blog/post/enhancing-type-safety) ## More querying! @@ -147,9 +147,9 @@ For day 3 of Init, we had [Danny Thompson](https://twitter.com/DThompsonDev) joi ### Content list -- [Database operators announcement](https://appwrite.io/blog/post/introducing-new-database-operators) +- [Database operators announcement](/blog/post/introducing-new-database-operators) - [Product tour video](https://youtu.be/IMgl9f_iht4) -- [Understanding data queries in database management](https://appwrite.io/blog/post/understand-data-queries) +- [Understanding data queries in database management](/blog/post/understand-data-queries) ## The end and the beginning @@ -163,9 +163,9 @@ The closing party got an extra special touch with five giveaways to celebrate. A ### Content list -- [New runtimes announcement](https://appwrite.io/blog/post/introducing-enum-sdk-support) -- [Sound null-safety for your Dart functions](https://appwrite.io/blog/post/sound-null-safety-for-your-dart-functions) -- [Why you need to try the new Bun function runtime](https://appwrite.io/blog/post/why-you-need-to-try-the-new-bun-runtime) +- [New runtimes announcement](/blog/post/introducing-enum-sdk-support) +- [Sound null-safety for your Dart functions](/blog/post/sound-null-safety-for-your-dart-functions) +- [Why you need to try the new Bun function runtime](/blog/post/why-you-need-to-try-the-new-bun-runtime) # Thank you all for joining diff --git a/src/routes/blog/post/accessibility-in-pink-design/+page.markdoc b/src/routes/blog/post/accessibility-in-pink-design/+page.markdoc index 320b55be57..92d5ed1c4c 100644 --- a/src/routes/blog/post/accessibility-in-pink-design/+page.markdoc +++ b/src/routes/blog/post/accessibility-in-pink-design/+page.markdoc @@ -1,7 +1,7 @@ --- layout: post title: How Pink Design helped us improve web accessibility in our products. -description: +description: When creating products, accessibility can be an afterthought. Understandably, we want to ship our products fast and deliver value to our users. We might think that accessibility is needed for edge cases and therefore not prioritize it. date: 2022-11-14 cover: /images/pages/homepage/dashboard.png timeToRead: 3 @@ -9,7 +9,7 @@ author: arman category: accessibility, design --- -When creating products, accessibility can be an afterthought. Understandably, we want to ship our products fast and deliver value to our users. We might think that accessibility is needed for edge cases and therefore not prioritize it. It's good to be reminded that the World Health Organization (WHO) estimates that 16% of the global population has some form of disability (Dec 2022).Ignoring such a significant part of your user base simply doesn't create a good user experience.Creating accessible products is everyone's responsibility. Designers, developers, content authors, and whoever else is involved in creating products should do their part and strive towards achieving a better experience for everyone. +When creating products, accessibility can be an afterthought. Understandably, we want to ship our products fast and deliver value to our users. We might think that accessibility is needed for edge cases and therefore not prioritize it. It's good to be reminded that the World Health Organization (WHO) estimates that 16% of the global population has some form of disability (Dec 2022). Ignoring such a significant part of your user base simply doesn't create a good user experience.Creating accessible products is everyone's responsibility. Designers, developers, content authors, and whoever else is involved in creating products should do their part and strive towards achieving a better experience for everyone. It's not always easy to maintain a high level of accessibility, but it's definitely easier with a design system. The components we created in Pink Design, Appwrite's fully open source UI library, have an accessibility level of AA. This is the recommended level of accessibility for most products. diff --git a/src/routes/blog/post/add-a-search-function-to-your-app/+page.markdoc b/src/routes/blog/post/add-a-search-function-to-your-app/+page.markdoc index 53b7052bc6..9981e36f7c 100644 --- a/src/routes/blog/post/add-a-search-function-to-your-app/+page.markdoc +++ b/src/routes/blog/post/add-a-search-function-to-your-app/+page.markdoc @@ -20,9 +20,9 @@ Meilisearch is a flexible and powerful user-focused search engine that can be ad To use the function, you need the following set of keys: -- `APPWRITE_KEY` - API Key to talk to Appwrite backend APIs.To generate API Keys you can follow the documentation [here](https://appwrite.io/docs/getting-started-for-server#apiKey) +- `APPWRITE_KEY` - API Key to talk to Appwrite backend APIs.To generate API Keys you can follow the documentation [here](/docs/getting-started-for-server#apiKey) - `APPWRITE_ENDPOINT` - To get the Appwrite endpoint, you need to go to [Appwrite](https://cloud.appwrite.io/) and find it under “Settings” -- `APPWRITE_DATABASE_ID` - The ID of the Appwrite database that contains the collection to sync. You can find the documentation [here](https://appwrite.io/docs/databases). +- `APPWRITE_DATABASE_ID` - The ID of the Appwrite database that contains the collection to sync. You can find the documentation [here](/docs/databases). - `APPWRITE_COLLECTION_ID` - The ID of the collection in the Appwrite database to sync. To use Meilisearch, you can either self-host it using the command 👇 @@ -31,7 +31,7 @@ To use Meilisearch, you can either self-host it using the command 👇 curl -L [https://install.meilisearch.com](https://install.meilisearch.com/) | sh ``` -Or use [Meilisearch Cloud](https://www.meilisearch.com/cloud). For this example, we will assume that you are using Meilisearch Cloud. +Or use [Meilisearch Cloud](https://www.meilisearch.com/cloud). For this example, we will assume that you are using Meilisearch Cloud. Here’s the keys you need: @@ -40,7 +40,7 @@ Here’s the keys you need: ![Overview Meilisearch](/images/blog/add-a-search-function-to-your-app/functions.png) -- `MEILISEARCH_ADMIN_API_KEY` - This is the admin API key for Meilisearch. You will find it in the Meilisearch Console under “API Key”. +- `MEILISEARCH_ADMIN_API_KEY` - This is the admin API key for Meilisearch. You will find it in the Meilisearch Console under “API Key”. - `MEILISEARCH_SEARCH_API_KEY` - This is the API Key for Meilisearch search operations. To get this, you need you create a new index from the Meilisearch Console. Once created you will find it under `Overview` as `Default Search API Key` @@ -51,7 +51,7 @@ Here’s the keys you need: ![Keys](/images/blog/add-a-search-function-to-your-app/connect.png) - `MEILISEARCH_INDEX_NAME` - Name of the Meilisearch index to which the documents will be synchronized. For e.g, in the above picture, the Index name is `Newindex`. You can also find it under `Settings` as `Index Name`. - + ## Preparing the Function @@ -90,12 +90,12 @@ How can the *template* be extended ? Some examples are: 1. **Real-time Data Exploration:** It can be used to provide real-time search capabilities for datasets and data streams, allowing users to explore and analyze data in real-time. -2. **Content Management Systems:** The function template can be integrated into content management systems (CMS) to facilitate efficient content retrieval for editors and site visitors. +2. **Content Management Systems:** The function template can be integrated into content management systems (CMS) to facilitate efficient content retrieval for editors and site visitors. Be sure to check out the other available Function Templates. We’ve created multiple that could be of use in your projects. You can find the [templates GitHub repository here](https://github.com/appwrite/templates). For more information about Appwrite and Appwrite Functions: -1. **[Appwrite Function Docs](https://appwrite.io/docs/functions)**: These documents provide more information on how to use Appwrite Functions. +1. **[Appwrite Function Docs](/docs/functions)**: These documents provide more information on how to use Appwrite Functions. 2. **[Functions Announcement](https://dev.to/appwrite/serverless-your-way-unleashing-appwrite-functions-true-potential-2l4f)**: Read the full announcement on Functions 1.4. 3. **[Appwrite Discord](https://discord.com/invite/appwrite)**: Connect with other developers and the Appwrite team for discussion, questions, and collaboration. diff --git a/src/routes/blog/post/adding-url-shortener-function/+page.markdoc b/src/routes/blog/post/adding-url-shortener-function/+page.markdoc index 5f492d5374..3038b417e9 100644 --- a/src/routes/blog/post/adding-url-shortener-function/+page.markdoc +++ b/src/routes/blog/post/adding-url-shortener-function/+page.markdoc @@ -10,17 +10,17 @@ category: functions featured: false --- -Appwrite Functions are user-defined functions that can start small and scale big, deploying automatically from source control. With the introduction of function templates, you can quickly add new integrations into your app without writing additional code or managing infrastructure. Function templates are pre-built Appwrite Functions that can be integrated into your Appwrite project with just a few clicks. +Appwrite Functions are user-defined functions that can start small and scale big, deploying automatically from source control. With the introduction of function templates, you can quickly add new integrations into your app without writing additional code or managing infrastructure. Function templates are pre-built Appwrite Functions that can be integrated into your Appwrite project with just a few clicks. A URL shortener takes a long or complex URL and generates a shorter, more concise version. The primary purpose of a URL shortener function is to make links easier to share, manage, and remember. -For e.g https://dev.to/appwrite/introducing-appwrite-migrations-effortless-data-migration-from-your-platforms-5dhh to http://tinyurl.com/bd5usb3n +For e.g https://dev.to/appwrite/introducing-appwrite-migrations-effortless-data-migration-from-your-platforms-5dhh to http://tinyurl.com/bd5usb3n In this blog, we’ll learn to build a URL shortener using Appwrite Functions template. The template benefits from the built-in scalability, reliability, and security of Appwrite Functions. You can find the source code on our [templates GitHub repository](https://github.com/appwrite/templates/tree/main/node/url-shortener). # Setting up the Template -To get started, you need to navigate to the functions page on the **[Appwrite](https://appwrite.io/cloud)** console. From there, we will select the **Templates** tab, search for and select the **URL Shortener** function template. +To get started, you need to navigate to the functions page on the **[Appwrite](https://cloud.appwrite.io)** console. From there, we will select the **Templates** tab, search for and select the **URL Shortener** function template. ![Function template](/images/blog/adding-url-shortener/functions.png) @@ -55,6 +55,6 @@ Be sure to check out the other available Function Templates. We’ve created man For more information about Appwrite and Appwrite Functions: -1. **[Appwrite Function Docs](https://appwrite.io/docs/functions)**: These documents provide more information on how to use Appwrite Functions. +1. **[Appwrite Function Docs](/docs/functions)**: These documents provide more information on how to use Appwrite Functions. 2. **[Functions Announcement](https://dev.to/appwrite/serverless-your-way-unleashing-appwrite-functions-true-potential-2l4f)**: Read the full announcement on Functions 1.4. 3. **[Appwrite Discord](https://discord.com/invite/appwrite)**: Connect with other developers and the Appwrite team for discussion, questions, and collaboration. diff --git a/src/routes/blog/post/announcing-appwrite-is-gdpr-compliant/+page.markdoc b/src/routes/blog/post/announcing-appwrite-is-gdpr-compliant/+page.markdoc index 0630c86253..b285e7e34b 100644 --- a/src/routes/blog/post/announcing-appwrite-is-gdpr-compliant/+page.markdoc +++ b/src/routes/blog/post/announcing-appwrite-is-gdpr-compliant/+page.markdoc @@ -26,6 +26,6 @@ Here are some technical insights into how we enhance data security: As always, with Appwrite, developers can continue creating with peace of mind. Your personal data will not be mistreated. -Appwrite is also [HIPAA](https://appwrite.io/docs/advanced/security/hipaa) and [SOC 2](https://appwrite.io/docs/advanced/security/soc2) compliant as of April 24th, 2024. +Appwrite is also [HIPAA](/docs/advanced/security/hipaa) and [SOC 2](/docs/advanced/security/soc2) compliant as of April 24th, 2024. -Further resources: [Documentation](https://appwrite.io/docs/advanced/security/gdpr), [Privacy policy](https://appwrite.io/privacy) , [Cookie policy](https://appwrite.io/cookies) +Further resources: [Documentation](/docs/advanced/security/gdpr), [Privacy policy](/privacy) , [Cookie policy](/cookies) diff --git a/src/routes/blog/post/announcing-appwrite-is-hipaa-compliant/+page.markdoc b/src/routes/blog/post/announcing-appwrite-is-hipaa-compliant/+page.markdoc index 2b6a6cb912..6c40c2068d 100644 --- a/src/routes/blog/post/announcing-appwrite-is-hipaa-compliant/+page.markdoc +++ b/src/routes/blog/post/announcing-appwrite-is-hipaa-compliant/+page.markdoc @@ -28,9 +28,9 @@ So what did we do to comply? We’ve set measures and controls to maintain secur - Encryption of data transmitted between Appwrite and users using transport layer security (TLS) and HTTP strict Transport Security, ensuring confidentiality both at rest and during transmission. - Access to environments containing customer data is strictly controlled, requiring authentication and authorization through multi-factor authentication (MFA). -Appwrite safeguards personal information to the same extent it protects its own, complying with relevant privacy laws and regulations in the jurisdictions where its services are offered. +Appwrite safeguards personal information to the same extent it protects its own, complying with relevant privacy laws and regulations in the jurisdictions where its services are offered. Please note that while Appwrite Cloud serves as a HIPAA-compliant platform to handle data, it is the responsibility of developers to ensure that their application is also compliant with HIPAA regulations. -Looking for a HIPAA compliant backend provider? Or looking to replace Firebase? Appwrite can be your solution. Take a look at our [documentation](https://appwrite.io/docs/advanced/security) to learn more about our security. +Looking for a HIPAA compliant backend provider? Or looking to replace Firebase? Appwrite can be your solution. Take a look at our [documentation](/docs/advanced/security) to learn more about our security. diff --git a/src/routes/blog/post/announcing-appwrite-messaging/+page.markdoc b/src/routes/blog/post/announcing-appwrite-messaging/+page.markdoc index d2d44445f7..28422d7e21 100644 --- a/src/routes/blog/post/announcing-appwrite-messaging/+page.markdoc +++ b/src/routes/blog/post/announcing-appwrite-messaging/+page.markdoc @@ -1,7 +1,7 @@ --- layout: post title: "Announcing Messaging: Push, Email and SMS directly from your Appwrite backend" -description: +description: Appwrite is excited to announce Messaging, a new product that simplifies user communication for developers. With Messaging, you can send emails, SMS, and push notifications through a unified API, all within your Appwrite project. date: 2024-02-26 cover: /images/blog/messaging-announcement.png timeToRead: 6 diff --git a/src/routes/blog/post/announcing-appwrite-new-ai-integrations/+page.markdoc b/src/routes/blog/post/announcing-appwrite-new-ai-integrations/+page.markdoc index 5140c5638b..f32cc9c381 100644 --- a/src/routes/blog/post/announcing-appwrite-new-ai-integrations/+page.markdoc +++ b/src/routes/blog/post/announcing-appwrite-new-ai-integrations/+page.markdoc @@ -19,7 +19,7 @@ Let's examine the integrations, Function templates, and what's still to come. ## AI use cases and documentation -To make your life easier, we have added technical guides to our documentation covering [computer vision](https://appwrite.io/blog/post/state-of-computer-vision), [natural language processing](https://appwrite.io/blog/post/state-of-natural-language-processing), and [audio processing](https://appwrite.io/blog/post/state-of-audio-processing). These advanced tutorials explain how to use [AI and Appwrite](https://appwrite.io/docs/products/ai) in your projects. +To make your life easier, we have added technical guides to our documentation covering [computer vision](/blog/post/state-of-computer-vision), [natural language processing](/blog/post/state-of-natural-language-processing), and [audio processing](/blog/post/state-of-audio-processing). These advanced tutorials explain how to use [AI and Appwrite](/docs/products/ai) in your projects. ![AI docs](/images/blog/ai-docs.png) @@ -27,22 +27,22 @@ To make your life easier, we have added technical guides to our documentation co We've also added support for many AI tools so you can integrate them into your projects. You will find step-by-step tutorials for each integration in our documentation. So far, we have added integrations and tutorials for: -- [Pinecone](https://appwrite.io/docs/products/ai/integrations/pinecone) -- [OpenAI](https://appwrite.io/docs/products/ai/integrations/openai) +- [Pinecone](/docs/products/ai/integrations/pinecone) +- [OpenAI](/docs/products/ai/integrations/openai) - Hugging Face -- [ElevenLabs](https://appwrite.io/docs/products/ai/integrations/elevenlabs) -- [Perplexity](https://appwrite.io/docs/products/ai/integrations/perplexity) -- [Replicate](https://appwrite.io/docs/products/ai/integrations/replicate) -- [fal.ai](http://fal.aihttps://appwrite.io/docs/products/ai/integrations/fal-ai) -- [LangChain](https://appwrite.io/docs/products/ai/integrations/langchain) -- [Together AI](https://appwrite.io/docs/products/ai/integrations/togetherai) +- [ElevenLabs](/docs/products/ai/integrations/elevenlabs) +- [Perplexity](/docs/products/ai/integrations/perplexity) +- [Replicate](/docs/products/ai/integrations/replicate) +- [fal.ai](/docs/products/ai/integrations/fal-ai) +- [LangChain](/docs/products/ai/integrations/langchain) +- [Together AI](/docs/products/ai/integrations/togetherai) - Anyscale ## AI powered Function templates -Function templates are pre-built Appwrite [Function](https://appwrite.io/docs/products/functions) that can be integrated into your Appwrite project with just a few clicks. With templates, you can easily incorporate new features and integrations into your app without writing additional code or managing infrastructure. +Function templates are pre-built Appwrite [Function](/docs/products/functions) that can be integrated into your Appwrite project with just a few clicks. With templates, you can easily incorporate new features and integrations into your app without writing additional code or managing infrastructure. -We have templates for your favorite AI tools, like OpenAI, LangChain, HuggingFace, and many more, covering many use cases, such as building an [intelligent chatbot](https://appwrite.io/blog/post/function-template-prompt-chatgpt) using OpenAI. +We have templates for your favorite AI tools, like OpenAI, LangChain, HuggingFace, and many more, covering many use cases, such as building an [intelligent chatbot](/blog/post/function-template-prompt-chatgpt) using OpenAI. Find the full overview on your console under the `Templates` tab in `Fuctions`. Filter function templates by the `AI` use case and select the AI function template that you need. diff --git a/src/routes/blog/post/announcing-appwrite-pro/+page.markdoc b/src/routes/blog/post/announcing-appwrite-pro/+page.markdoc index 87365fdf08..52ed124623 100644 --- a/src/routes/blog/post/announcing-appwrite-pro/+page.markdoc +++ b/src/routes/blog/post/announcing-appwrite-pro/+page.markdoc @@ -10,7 +10,7 @@ category: cloud featured: false --- -After [announcing our pricing plans](https://appwrite.io/blog/post/announcing-pricing) for Appwrite Cloud in August, we have reached another milestone as we roll out billing and welcome our newest addition to Appwrite Cloud, Appwrite Pro. A new product offering that allows you to build with more confidence. +After [announcing our pricing plans](/blog/post/announcing-pricing) for Appwrite Cloud in August, we have reached another milestone as we roll out billing and welcome our newest addition to Appwrite Cloud, Appwrite Pro. A new product offering that allows you to build with more confidence. While Appwrite Cloud is still in beta, Appwrite Pro is a new chapter we write together. Pro will help us add more features and capabilities to Appwrite, making app development more accessible and enjoyable for developers like you. @@ -21,9 +21,9 @@ Previously, all Appwrite Cloud developers used the Starter plan with unrestricte - Starter: a free plan that provides an easy starting point for budding projects - Pro: a paid plan that offers more resources and premium support -As we explained in depth in our [Pricing announcement](https://appwrite.io/blog/post/announcing-pricing), our pricing plans are based on a set of guiding principles we created, which we call the “Value Framework.” It guided us through determining the resources in a Pro plan and a fair price. It focuses on delivering the maximum value for you without compromising on the affordability and accessibility of our products and services. +As we explained in depth in our [Pricing announcement](/blog/post/announcing-pricing), our pricing plans are based on a set of guiding principles we created, which we call the “Value Framework.” It guided us through determining the resources in a Pro plan and a fair price. It focuses on delivering the maximum value for you without compromising on the affordability and accessibility of our products and services. -Pro gives you much more room and flexibility to build, scale, and maintain your apps compared to the Starter plan. Here is a snapshot of the differences in resources and support for Appwrite Starter and Appwrite Pro. You can find the complete overview on our [pricing page](https://appwrite.io/pricing#:~:text=Contact%20us-,Compare%20plans,-Discover%20our%20plans). +Pro gives you much more room and flexibility to build, scale, and maintain your apps compared to the Starter plan. Here is a snapshot of the differences in resources and support for Appwrite Starter and Appwrite Pro. You can find the complete overview on our [pricing page](/pricing). {% table %} * Appwrite Starter @@ -102,7 +102,7 @@ Early adopters of Appwrite Cloud may already have a large number of organization - Upgrade additional organizations to the Pro plan using your early adopters’ credit. - Move your projects using the **Transfer project** feature in your project’s settings. -- [Migrate](https://appwrite.io/docs/advanced/migrations/cloud) your Appwrite Cloud projects to a self-hosted instance. +- [Migrate](/docs/advanced/migrations/cloud) your Appwrite Cloud projects to a self-hosted instance. We appreciate the support and feedback from early Cloud adopters. These options should help you transition smoothly as we roll out Appwrite Pro. @@ -110,7 +110,7 @@ We appreciate the support and feedback from early Cloud adopters. These options Open-source software forms the foundation of modern software technologies. As lovers and builders of open-source software, we understand and appreciate the difficulty of building in the open. We’re fortunate to have the opportunity to build open-source software sustainably, and we can’t wait to give back. -Like our previous initiatives, such as the OSS Fund, Appwrite Cloud will also support open-source developers. OSS maintainers can use Appwrite to build and maintain their projects on the Appwrite Pro plan for free. Please reach out on our [contact page](https://apwr.dev/OSSplan) to enquire about this plan. As always, Appwrite also remains open-sourced and free to [self-host](https://appwrite.io/docs/advanced/self-hosting). +Like our previous initiatives, such as the OSS Fund, Appwrite Cloud will also support open-source developers. OSS maintainers can use Appwrite to build and maintain their projects on the Appwrite Pro plan for free. Please reach out on our [contact page](https://apwr.dev/OSSplan) to enquire about this plan. As always, Appwrite also remains open-sourced and free to [self-host](/docs/advanced/self-hosting). Appwrite Pro is just the start. We will continue developing our product offering to match your growing needs and capabilities and are excited to see your projects succeed with Appwrite Cloud. While you benefit from everything Appwrite Pro has to offer, you also become advocates in our mission to make software development accessible and enjoyable for all. @@ -125,5 +125,5 @@ Together, we build like a team of hundreds_ In case you need help upgrading, transferring your projects, or have billing and budget cap queries, please find the following resources: - [FAQ on pricing page](https://apwr.dev/pricingFAQ) -- [Project migration](https://appwrite.io/docs/advanced/migrations/cloud) +- [Project migration](/docs/advanced/migrations/cloud) - [Discord support](https://appwrite.io/discord) diff --git a/src/routes/blog/post/appwrite-decoded-bradley-schofield/+page.markdoc b/src/routes/blog/post/appwrite-decoded-bradley-schofield/+page.markdoc index 9c671edd35..fb70ea77d8 100644 --- a/src/routes/blog/post/appwrite-decoded-bradley-schofield/+page.markdoc +++ b/src/routes/blog/post/appwrite-decoded-bradley-schofield/+page.markdoc @@ -1,7 +1,7 @@ --- layout: post title: "Appwrite Decoded: Bradley Schofield" -description: In this blog, we put Bradley Schofield in the spotlight and share his side of the story. +description: In this blog, we put Bradley Schofield in the spotlight and share his side of the story. cover: /images/blog/appwrite-decoded-bradley/bradley-cover.png timeToRead: 4 date: 2024-02-08 @@ -15,23 +15,23 @@ This week, we shed light on Bradley, the youngest team member at Appwrite but, a ## From college dropout to skilled dev -Bradley’s story is interesting but not uncommon in the software industry. He started on a computer science degree in college, only to drop out. In his own words: *“They weren’t teaching me anything new.”* +Bradley’s story is interesting but not uncommon in the software industry. He started on a computer science degree in college, only to drop out. In his own words: *“They weren’t teaching me anything new.”* -He moved on to do an apprenticeship for more hands-on experience, but soon after, he left to join Appwrite. Eldad, Founder and CEO of Appwrite, asked him to join due to his many valuable contributions to the product at the time, including projects that showcase Appwrite's versatility through [integrations](https://appwrite.io/docs/quick-starts) with various web frameworks such as React, Vue, Svelte, among others. +He moved on to do an apprenticeship for more hands-on experience, but soon after, he left to join Appwrite. Eldad, Founder and CEO of Appwrite, asked him to join due to his many valuable contributions to the product at the time, including projects that showcase Appwrite's versatility through [integrations](/docs/quick-starts) with various web frameworks such as React, Vue, Svelte, among others. > “Eldad approached me and asked if I wanted to interview for the role. I simply could not refuse, and it has been a blast ever since!”* -Delivering new features and providing solutions for developers is what Bradley finds most satisfying in his role. His interest lies in backend development and data analytics, but he enjoys constant learning and adapting to new challenges, integrating them into Appwrite in the most compatible way. This also made him a more than welcome addition to the Appwrite team. His eagerness to learn and positive attitude toward difficult tasks has helped him build products beyond his expectations, as demonstrated by his significant contributions to [Functions](https://appwrite.io/docs/products/functions) and [Migrations](https://appwrite.io/docs/advanced/migrations). +Delivering new features and providing solutions for developers is what Bradley finds most satisfying in his role. His interest lies in backend development and data analytics, but he enjoys constant learning and adapting to new challenges, integrating them into Appwrite in the most compatible way. This also made him a more than welcome addition to the Appwrite team. His eagerness to learn and positive attitude toward difficult tasks has helped him build products beyond his expectations, as demonstrated by his significant contributions to [Functions](/docs/products/functions) and [Migrations](/docs/advanced/migrations). -Working at Appwrite has equipped Bradley with various skills and knowledge, particularly in understanding the dynamics of the developer community. +Working at Appwrite has equipped Bradley with various skills and knowledge, particularly in understanding the dynamics of the developer community. > “Before working at Appwrite, I wasn’t really aware of the developer community, I didn’t even know what a DevRel role was! Once you experience the community from within, you gain a whole new perspective.” ## Achieving more with a team -When it comes to being part of a team, Bradley believes it empowers you to tackle projects far greater than you could achieve alone. +When it comes to being part of a team, Bradley believes it empowers you to tackle projects far greater than you could achieve alone. -> “It’s really important and truly empowering. It gives you the confidence to take on larger projects and pushes you forward regarding abilities.” +> “It’s really important and truly empowering. It gives you the confidence to take on larger projects and pushes you forward regarding abilities.” Discussing challenging tasks with his team members often results in solutions that seem far more attainable. @@ -39,31 +39,31 @@ Transparency and an ambitious mindset are among the aspects of Appwrite that Bra ## Working from anywhere in the world -Bradley acknowledges that remote work may be a different experience for each person, and he believes the benefits outweigh the drawbacks. He particularly appreciates the flexibility and freedom it offers: +Bradley acknowledges that remote work may be a different experience for each person, and he believes the benefits outweigh the drawbacks. He particularly appreciates the flexibility and freedom it offers: -> "The biggest perk for me is the ability to work from anywhere. Pretty much any place can be your office, which is a huge advantage." +> "The biggest perk for me is the ability to work from anywhere. Pretty much any place can be your office, which is a huge advantage." -The flexibility to spontaneously travel to a different city at any moment and continue working as if nothing had changed is a huge advantage for him. The friendly atmosphere within the team only adds an extra layer of appeal. +The flexibility to spontaneously travel to a different city at any moment and continue working as if nothing had changed is a huge advantage for him. The friendly atmosphere within the team only adds an extra layer of appeal. As colleagues frequently extend invitations to visit them in other locations, with the assurance that it won't disrupt his work schedule. -However, he also acknowledges the potential social isolation and the challenge of staying focused while surrounded by a computer all day. His advice is to maintain a healthy balance: +However, he also acknowledges the potential social isolation and the challenge of staying focused while surrounded by a computer all day. His advice is to maintain a healthy balance: > "Stay active, strike a balance between work and personal life, spend time with loved ones, and don't forget to recharge!" ## New runtimes, frameworks, and knowledge -Bradley likes working with the latest [runtimes](https://appwrite.io/docs/products/functions/runtimes) and frameworks, and he very much enjoys the opportunity to explore new horizons every day. His overarching goal is to continuously expand his knowledge and expertise as a developer, helping fellow developers along the way. +Bradley likes working with the latest [runtimes](/docs/products/functions/runtimes) and frameworks, and he very much enjoys the opportunity to explore new horizons every day. His overarching goal is to continuously expand his knowledge and expertise as a developer, helping fellow developers along the way. > “I do a lot of research on various topics and come up with feature ideas that we often turn into reality. It's always exciting to see what new project lies ahead, as I'm always eager to try new things. Most recently, I've been particularly interested in exploring machine learning.” -Introducing new functions stands out among Bradley's many proud moments at Appwrite. +Introducing new functions stands out among Bradley's many proud moments at Appwrite. > "We used to support only dynamic languages, but now we can handle compiled languages like C++." -For anyone who wants to be a part of Appwrite, Bradley invites you to [contribute](https://appwrite.io/community). +For anyone who wants to be a part of Appwrite, Bradley invites you to [contribute](/community). -> ”Start working on it, don't wait for opportunities to come knocking. Make them happen!” +> ”Start working on it, don't wait for opportunities to come knocking. Make them happen!” Want to know more about Bradley? Visit his social profiles: diff --git a/src/routes/blog/post/appwrite-decoded-dennis-ivy/+page.markdoc b/src/routes/blog/post/appwrite-decoded-dennis-ivy/+page.markdoc index 05bbefbc50..e477aca49b 100644 --- a/src/routes/blog/post/appwrite-decoded-dennis-ivy/+page.markdoc +++ b/src/routes/blog/post/appwrite-decoded-dennis-ivy/+page.markdoc @@ -1,7 +1,7 @@ --- layout: post title: "Appwrite Decoded: Dennis Ivy" -description: In this blog, we put Dennis Ivy in the spotlight and share his side of the story. +description: In this blog, we put Dennis Ivy in the spotlight and share his side of the story. cover: /images/blog/appwrite-decoded-dennis/dennis-cover.png timeToRead: 12 date: 2024-04-22 @@ -15,10 +15,10 @@ In this blog, we'll walk you through the career journey of Dennis Ivy, one of ou # From self taught to teaching others -Dennis, fueled by his passion for technology, turned his self-taught coding skills into a dynamic career, all without the formal education you might expect. His journey kicked off not in a classroom but from a deep curiosity. Dennis dove headfirst into the coding world, motivated by the goal of launching his own online businesses. It wasn't just about building for companies; it was about mastering the process of creation and then sharing that knowledge with anybody who needs it. +Dennis, fueled by his passion for technology, turned his self-taught coding skills into a dynamic career, all without the formal education you might expect. His journey kicked off not in a classroom but from a deep curiosity. Dennis dove headfirst into the coding world, motivated by the goal of launching his own online businesses. It wasn't just about building for companies; it was about mastering the process of creation and then sharing that knowledge with anybody who needs it. > "I started coding out of pure curiosity, and before I knew it, I was hooked. Building projects was exciting, but sharing what I learned was the real game changer.” -> +> He took this passion to [YouTube](https://www.youtube.com/@DennisIvy), creating a space where he could pass on his experiences, turning every tutorial into a collaborative learning journey. @@ -27,82 +27,82 @@ He took this passion to [YouTube](https://www.youtube.com/@DennisIvy), creating Dennis's path was anything but traditional. Drawn to the endless possibilities of digital spaces, he saw a chance to break free from the traditional physical business model and reach people on a global scale. > "The digital world was like a vast ocean, and I just had to learn how to sail it. The potential to scale and connect was limitless.” -> +> This insight led him to explore digital marketing and web development, eventually founding a digital marketing and web development agency. While operating his agency for several years, he gained experience managing and growing a business. -Now, as a developer advocate, Dennis continues to share, connect, and inspire. What he values most about his job is the balance it offers. +Now, as a developer advocate, Dennis continues to share, connect, and inspire. What he values most about his job is the balance it offers. > "It's like being in a sandbox, but the castles I build now can reach and teach others.” -> +> -This blend of independence and the opportunity to work remotely allows him to control his routine while still engaging deeply with the community. The joy of his work comes not just from the projects he completes but from the lightbulb moments he witnesses in others as they grasp the once challenging concepts of coding. +This blend of independence and the opportunity to work remotely allows him to control his routine while still engaging deeply with the community. The joy of his work comes not just from the projects he completes but from the lightbulb moments he witnesses in others as they grasp the once challenging concepts of coding. > "It's being able to actually see people take a concept that was difficult to understand and then have that 'aha' moment of 'wow, I finally understand what I'm trying to learn.'" -> +> # Choosing passion over routine -Before Dennis switched to Appwrite, in his old gig, things were okay on paper—nice paycheck, stable job—but it was like walking down the same road every day, never really getting satisfied. It wasn't about the money for him; it was about finding work that made him actually want to get out of bed in the morning, something that sparked a bit of fire in his eyes. That's exactly what he found at Appwrite. +Before Dennis switched to Appwrite, in his old gig, things were okay on paper—nice paycheck, stable job—but it was like walking down the same road every day, never really getting satisfied. It wasn't about the money for him; it was about finding work that made him actually want to get out of bed in the morning, something that sparked a bit of fire in his eyes. That's exactly what he found at Appwrite. > "Landing at Appwrite was like catching the perfect wave. I saw this product, and I just knew it was going to make some serious noise in the industry.” > ![Dennis career update](/images/blog/appwrite-decoded-dennis/dennis-career-update.png) -For Dennis, Appwrite boils down to three big ideas: open source, community, and, yeah, excitement. Open source is the heartbeat of Appwrite—it's about doing things together, out in the open, making something cool that everyone can be a part of. +For Dennis, Appwrite boils down to three big ideas: open source, community, and, yeah, excitement. Open source is the heartbeat of Appwrite—it's about doing things together, out in the open, making something cool that everyone can be a part of. > "It's teamwork, through and through.” -> +> At Appwrite, it's never just another day at work; it's another chance to dive into something that really matters with a team that's all about pushing boundaries. -Appwrite's focus on [community](https://appwrite.io/community) stands out, from the active engagement on the Discord server to the support of educational meetups. +Appwrite's focus on [community](/community) stands out, from the active engagement on the Discord server to the support of educational meetups. > "I've never been part of a company this dedicated to its community.” -> +> This commitment to building a supportive environment was recognized when Appwrite received the Best DevRel Team award in 2023, a clear nod to our exceptional community engagement. ![Dennis DevRel post](/images/blog/appwrite-decoded-dennis/dennis-post-devrel.png) -Dennis is excited about Appwrite’s future, especially considering the competitive field with some big names in the industry. It's not just about being in the ring with the giants; it’s the excitement of innovation and the commitment to introducing bold and ambitious products that drive him. +Dennis is excited about Appwrite’s future, especially considering the competitive field with some big names in the industry. It's not just about being in the ring with the giants; it’s the excitement of innovation and the commitment to introducing bold and ambitious products that drive him. > “Tackling projects that might look a bit intimidating or complex, but have the potential to leave a mark? That's what fires me up. Imagining all the cool stuff we can achieve looking forward—now that's a vision I get behind.” -> +> # Finding a new perspective on development -Before teaming up with Appwrite, Dennis rarely had [back-end as a service](https://appwrite.io/blog/post/leveraging-baas-tools-to-scale-faster) (BaaS) tools on his radar. As a die-hard back-end engineer, he was a bit skeptical. He questioned how these tools would fit into his skill set and workflow. Appwrite turned those doubts into a definitive yes, proving that such tools could boost efficiency and speed, complementing his skills rather than constraining them. +Before teaming up with Appwrite, Dennis rarely had [back-end as a service](/blog/post/leveraging-baas-tools-to-scale-faster) (BaaS) tools on his radar. As a die-hard back-end engineer, he was a bit skeptical. He questioned how these tools would fit into his skill set and workflow. Appwrite turned those doubts into a definitive yes, proving that such tools could boost efficiency and speed, complementing his skills rather than constraining them. > "Initially, I was all about refining and expanding back-ends on my own. Appwrite shifted my focus, encouraging a broader, product-centric perspective over mere code perfection." -> +> -In terms of teamwork, Dennis views it through a pragmatic lens. It's not about keeping everyone occupied with tasks; it’s about strategic synergy, aligning tasks with individual strengths to optimize the team's output. This approach not only boosts efficiency but also fosters an atmosphere where each member gets to be the star in their domain. +In terms of teamwork, Dennis views it through a pragmatic lens. It's not about keeping everyone occupied with tasks; it’s about strategic synergy, aligning tasks with individual strengths to optimize the team's output. This approach not only boosts efficiency but also fosters an atmosphere where each member gets to be the star in their domain. > "We lean into our strengths—everyone brings their A-game, making us unstoppable as a unit." > ![Dennis team post](/images/blog/appwrite-decoded-dennis/dennis-post-team.png) -One of Dennis's standout abilities is his knack for spotting areas within projects that need fine-tuning. Being both a user and an advocate of Appwrite gives him a dual perspective; he sees things from a user’s angle, which means he’s on the front line for catching glitches or figuring out what could be better. This skill comes in handy, especially when it’s time to level up content. Whether it’s filling in the blanks in a guide or adding the missing piece to a video, Dennis has an eye for what’s needed. He’s all about creating content that doesn’t just talk at users but really speaks to them, breaking down Appwrite's ins and outs into something everyone can grasp. His goal? To ensure everyone understands what Appwrite can do and how to make the most of it. +One of Dennis's standout abilities is his knack for spotting areas within projects that need fine-tuning. Being both a user and an advocate of Appwrite gives him a dual perspective; he sees things from a user’s angle, which means he’s on the front line for catching glitches or figuring out what could be better. This skill comes in handy, especially when it’s time to level up content. Whether it’s filling in the blanks in a guide or adding the missing piece to a video, Dennis has an eye for what’s needed. He’s all about creating content that doesn’t just talk at users but really speaks to them, breaking down Appwrite's ins and outs into something everyone can grasp. His goal? To ensure everyone understands what Appwrite can do and how to make the most of it. > “I’m here to make sure our content not only covers everything Appwrite is capable of but also actually helps you use it.” > ![Dennis setup](/images/blog/appwrite-decoded-dennis/dennis-setup.png) -Finding his place at Appwrite has been a game-changer for Dennis. No more feeling stuck in a box or like he’s just going through the motions. Here, he’s found the space to shine, contributing big ways to content and how the product shapes up. It’s the kind of work that motivates him to get up in the morning, knowing he’s part of a team that truly values his contributions. +Finding his place at Appwrite has been a game-changer for Dennis. No more feeling stuck in a box or like he’s just going through the motions. Here, he’s found the space to shine, contributing big ways to content and how the product shapes up. It’s the kind of work that motivates him to get up in the morning, knowing he’s part of a team that truly values his contributions. > “I’m all in on what we’re building here, dedicating hours because it matters—to me, to the team, and to our users.” > ![Dennis github universe event](/images/blog/appwrite-decoded-dennis/dennis-github-universe.png) -What Dennis has achieved so far at Appwrite is a strong indicator of what he is up to in the future. What's at the top of his list? The revival of Appwrite's [YouTube channel](https://www.youtube.com/appwrite) and deeper engagement with its tools led to a significant uptick in audience growth—almost doubling since he began contributing to video content. This initiative not only raised awareness about the platform's educational resources but also marked a personal milestone in his career. +What Dennis has achieved so far at Appwrite is a strong indicator of what he is up to in the future. What's at the top of his list? The revival of Appwrite's [YouTube channel](https://www.youtube.com/appwrite) and deeper engagement with its tools led to a significant uptick in audience growth—almost doubling since he began contributing to video content. This initiative not only raised awareness about the platform's educational resources but also marked a personal milestone in his career. > “I’m definitely proud of the fact that I've brought awareness there, and seeing the community grow is incredibly rewarding." -> +> Another highlight for him was taking the stage in New York, representing Appwrite at a conference—a moment where he got to share the essence of Appwrite with a broader audience, feeling a deep sense of accomplishment. @@ -111,22 +111,22 @@ Another highlight for him was taking the stage in New York, representing Appwrit His vision for Appwrite is ambitious yet clear: positioning it as the foremost choice for back-end services. > "I'm all in on making Appwrite the top pick for anyone needing back-end services." -> +> His game plan involves not just showcasing its solid features but also ensuring it’s known for top-notch developer education and an unbeatable user experience. His dedication is all about shining a spotlight on Appwrite, ensuring it's recognized as an essential player in the tech arena. ![Dennis github post](/images/blog/appwrite-decoded-dennis/dennis-post-github.png) -On the personal front, Dennis is entering into exciting new territory. A publishing house has expressed interest in his expertise on various topics, presenting him with an opportunity to broaden his influence. He has already started working on the preliminary content, dedicating his energy to this new project, which has the potential to share his insights and experiences on a wider scale. +On the personal front, Dennis is entering into exciting new territory. A publishing house has expressed interest in his expertise on various topics, presenting him with an opportunity to broaden his influence. He has already started working on the preliminary content, dedicating his energy to this new project, which has the potential to share his insights and experiences on a wider scale. > “I’m excited to develop content that resonates and educates.” -> +> # Work from home, don’t live at work Dennis has a keen perspective on remote work life. It’s certainly a mixed bag. The absence of face-to-face communication is deeply felt, as it removes the nuanced understanding and connection from physically sharing space with colleagues. -However, the advantages of remote work shine through, especially in how it enables organizations to scale rapidly and tap into talent beyond geographical boundaries. Appwrite, by embracing remote work, spans multiple time zones, enhances operational efficiency and offers team members the flexibility to tailor their work schedules. +However, the advantages of remote work shine through, especially in how it enables organizations to scale rapidly and tap into talent beyond geographical boundaries. Appwrite, by embracing remote work, spans multiple time zones, enhances operational efficiency and offers team members the flexibility to tailor their work schedules. > "Discovering talent from the comfort of your own living room? That's invaluable. It's how we manage to be everywhere, all at once." > @@ -135,40 +135,40 @@ However, the advantages of remote work shine through, especially in how it enabl For Dennis, flexibility isn’t just about geographic freedom; it's about redefining productivity on one's own terms and escaping the 9-to-5 mold. Appwrite's culture supports this vision with daily check-ins that ensure accountability. Dennis appreciates how these practices reinforce team focus and cohesion. -Maintaining personal discipline and a distinct separation between work and home life is essential, Dennis advises. For those balancing family responsibilities, setting clear boundaries ensures that work concerns don’t encroach on personal time and vice versa. +Maintaining personal discipline and a distinct separation between work and home life is essential, Dennis advises. For those balancing family responsibilities, setting clear boundaries ensures that work concerns don’t encroach on personal time and vice versa. > “Keeping my home free from work stress is important. I separate professional discussions from my personal life until the workday ends.” -> +> -It’s also about creating a dedicated workspace that’s all business during work hours. For Dennis, this means rituals like dressing for work, even if the commute is just across the hallway. +It’s also about creating a dedicated workspace that’s all business during work hours. For Dennis, this means rituals like dressing for work, even if the commute is just across the hallway. > Respecting the work you do, no matter the location, is crucial. Even for minor calls, I make sure to look presentable. It's about blending the professional feel of an office with the comfort of home—the best of both worlds.” -> +> This approach not only boosts his productivity but also preserves a healthy balance between work obligations and personal life. # From insight to impact, advocating to the community -Dennis is genuinely proud to represent Appwrite, cherishing the chance to engage directly with users and watch their journey from confusion to clarity. Witnessing users reach that "aha" moment, where everything clicks and they see the full potential of what they can do with the product, is a highlight for him. +Dennis is genuinely proud to represent Appwrite, cherishing the chance to engage directly with users and watch their journey from confusion to clarity. Witnessing users reach that "aha" moment, where everything clicks and they see the full potential of what they can do with the product, is a highlight for him. > "It's incredible to see users evolve from a place of uncertainty about what we offer to a point where they grasp the potential of what they can create with us. That’s a big win in my book." -> +> This aspect of community engagement doesn't just show him the direct impact of his work; it’s a major source of joy. -In his interactions with the community, Dennis treasures the mosaic of experiences and backgrounds he comes across. From industry veterans with years of wisdom to eager beginners just starting their journey, and resilient individuals navigating career changes, each interaction is a chance to connect, share insights, and offer support, enriching his understanding of the tech community’s diverse landscape. +In his interactions with the community, Dennis treasures the mosaic of experiences and backgrounds he comes across. From industry veterans with years of wisdom to eager beginners just starting their journey, and resilient individuals navigating career changes, each interaction is a chance to connect, share insights, and offer support, enriching his understanding of the tech community’s diverse landscape. > "Getting to really connect, learn who they are, share stories, and sometimes offer a piece of advice—there’s excitement in that. The tech community is a vast, vibrant mix of people from every possible background. Engaging with such a broad spectrum is genuinely uplifting.” > ![Dennis nextjs post](/images/blog/appwrite-decoded-dennis/dennis-nextjs.png) -Stepping into Appwrite isn’t for those who shy away from a challenge, as Dennis points out: +Stepping into Appwrite isn’t for those who shy away from a challenge, as Dennis points out: > “If you’re coming on board, be ready to hit the ground running.” -> +> -This isn’t just any routine job; Appwrite is built on a culture of proactive engagement and meaningful contribution. For those eyeing a spot in this dynamic crew, Dennis advises preparing themselves for an immersive experience. At Appwrite, every opinion matters, and ideas are not just acknowledged—they're brought to life. This approach stands in sharp contrast to environments where feedback might silently disappear into the void. The ethos here champions meaningful involvement, where each team member plays a crucial role in driving the product forward. +This isn’t just any routine job; Appwrite is built on a culture of proactive engagement and meaningful contribution. For those eyeing a spot in this dynamic crew, Dennis advises preparing themselves for an immersive experience. At Appwrite, every opinion matters, and ideas are not just acknowledged—they're brought to life. This approach stands in sharp contrast to environments where feedback might silently disappear into the void. The ethos here champions meaningful involvement, where each team member plays a crucial role in driving the product forward. > “So, yes, gear up for some real work, expect to get your hands dirty, but also know that your ideas will pave the path.” > @@ -178,12 +178,12 @@ This isn’t just any routine job; Appwrite is built on a culture of proactive e For developers, professionals, or anyone stepping into new territory, Dennis’s advice is straightforward yet profound: > “Waiting for the stars to align? Don’t. Just dive in.” -> +> -Whether it's launching into a project, gearing up for an interview, or mastering a new skill, the notion of being fully prepared is a myth, and hesitancy can be a barrier to progress. Procrastination often masquerades as preparation. +Whether it's launching into a project, gearing up for an interview, or mastering a new skill, the notion of being fully prepared is a myth, and hesitancy can be a barrier to progress. Procrastination often masquerades as preparation. > “This isn’t just about coding but applies to many walks of life; whatever you're doing, go for it.” -> +> If you’re looking to learn more about Dennis or connect with him, visit his social profiles: diff --git a/src/routes/blog/post/appwrite-decoded-khushboo-verma/+page.markdoc b/src/routes/blog/post/appwrite-decoded-khushboo-verma/+page.markdoc index 6f9c270b39..1df818be50 100644 --- a/src/routes/blog/post/appwrite-decoded-khushboo-verma/+page.markdoc +++ b/src/routes/blog/post/appwrite-decoded-khushboo-verma/+page.markdoc @@ -1,7 +1,7 @@ --- layout: post title: "Appwrite Decoded: Khushboo Verma" -description: In this blog, we put Khushboo Verma in the spotlight and share her side of the story. +description: In this blog, we put Khushboo Verma in the spotlight and share her side of the story. cover: /images/blog/appwrite-decoded-khushboo/khushboo-cover.png timeToRead: 10 date: 2024-03-21 @@ -15,22 +15,22 @@ In this episode we will take you through Khushboo Verma’s career journey, a so # On and off campus advocate -Khushboo earned her degree in computer science engineering from one of the largest all-women's universities in Asia. However, her university life was about more than just hitting the books. It was about fostering a sense of community. +Khushboo earned her degree in computer science engineering from one of the largest all-women's universities in Asia. However, her university life was about more than just hitting the books. It was about fostering a sense of community. > "I led numerous workshops on campus and worked to build communities not just within our university but also at a state level.” -> +> -She recognized the potential among women and was instrumental in proving that software engineering wasn't just a man's world. +She recognized the potential among women and was instrumental in proving that software engineering wasn't just a man's world. > "In our university, women were very hardworking and had access to the right opportunities, something that wasn't quite the same in other universities. So, through communities, I tried to bridge that gap as much as possible and always advocated for diversity and inclusion.” -> +> Khushboo didn't stop there. She actively engaged in several community programs, like the Microsoft Student Ambassador and Google Machine Learning programs. These experiences expanded her horizon beyond the university walls, keeping her in the loop with the latest tech trends and what everyone was exploring in their spare time. Landing internships at big names like Microsoft and Adobe as a software engineer and product intern, respectively, was just the icing on the cake. These opportunities didn't just add to her resume, but they advanced her career forward, offering valuable experience in the dynamic tech landscape. ![Khushboo git](/images/blog/appwrite-decoded-khushboo/khushboo-git.png) > "All of this motivated me to contribute more to the software engineering space, a field I truly love." -> +> After graduating, she joined Microsoft full-time as a software engineer and explored the cloud computing space working with the Azure storage team. But despite her new role, she still was eager to be involved with the community. During this period, she also got the opportunity to speak publicly. From international stages at Microsoft Ignite and Microsoft Build to Pycon India, she was there, sharing her knowledge, leading hands-on coding workshops, and everything in between. @@ -41,12 +41,12 @@ After graduating, she joined Microsoft full-time as a software engineer and expl ![Khushboo campus expert](/images/blog/appwrite-decoded-khushboo/khushboo-campus-expert.png) -So, why does she pour so much into community work? It's about giving back to the place that gave her so much. +So, why does she pour so much into community work? It's about giving back to the place that gave her so much. > “I believe communities have this amazing power to lift people up, to help them become the best version of themselves. That's been true for me, so I see it as my responsibility to give it back." -> +> -This connection to her community isn't just a side project, it's a core part of who Khushboo is. +This connection to her community isn't just a side project, it's a core part of who Khushboo is. > "It's more than just work. It's a passion that's really close to my heart.” > @@ -55,7 +55,7 @@ This connection to her community isn't just a side project, it's a core part of # Joining Appwrite through community -Her journey to Appwrite is nothing short of inspirational. Back when she was hosting a podcast called "Tech Interviews Simplified" for GitHub Education, she had the chance to invite Aditya, a Developer Advocate from Appwrite, to discuss DevRel roles. Eldad, the CEO of Appwrite, also joined the live stream to support Aditya, setting the stage for what was to come. +Her journey to Appwrite is nothing short of inspirational. Back when she was hosting a podcast called "Tech Interviews Simplified" for GitHub Education, she had the chance to invite Aditya, a Developer Advocate from Appwrite, to discuss DevRel roles. Eldad, the CEO of Appwrite, also joined the live stream to support Aditya, setting the stage for what was to come. > "After the show wrapped up, Aditya and I had a great conversation about Appwrite, his reasons for joining, and where I could dive deeper into learning about it.” > @@ -66,36 +66,36 @@ When the time came for a new challenge post-Microsoft, she remembered that conve ![Khushboo post career update](/images/blog/appwrite-decoded-khushboo/khushboo-career-update.png) -Her favorite part about working at Appwrite? It's the opportunity to shoulder a lot of responsibility. This keeps her learning journey continuously active. +Her favorite part about working at Appwrite? It's the opportunity to shoulder a lot of responsibility. This keeps her learning journey continuously active. > "What's more, the people here are incredibly supportive and approachable, making the learning process not just easy, but fun and exciting too." -> +> For Khushboo, it's all about the win-win: tackling high-impact projects with a swift and efficient process. This setup not only supports her learning but also ensures she's always surrounded by a team ready to lend a hand. > "Software engineering is very complex and filled with challenges. Often, we find ourselves diving into unknown waters, tackling problems that no one has solved before.” -> +> -This is precisely why she values being part of a team so highly. When you hit a snag or find your motivation lacking, it's the team that comes to your rescue. You're surrounded by a mix of people who've been in your shoes or who can help you overcome obstacles and encourage you to excel. For her, it's more than just collaboration, it's about cultivating a supportive environment. +This is precisely why she values being part of a team so highly. When you hit a snag or find your motivation lacking, it's the team that comes to your rescue. You're surrounded by a mix of people who've been in your shoes or who can help you overcome obstacles and encourage you to excel. For her, it's more than just collaboration, it's about cultivating a supportive environment. > "It's a place where newcomers are nurtured, and the more experienced offer guidance and mentorship." -> +> In Khushboo's eyes, being part of a team means you're in a constant state of growth, always learning, and always helping others advance along with you. ![Khushboo post team engineering](/images/blog/appwrite-decoded-khushboo/khushboo-team-engineering.png) -When asked to describe Appwrite in three words, Khushboo immediately says "ambition." +When asked to describe Appwrite in three words, Khushboo immediately says "ambition." > "We're always pushing the envelope, striving to achieve more and do our best.” -> +> -“Collaboration” comes next on her list. +“Collaboration” comes next on her list. > "It's incredible to see how the design, product, engineering, and growth team work together. The level of collaboration is amazing, allowing us to see the product's journey from start to finish." -> +> -But what really sealed the deal for her was the “culture.” +But what really sealed the deal for her was the “culture.” > "The culture here was a major deciding factor for me. It's refreshing to be part of a workspace that's not only supportive and friendly but also acknowledges and celebrates each employee's efforts. This makes Appwrite a fantastic place to work." > @@ -110,13 +110,13 @@ At Appwrite, there's real trust in Khushboo's abilities. When she faces a new ta ![Khushboo and Eldad](/images/blog/appwrite-decoded-khushboo/khushboo-with-eldad.png) > "And, really, everyone at Appwrite is just so smart." -> +> Being surrounded by such talented individuals is a daily motivation, constantly inspiring her to aim higher in her professional and personal life. ![Khushboo post team](/images/blog/appwrite-decoded-khushboo/khushboo-team.png) -But it's not all about the work. Appwrite values her holistic growth. Despite being a software engineer, she's encouraged to explore her passions beyond coding. Whether it's public speaking or content creation, there's always support for her to engage in activities beyond her core responsibilities. +But it's not all about the work. Appwrite values her holistic growth. Despite being a software engineer, she's encouraged to explore her passions beyond coding. Whether it's public speaking or content creation, there's always support for her to engage in activities beyond her core responsibilities. > "It's an amazing setup that's enhanced my growth more than I ever imagined.” > @@ -126,7 +126,7 @@ But it's not all about the work. Appwrite values her holistic growth. Despite be With Appwrite, she stepped into an environment where openness and transparency were more than just ideals—they were practiced daily. Getting a grip on the company’s bigger picture wasn’t just encouraged. It was essential. Seeing the direct line between her work in engineering and the company's achievements was a breath of fresh air. > “I found myself collaborating more closely with other teams in a way that was both new and exciting. It’s one thing to work on a project, but it’s another to see your piece fit into the puzzle, contributing to something that we all have a hand in.” -> +> This approach didn’t just widen her view on how businesses operate, it also reshaped her entire mindset toward working together and solving problems. The impact of these experiences has been profound, leaving a lasting impression on her professional path. @@ -134,10 +134,10 @@ This approach didn’t just widen her view on how businesses operate, it also re # Past and future through Appwrite -Working on [Appwrite Functions](https://appwrite.io/docs/products/functions) was a real journey of discovery for Khushboo. Starting from square one, she was prepared to tackle every detail from the ground up. The initial steps of drafting a detailed design document and steering it through the approval stages were just the prologue. The real excitement kicked in as she began building the feature from zero, witnessing its progression to a live environment. But for Khushboo, the project didn’t end with deployment. She was keen on hearing the community's voice, eagerly welcoming their feedback to enhance the feature further. Integrating this feedback, she fine-tuned the function to better meet user expectations. The community’s positive response was incredibly affirming, fueling her drive to innovate and keep exceeding what’s possible. +Working on [Appwrite Functions](/docs/products/functions) was a real journey of discovery for Khushboo. Starting from square one, she was prepared to tackle every detail from the ground up. The initial steps of drafting a detailed design document and steering it through the approval stages were just the prologue. The real excitement kicked in as she began building the feature from zero, witnessing its progression to a live environment. But for Khushboo, the project didn’t end with deployment. She was keen on hearing the community's voice, eagerly welcoming their feedback to enhance the feature further. Integrating this feedback, she fine-tuned the function to better meet user expectations. The community’s positive response was incredibly affirming, fueling her drive to innovate and keep exceeding what’s possible. > "At Appwrite, I see tremendous room for personal and professional development, especially as the product evolves.” -> +> Every day is a chance for her to polish her system design abilities and advance as a self-reliant software engineer. As she looks to the future, she's eager to embrace a leadership position, whether it be technical or people-oriented, guided by a mindset of openness to new challenges. Yet, at the core of her ambition lies a genuine desire to contribute meaningfully and witness the impact of her work on users. This sentiment resonates with both her friendly nature and professional approach. @@ -146,7 +146,7 @@ Every day is a chance for her to polish her system design abilities and advance Switching from the structured environment of an office to the flexibility of remote work initially presented a few challenges for Khushboo. Adjusting to Appwrite's remote nature didn't happen overnight. However, she quickly appreciated the benefits of asynchronous communication, which was crucial in maintaining transparency and fostering teamwork despite the team being spread across the globe. Navigating the challenges of interacting effectively with teammates in various time zones and cultural contexts was a learning curve. > "Appwrite really supports us by providing options like co-working spaces. I've taken to working from one, and it’s a game-changer. It brings a bit of the office vibe back, allowing me to hang out with professionals from other fields and partake in the communal energy and events typical of an office setting." -> +> She's all about taking regular breaks, whether for a quick walk in the park or chatting with a coworker. It's one of the perks of remote work—being able to set your own schedule and work when you're feeling most productive. Remote work has its challenges, but Khushboo is a shining example that with the right mindset and a handful of clever strategies, not only can you navigate these challenges, but also fully tap into the wealth of benefits remote work offers. @@ -157,21 +157,21 @@ She's all about taking regular breaks, whether for a quick walk in the park or c If you have your eyes on a software engineering career, Khushboo has some golden advice: get your hands dirty with code, lots of it. But don’t stop there. Once you've built up your confidence in coding, dive into the world of system design. > "Software engineering can sometimes be daunting. You might feel overwhelmed by everything there is to learn, worrying you’re falling behind or getting left out. But here’s the thing, every engineer has been there. The key? Commit to learning something new every day." -> +> She believes in the power of sticking to a path of constant learning and finding joy in small discoveries. Linking up with mentors who've faced similar hurdles and surrounding yourself with driven peers can be transformative, making those big challenges much more manageable. > "Finding your way through the job market's competitive terrain can feel like a tough climb, especially with how things are today.” -> +> -She's convinced that those who dive into open source projects, share their achievements on social media, and [connect with the wider community](https://appwrite.io/heroes) by writing blogs, making videos, or speaking at conferences stand out. She points out that in a world where opportunities know no borders, making yourself seen and heard on the global stage is crucial. +She's convinced that those who dive into open source projects, share their achievements on social media, and [connect with the wider community](/heroes) by writing blogs, making videos, or speaking at conferences stand out. She points out that in a world where opportunities know no borders, making yourself seen and heard on the global stage is crucial. -Take, for example, Appwrite—a globally remote company constantly [scouting for talent](https://www.appwrite.careers) worldwide. Khushboo’s guidance is clear-cut: develop a passion for building and exploring new things, but don’t forget to let the [commnunity](https://appwrite.io/community) see what you’re capable of. Rather than solely relying on traditional job applications, she advocates for proactively sharing one's projects and expertise, enabling potential employers to discover them. Khushboo also highlights the significance of empathy and cultural fit in addition to technical proficiency. Being empathetic and understanding others' perspectives fosters strong teamwork and collaboration, qualities that are highly valued in today's workplace. +Take, for example, Appwrite—a globally remote company constantly [scouting for talent](https://www.appwrite.careers) worldwide. Khushboo’s guidance is clear-cut: develop a passion for building and exploring new things, but don’t forget to let the [commnunity](/community) see what you’re capable of. Rather than solely relying on traditional job applications, she advocates for proactively sharing one's projects and expertise, enabling potential employers to discover them. Khushboo also highlights the significance of empathy and cultural fit in addition to technical proficiency. Being empathetic and understanding others' perspectives fosters strong teamwork and collaboration, qualities that are highly valued in today's workplace. Khushboo wraps up her journey's story with a quote that resonates deeply with her: > “As long as you have faith and are willing to work hard, you can achieve anything you want.” -> +> Her dedication to spreading knowledge doesn't stop; whether it's workshops, meetups, or conferences, she's there, eager to share what she knows with anyone willing to learn. diff --git a/src/routes/blog/post/appwrite-is-now-soc-2-type-1-compliant/+page.markdoc b/src/routes/blog/post/appwrite-is-now-soc-2-type-1-compliant/+page.markdoc index beb0deac0b..a4882a5bb5 100644 --- a/src/routes/blog/post/appwrite-is-now-soc-2-type-1-compliant/+page.markdoc +++ b/src/routes/blog/post/appwrite-is-now-soc-2-type-1-compliant/+page.markdoc @@ -11,9 +11,9 @@ featured: false --- We remain dedicated to maintaining the highest information security standards for all industries. Although we go beyond just meeting the requirements, Appwrite still commits to conform to the most stringent security standards -like [GDPR](https://appwrite.io/docs/advanced/security/gdpr), [HIPAA](https://appwrite.io/docs/advanced/security/hipaa), and [PCI](https://appwrite.io/docs/advanced/security/pci) to ensure the safety of your data. +like [GDPR](/docs/advanced/security/gdpr), [HIPAA](/docs/advanced/security/hipaa), and [PCI](/docs/advanced/security/pci) to ensure the safety of your data. -Today, we are excited to add to Appwrite's list of security standards compliance and announce that Appwrite has achieved SOC 2 Type 1 compliance (System and Organization Controls). +Today, we are excited to add to Appwrite's list of security standards compliance and announce that Appwrite has achieved SOC 2 Type 1 compliance (System and Organization Controls). # What is SOC 2 Type 1? @@ -37,7 +37,7 @@ This assures you of data security of the highest standards for your products. # What we did to attain compliance -So, what did we do to attain compliance with SOC 2 Type I? Just like with our [GDPR](https://appwrite.io/blog/post/announcing-appwrite-is-gdpr-compliant) and [HIPAA](https://appwrite.io/blog/post/announcing-appwrite-is-hipaa-compliant) compliance, we needed to undergo rigorous evaluations of internal policies, procedures, and infrastructure. We've implemented measures to safeguard user data, ensuring that our practices align with the stringent requirements of SOC 2 standards. +So, what did we do to attain compliance with SOC 2 Type I? Just like with our [GDPR](/blog/post/announcing-appwrite-is-gdpr-compliant) and [HIPAA](/blog/post/announcing-appwrite-is-hipaa-compliant) compliance, we needed to undergo rigorous evaluations of internal policies, procedures, and infrastructure. We've implemented measures to safeguard user data, ensuring that our practices align with the stringent requirements of SOC 2 standards. ## Appwrite system description @@ -54,4 +54,4 @@ Outlined below are some of the key measures Appwrite implements to uphold the se - Appwrite oversees vendor management processes to ensure the security of third-party vendors and service providers who may access systems or data. - Ongoing training and awareness initiatives are conducted to equip employees with the necessary knowledge and skills to uphold best practices in safeguarding systems and data. -Looking for a SOC 2 Type 1 compliant backend provider? Or looking to replace Firebase? Appwrite can be your solution. Take a look at our [documentation](https://appwrite.io/docs/advanced/security) to learn more about our security. +Looking for a SOC 2 Type 1 compliant backend provider? Or looking to replace Firebase? Appwrite can be your solution. Take a look at our [documentation](/docs/advanced/security) to learn more about our security. diff --git a/src/routes/blog/post/appwrite-messaging-is-free-for-six-months/+page.markdoc b/src/routes/blog/post/appwrite-messaging-is-free-for-six-months/+page.markdoc index 8ade006ed7..17ae81fd4f 100644 --- a/src/routes/blog/post/appwrite-messaging-is-free-for-six-months/+page.markdoc +++ b/src/routes/blog/post/appwrite-messaging-is-free-for-six-months/+page.markdoc @@ -8,14 +8,14 @@ timeToRead: 5 author: eldad-fux category: Product --- -When we [introduced Messaging](https://appwrite.io/blog/post/announcing-appwrite-messaging) during [Init](https://appwrite.io/init), we were overwhelmed by the excitement within the Appwrite community. Now we can also announce that Messaging will be free for the next six months. +When we [introduced Messaging](/blog/post/announcing-appwrite-messaging) during [Init](/init), we were overwhelmed by the excitement within the Appwrite community. Now we can also announce that Messaging will be free for the next six months. ## Free for the next six months Messaging is in beta, and during this time, we will analyze all usage and collect pricing feedback from the Appwrite community to establish a fair price for the service. Just like with our Cloud pricing, we want to adhere to the Value Framework we created. > We created a set of principles to guide us through the pricing process. We like to call this the “Value Framework” as it focuses on delivering the maximum value to our users without compromising on the affordability and accessibility of our products and services. -> +> So what does this mean? @@ -34,11 +34,11 @@ During the coming months, we will contact many of you to ask for feedback on Mes ## New features planned -The release of Messaging is just the beginning. We will add many new features to the product to make it the best messaging service and ensure you get everything you need to deliver a great messaging experience to your end users. +The release of Messaging is just the beginning. We will add many new features to the product to make it the best messaging service and ensure you get everything you need to deliver a great messaging experience to your end users. Some features we will be adding: the ability to send test messages, add variables to your messages, advanced targeting, and in depth usage stats. -We will add more providers and invite you to contribute with your own pull requests. Visit our [community page](https://appwrite.io/community) to learn more about contributing or add your issues directly to [GitHub](https://github.com/appwrite/appwrite). +We will add more providers and invite you to contribute with your own pull requests. Visit our [community page](/community) to learn more about contributing or add your issues directly to [GitHub](https://github.com/appwrite/appwrite). ## A complete backend for your projects @@ -48,7 +48,7 @@ We’re excited to bring Messaging to Cloud and to offer the service for free fo Learn more about Messaging in our resources: -- [Best practices for sending push notifications](https://appwrite.io/blog/post/push-notifications-best-practices) -- [How tools like Twilio can simplify messaging for developers](https://appwrite.io/blog/post/simplify-messaging-twilio) -- [Documentation](https://appwrite.io/docs/products/messaging) +- [Best practices for sending push notifications](/blog/post/push-notifications-best-practices) +- [How tools like Twilio can simplify messaging for developers](/blog/post/simplify-messaging-twilio) +- [Documentation](/docs/products/messaging) - [Product tour](https://www.youtube.com/watch?v=QdDgPeuBZ1I) diff --git a/src/routes/blog/post/building-apps-with-bun-and-appwrite/+page.markdoc b/src/routes/blog/post/building-apps-with-bun-and-appwrite/+page.markdoc index 624f9dbc33..9611a34424 100644 --- a/src/routes/blog/post/building-apps-with-bun-and-appwrite/+page.markdoc +++ b/src/routes/blog/post/building-apps-with-bun-and-appwrite/+page.markdoc @@ -13,7 +13,7 @@ If you are a developer, your definition of `bun` must have recently changed. Fro # What is Bun? -Bun is an all-in-one JavaScript runtime & toolkit designed for speed, complete with a bundler, [test runner](https://bun.sh/docs/cli/test), and Node.js-compatible [package manager](https://bun.sh/package-manager). +Bun is an all-in-one JavaScript runtime & toolkit designed for speed, complete with a bundler, [test runner](https://bun.sh/docs/cli/test), and Node.js-compatible [package manager](https://bun.sh/package-manager). To install Bun, follow the instructions [here](https://bun.sh/). It is built from scratch to serve the modern JavaScript ecosystem. It has three major design goals: @@ -27,7 +27,7 @@ Bun lets you read environment variables from a **`.env`** file and utilize the f Bun also natively supports TypeScript out of the box. Other than that, it also supports `.js`, `.cjs`, `.mjs`, `.jsx`, and `.tsx` files. -*Bonus: Bun package manager is known for its speed, offering faster package management as one of its key features. Even if you don't use Bun as a runtime, you can use Bun's built-in package manager, that can significantly speed up your development workflow.* +*Bonus: Bun package manager is known for its speed, offering faster package management as one of its key features. Even if you don't use Bun as a runtime, you can use Bun's built-in package manager, that can significantly speed up your development workflow.* Try it for yourself: @@ -43,15 +43,15 @@ The powers of Bun are endless. If you are interested to know more about the capa **How is Bun so fast?** > Bun made some bold decisions to make this happen! It is not because they are using Zig or not using V8 nor because it's machine code. It is because of the mindset to make everything as highly performant as possible. -> +> -Other than that, there are things like: While installing a package, Bun doesn’t do a network check to see if it is downloading in the latest version. `@latest` tags are effectively ignored in Bun. +Other than that, there are things like: While installing a package, Bun doesn’t do a network check to see if it is downloading in the latest version. `@latest` tags are effectively ignored in Bun. Also, making small adjustments, such as creating a list of labeled pointers instead of keeping the function pointers separately, greatly improved the speed. # Introduction to Appwrite -Explore the capabilities of Bun with [Appwrite](https://appwrite.io/) - a backend platform to help you minimize time to create value. Appwrite abstracts away the complexities and repetitiveness of building a modern application so you can jump straight to the fun parts, building impactful features. +Explore the capabilities of Bun with [Appwrite](/) - a backend platform to help you minimize time to create value. Appwrite abstracts away the complexities and repetitiveness of building a modern application so you can jump straight to the fun parts, building impactful features. Using Appwrite, you can quickly deploy and scale your Bun/JavaScript code base with ease. To achieve that, you can use Appwrite Functions. @@ -59,11 +59,11 @@ Appwrite Functions is available in multiple languages and runtimes (and Bun is o ![Bun start](/images/blog/building-apps-with-bun-and-appwrite/bun-start.png) -Appwrite functions are capable of doing more. In our latest release, we have added `Function templates`, which means you’ll be able to add Functions engineered by the Appwrite team and community to your Appwrite project. Functions also have their own `domain`, either custom or generated by Appwrite. This lets you write Appwrite Functions that act like typical REST endpoints to handle webhooks, custom integrations, or even serve HTML content. Appwrite Functions will now also fit into your existing workflow right alongside the rest of your code as you can deploy them directly from `Git`. +Appwrite functions are capable of doing more. In our latest release, we have added `Function templates`, which means you’ll be able to add Functions engineered by the Appwrite team and community to your Appwrite project. Functions also have their own `domain`, either custom or generated by Appwrite. This lets you write Appwrite Functions that act like typical REST endpoints to handle webhooks, custom integrations, or even serve HTML content. Appwrite Functions will now also fit into your existing workflow right alongside the rest of your code as you can deploy them directly from `Git`. # Integrating Bun in Appwrite -Now that you have been introduced to Bun and Appwrite, it is time to test them out! To use Bun in Appwrite, you need to use the latest version of Appwrite. +Now that you have been introduced to Bun and Appwrite, it is time to test them out! To use Bun in Appwrite, you need to use the latest version of Appwrite. Installing a self-hosted version of Appwrite is pretty straight-forward, all you need to do is: @@ -78,17 +78,17 @@ docker run -it --rm \ appwrite/appwrite:1.5.7 ``` -For one-click setups, check out the [installation docs](https://appwrite.io/docs/self-hosting). +For one-click setups, check out the [installation docs](/docs/self-hosting). To use Bun in Appwrite, you need to add it to `_APP_FUNCTIONS_RUNTIMES` in the `.env` file and restart your Appwrite instance with `docker compose up -d`. ![Bun functions](/images/blog/building-apps-with-bun-and-appwrite/bun-functions.png) -Next, go ahead and create a Bun function using the Appwrite CLI by running appwrite init function. +Next, go ahead and create a Bun function using the Appwrite CLI by running appwrite init function. Now that your function is set up, we can try some examples: -**Example 1:** +**Example 1:** Bun aims to provide a consistent and predictable module resolution system that just works. The specialty of Bun is that you can use `import` or `require` in the same file—they both work all the time. @@ -116,7 +116,7 @@ The output will be: Bun supports `.jsx` and `.tsx` files out of the box. Bun's internal transpiler converts JSX syntax into vanilla JavaScript before execution. -Let us test with the following code: +Let us test with the following code: ```jsx import { renderToString } from "react-dom/server"; @@ -143,7 +143,7 @@ When the function successfully executes, you will get the following output: # Takeaways -In this article, we learned about Bun and using it with Appwrite. While we support Node.js, Deno, and Bun within Appwrite, it is up to you to choose which one you want to build with. +In this article, we learned about Bun and using it with Appwrite. While we support Node.js, Deno, and Bun within Appwrite, it is up to you to choose which one you want to build with. While comparing the performance of these three runtimes with Appwrite, we have come up with some interesting results: @@ -153,12 +153,12 @@ While comparing the performance of these three runtimes with Appwrite, we have c - Load testing - All in similar ranges, with Bun and Node.js being the most stable > Benchmarks above are related to runtime used in Appwrite Functions. -> +> Here are some resources to get started: -- [Appwrite Function Docs](https://appwrite.io/docs/functions) +- [Appwrite Function Docs](/docs/functions) - [Bun Docs](https://bun.sh/docs) - [Appwrite Discord](https://discord.com/invite/appwrite) -With the benchmarks shared above and having the flexibility within Appwrite to build with any runtime, what would be your choice? +With the benchmarks shared above and having the flexibility within Appwrite to build with any runtime, what would be your choice? diff --git a/src/routes/blog/post/building-init-giveaway-app/+page.markdoc b/src/routes/blog/post/building-init-giveaway-app/+page.markdoc index 7ea1bc424a..2dac84cd1d 100644 --- a/src/routes/blog/post/building-init-giveaway-app/+page.markdoc +++ b/src/routes/blog/post/building-init-giveaway-app/+page.markdoc @@ -9,7 +9,7 @@ author: aditya-oberai category: open-source --- -Last week, we saw the culmination of a whole new initiative, the celebration of everything new with Appwrite and the community, called [Init](https://appwrite.io/init). From February 26th to March 1st, we celebrated a new product and/or feature every day and shared educational content around the same. Alongside, we hosted online events each day in the Appwrite Discord server with creators and friends of Appwrite to learn about the new releases, ask questions, and, most of all, geek out together. +Last week, we saw the culmination of a whole new initiative, the celebration of everything new with Appwrite and the community, called [Init](/init). From February 26th to March 1st, we celebrated a new product and/or feature every day and shared educational content around the same. Alongside, we hosted online events each day in the Appwrite Discord server with creators and friends of Appwrite to learn about the new releases, ask questions, and, most of all, geek out together. One popular aspect of these events was a random giveaway that we ran every single day, giving out Init swag to a number of our community members. When planning out these giveaways, however, we wanted to create a high-quality experience for our community members, to make it as special and exciting as every other aspect of Init. diff --git a/src/routes/blog/post/building-with-ai-function-templates/+page.markdoc b/src/routes/blog/post/building-with-ai-function-templates/+page.markdoc index 76fb269412..e9e52a3087 100644 --- a/src/routes/blog/post/building-with-ai-function-templates/+page.markdoc +++ b/src/routes/blog/post/building-with-ai-function-templates/+page.markdoc @@ -9,13 +9,13 @@ author: aditya-oberai category: product --- -It’s an exciting time for software development, as many new concepts and techniques pop up every day, giving us endless possibilities to build new and shiny things. But this sea of opportunity can be hard to navigate and keep up with. AI, for instance, is a field that is rapidly evolving and is influencing not only the products we can build but also the way we develop them. However, building AI-powered applications can be complicated. Appwrite’s new AI Function templates make it easier to build AI powered applications. +It’s an exciting time for software development, as many new concepts and techniques pop up every day, giving us endless possibilities to build new and shiny things. But this sea of opportunity can be hard to navigate and keep up with. AI, for instance, is a field that is rapidly evolving and is influencing not only the products we can build but also the way we develop them. However, building AI-powered applications can be complicated. Appwrite’s new AI Function templates make it easier to build AI powered applications. So, what did we add? This blog provides an overview of all the concepts we’ve added, tutorials, templates, and the integrations we support. # Computer vision -[Computer vision](https://appwrite.io/blog/post/state-of-computer-vision) is a field of AI aiming to provide machines with a comprehensive understanding of visual data from a variety of sources. Two sub techniques we added support for are image classification and object detection. Both techniques are widely used in our day to day lives, let’s take a look. +[Computer vision](/blog/post/state-of-computer-vision) is a field of AI aiming to provide machines with a comprehensive understanding of visual data from a variety of sources. Two sub techniques we added support for are image classification and object detection. Both techniques are widely used in our day to day lives, let’s take a look. ## Image classification @@ -59,7 +59,7 @@ Detect and label objects in images # Natural language processing -[Natural language processing](https://appwrite.io/blog/post/state-of-natural-language-processing) (NLP) is a fascinating intersection of computer science, artificial intelligence, and linguistics. It's about teaching computers to understand, interpret, and generate human language. Translating languages, answering questions, or helping find information, NLP is at the heart of many technologies we use every day. Two techniques that Appwrite Function templates support are text generation and language translation. +[Natural language processing](/blog/post/state-of-natural-language-processing) (NLP) is a fascinating intersection of computer science, artificial intelligence, and linguistics. It's about teaching computers to understand, interpret, and generate human language. Translating languages, answering questions, or helping find information, NLP is at the heart of many technologies we use every day. Two techniques that Appwrite Function templates support are text generation and language translation. ## Text generation @@ -107,7 +107,7 @@ Translate text between languages # Audio processing -[Audio processing](https://appwrite.io/blog/post/state-of-audio-processing) is a field of machine learning that allows machines to understand, analyze, and manipulate various audio signals. The applications are vast and varied, from speech recognition to music generation and noise reduction. It's used in many everyday tools you use, including voice assistants, music streaming services, and for noise reduction in online calls. We’ve added support for speech to recognition, text-to-speech, and even music generation. +[Audio processing](/blog/post/state-of-audio-processing) is a field of machine learning that allows machines to understand, analyze, and manipulate various audio signals. The applications are vast and varied, from speech recognition to music generation and noise reduction. It's used in many everyday tools you use, including voice assistants, music streaming services, and for noise reduction in online calls. We’ve added support for speech to recognition, text-to-speech, and even music generation. ## Speech to recognition @@ -175,15 +175,15 @@ Efficiently convert text to music As we have covered in this blog, we have added a lot of great templates for you to get started on your AI journey. Including support for AI integrations: -- [Pinecone](https://appwrite.io/docs/products/ai/integrations/pinecone) -- [OpenAI](https://appwrite.io/docs/products/ai/integrations/openai) -- [Hugging Face](https://appwrite.io/docs/products/ai/tutorials/image-classification) -- [ElevenLabs](https://appwrite.io/docs/products/ai/integrations/elevenlabs) -- [Perplexity](https://appwrite.io/docs/products/ai/integrations/perplexity) -- [Replicate](https://appwrite.io/docs/products/ai/integrations/replicate) -- [fal.ai](https://appwrite.io/docs/products/ai/integrations/fal-ai) -- [LangChain](https://appwrite.io/docs/products/ai/integrations/langchain) -- [Together AI](https://appwrite.io/docs/products/ai/integrations/togetherai) +- [Pinecone](/docs/products/ai/integrations/pinecone) +- [OpenAI](/docs/products/ai/integrations/openai) +- [Hugging Face](/docs/products/ai/tutorials/image-classification) +- [ElevenLabs](/docs/products/ai/integrations/elevenlabs) +- [Perplexity](/docs/products/ai/integrations/perplexity) +- [Replicate](/docs/products/ai/integrations/replicate) +- [fal.ai](/docs/products/ai/integrations/fal-ai) +- [LangChain](/docs/products/ai/integrations/langchain) +- [Together AI](/docs/products/ai/integrations/togetherai) ![Image of Appwrite Console](/images/blog/building-with-ai-function-templates/function-templates-overview.png) @@ -196,7 +196,7 @@ We've also added more AI Function templates for more use cases than discussed ab Take a look at these two blogs to learn more about using Function templates in your projects: -- [Streamline receipt scanning with Appwrite Cloud](https://appwrite.io/blog/post/scan-receipts-with-appwrite-functions) -- [Build an intelligent chatbot with ChatGPT and Appwrite Functions](https://appwrite.io/blog/post/function-template-prompt-chatgpt) +- [Streamline receipt scanning with Appwrite Cloud](/blog/post/scan-receipts-with-appwrite-functions) +- [Build an intelligent chatbot with ChatGPT and Appwrite Functions](/blog/post/function-template-prompt-chatgpt) We will continue to add more AI tutorials, integrations, blogs, videos, and Function templates. You can also contribute by adding your own pull requests to the [repository](https://github.com/appwrite/templates). diff --git a/src/routes/blog/post/bun-function-resume/+page.markdoc b/src/routes/blog/post/bun-function-resume/+page.markdoc index 9ffce74811..e4dfecad83 100644 --- a/src/routes/blog/post/bun-function-resume/+page.markdoc +++ b/src/routes/blog/post/bun-function-resume/+page.markdoc @@ -1,7 +1,7 @@ --- layout: post title: Share your resume using Appwrite Functions -description: How you can create a resume using HTML and use a Bun Appwrite Function to share it with the world. +description: How you can create a resume using HTML and use a Bun Appwrite Function to share it with the world. date: 2024-03-07 cover: /images/blog/bun-function-resume/cover.png timeToRead: 7 @@ -9,7 +9,7 @@ author: aditya-oberai category: functions --- -One of the coolest things about Appwrite Functions is that you can now consume them as REST APIs. This means you can send HTTP requests to any path, using common HTTP methods such as `GET` and `POST` to any path on the function and get a response in JSON or any other text-based formats (such as plain text, HTML, and CSV). This has opened up a lot of potential use-cases, one of which is how you can host and share your online resume through an Appwrite Function when applying for a new job. +One of the coolest things about Appwrite Functions is that you can now consume them as REST APIs. This means you can send HTTP requests to any path, using common HTTP methods such as `GET` and `POST` to any path on the function and get a response in JSON or any other text-based formats (such as plain text, HTML, and CSV). This has opened up a lot of potential use-cases, one of which is how you can host and share your online resume through an Appwrite Function when applying for a new job. Therefore, in this blog, we will leverage one of Appwrite’s newest functions runtimes, Bun, to create a function that delivers an HTML-based resume. @@ -162,7 +162,7 @@ Now that our HTML resume and utility function are ready, we can develop our fina import { getStaticFile } from './utils.js'; export default async ({ req, res }) => { - + if (req.method === 'GET' && req.path === '/') { return res.send(getStaticFile('resume.html'), 200, { 'Content-Type': 'text/html; charset=utf-8', @@ -193,7 +193,7 @@ Once you’ve completed all the aforementioned steps, you can push the code to o ![Function deployment](/images/blog/bun-function-resume/deployment.png) -You can then go ahead and test your function by opening the function domain in your browser. +You can then go ahead and test your function by opening the function domain in your browser. Here is what an example of this looks like: [apwr.dev/bun-functions-resume-demo](https://apwr.dev/bun-functions-resume-demo) @@ -203,6 +203,6 @@ And with that, you have successfully deployed your resume using Appwrite Functio Additionally, if you would like to learn more about Appwrite Functions, here are some resources: -- [Appwrite Functions docs](https://appwrite.io/docs/functions): These documents provide more information on how to use Appwrite Functions. -- [Bun functions announcements](https://appwrite.io/blog/post/why-you-need-to-try-the-new-bun-runtime): Read the full announcement about our Bun functions runtime. +- [Appwrite Functions docs](/docs/functions): These documents provide more information on how to use Appwrite Functions. +- [Bun functions announcements](/blog/post/why-you-need-to-try-the-new-bun-runtime): Read the full announcement about our Bun functions runtime. - [Appwrite Discord](https://discord.com/invite/appwrite): Connect with other developers and the Appwrite team for discussion, questions, and collaboration. \ No newline at end of file diff --git a/src/routes/blog/post/case-study-langx/+page.markdoc b/src/routes/blog/post/case-study-langx/+page.markdoc index 8606a72994..2e3cd1fc53 100644 --- a/src/routes/blog/post/case-study-langx/+page.markdoc +++ b/src/routes/blog/post/case-study-langx/+page.markdoc @@ -9,7 +9,7 @@ author: aditya-oberai category: case-studies --- -Born in Istanbul, Turkey, Xue never needed to prioritize learning English as a language until he pursued further education at Boğaziçi University, where his Mechanical Engineering coursework was delivered in English. After graduating and working as an IT manager at a multinational import-export company, Xue moved to Canada and founded his own tech consulting firm. By now, he had started exploring various language exchange platforms such as Tandem as a learner; however, he soon realized there was no perfect platform for his needs. +Born in Istanbul, Turkey, Xue never needed to prioritize learning English as a language until he pursued further education at Boğaziçi University, where his Mechanical Engineering coursework was delivered in English. After graduating and working as an IT manager at a multinational import-export company, Xue moved to Canada and founded his own tech consulting firm. By now, he had started exploring various language exchange platforms such as Tandem as a learner; however, he soon realized there was no perfect platform for his needs. Thus, the idea behind **LangX** was born. @@ -33,7 +33,7 @@ Around this simple philosophy, the LangX team has developed various features to Currently, LangX has been built using Ionic Angular, a cross-platform app framework that allows developers to create web and mobile apps via a single codebase. To accelerate the development process, Xue evaluated various Backend-as-a-Service platforms, including Supabase and Appwrite. Xue preferred Appwrite’s user experience to other options; however, it was Appwrite’s highly active and supportive community that convinced him. He remembers posting a challenge he faced on Appwrite’s Discord server and gaining a resolution in less than 24 hours, solidifying his decision. -LangX has been built-up and driven by Appwrite from Day 1. The team leveraged **Appwrite Databases** to store all the app’s data, including user information, chat rooms, languages, messages, reports, and visits. They leveraged **Appwrite Realtime** to enable synchronous chatting between users and track their online status. Any binary files, such as audio and images in the chats and on user profiles, are stored and managed via **Appwrite Storage**. The team has also developed multiple **Appwrite Functions** to manage unseen messages between users, track daily streaks to feature on user profiles, and send push notifications via Firebase Cloud Messaging, which they intend to migrate to **[Appwrite Messaging](https://appwrite.io/docs/products/messaging)** soon. +LangX has been built-up and driven by Appwrite from Day 1. The team leveraged **Appwrite Databases** to store all the app’s data, including user information, chat rooms, languages, messages, reports, and visits. They leveraged **Appwrite Realtime** to enable synchronous chatting between users and track their online status. Any binary files, such as audio and images in the chats and on user profiles, are stored and managed via **Appwrite Storage**. The team has also developed multiple **Appwrite Functions** to manage unseen messages between users, track daily streaks to feature on user profiles, and send push notifications via Firebase Cloud Messaging, which they intend to migrate to **[Appwrite Messaging](/docs/products/messaging)** soon. Some of the benefits of Appwrite that the LangX team appreciates are: diff --git a/src/routes/blog/post/deploy-a-pdf-generation-service-with-appwrite-functions/+page.markdoc b/src/routes/blog/post/deploy-a-pdf-generation-service-with-appwrite-functions/+page.markdoc index 988fb52a55..1c0a0fd6bb 100644 --- a/src/routes/blog/post/deploy-a-pdf-generation-service-with-appwrite-functions/+page.markdoc +++ b/src/routes/blog/post/deploy-a-pdf-generation-service-with-appwrite-functions/+page.markdoc @@ -16,7 +16,7 @@ Generating PDFs is a requirement of many applications. For example: creating inv The template generates an invoice using fake order data - it includes details such as an order ID, date, customer's name, list of purchased items, and the total cost. It should get you up and running, but you will need to add real data to build a useful invoice. -If you want to see the source code, you can find it on our [templates GitHub repository](https://github.com/appwrite/templates/tree/main/node/generate-pdf). +If you want to see the source code, you can find it on our [templates GitHub repository](https://github.com/appwrite/templates/tree/main/node/generate-pdf). Now, let’s navigate to our functions page on **[Appwrite Cloud](https://cloud.appwrite.io)**. Head over to your Appwrite project and visit the **Functions** page. From there, we will select the **Templates** tab, search for and select the **Generate PDF** function template. @@ -28,7 +28,7 @@ The function doesn’t have any required environment variables, so you can proce # Using the Function -Visit the **Domains** tab on the function page and copy the domain URL to test the function. +Visit the **Domains** tab on the function page and copy the domain URL to test the function. ![generate pdf](/images/blog/pdf-generation/generate-pdf.png) @@ -51,7 +51,7 @@ On Flutter you can use the [download](https://pub.dev/packages/download), or [op The next step is extend the template to show real invoice data. Here’s a high-level overview of what’s required: 1. Change the function to take the order ID as a query parameter in the function. -2. Get the order document from your Appwrite database, or external data source. Unsure about this? View code recipes on the **[Appwrite Function Docs](https://appwrite.io/docs/functions).** +2. Get the order document from your Appwrite database, or external data source. Unsure about this? View code recipes on the **[Appwrite Function Docs](/docs/functions).** 3. If necessary, use the order document to ensure the user has permission to see the order. For example, compare the `x-appwrite-user-id` header with the document user ID. 4. Change the function to populate the PDF template with the real order document. @@ -61,6 +61,6 @@ We’ve covered the basics, and now it’s your time to shine! With a few change For more information about Appwrite and Appwrite Functions: -1. **[Appwrite Function Docs](https://appwrite.io/docs/functions)**: These documents provide more information on how to use Appwrite Functions. -2. **[Appwrite Cloud](https://appwrite.io/cloud)**: Try our cloud service to get started quickly. +1. **[Appwrite Function Docs](/docs/functions)**: These documents provide more information on how to use Appwrite Functions. +2. **[Appwrite Cloud](https://cloud.appwrite.io)**: Try our cloud service to get started quickly. 3. **[Appwrite Discord](https://discord.com/invite/appwrite)**: Connect with other developers and the Appwrite team for discussion, questions, and collaboration. diff --git a/src/routes/blog/post/email-otp-auth-sveltekit/+page.markdoc b/src/routes/blog/post/email-otp-auth-sveltekit/+page.markdoc index 03d980665d..b7da5d281a 100644 --- a/src/routes/blog/post/email-otp-auth-sveltekit/+page.markdoc +++ b/src/routes/blog/post/email-otp-auth-sveltekit/+page.markdoc @@ -15,7 +15,7 @@ With the recent Appwrite 1.5 release, we added a new passwordless authentication # What is email OTP authentication? -[Email OTP authentication](https://appwrite.io/docs/products/auth/email-otp) lets users create accounts using their email address and sign in using a 6-digit code delivered to their email inbox. This method is similar to [Magic URL login](https://appwrite.io/docs/products/auth/magic-url) but can provide a better user experience in some scenarios. +[Email OTP authentication](/docs/products/auth/email-otp) lets users create accounts using their email address and sign in using a 6-digit code delivered to their email inbox. This method is similar to [Magic URL login](/docs/products/auth/magic-url) but can provide a better user experience in some scenarios. ## Email OTP vs magic URL @@ -33,7 +33,7 @@ Now that we have a basic understanding of email OTP authentication, let’s lear ## Set up Appwrite 1.5 -You can use email OTP authentication either by [registering on Appwrite Cloud](https://cloud.appwrite.io/) or [self-hosting Appwrite](https://appwrite.io/docs/advanced/self-hosting) on your system or an external VM/VPS. +You can use email OTP authentication either by [registering on Appwrite Cloud](https://cloud.appwrite.io/) or [self-hosting Appwrite](/docs/advanced/self-hosting) on your system or an external VM/VPS. You can self-host Appwrite using the following Docker command: @@ -45,7 +45,7 @@ docker run -it --rm \ appwrite/appwrite:1.5.7 ``` -Once that is done, [set up email delivery](https://appwrite.io/docs/advanced/self-hosting/email) on your self-hosted Appwrite instance. This can be done by visiting your `appwrite` directory and updating the `.env` file in a similar manner as follows: +Once that is done, [set up email delivery](/docs/advanced/self-hosting/email) on your self-hosted Appwrite instance. This can be done by visiting your `appwrite` directory and updating the `.env` file in a similar manner as follows: ``` _APP_SMTP_HOST=smtp.sendgrid.net @@ -176,7 +176,7 @@ In the `src/routes` directory, visit the file `+page.svelte` and replace it with - +

Enter OTP

@@ -199,5 +199,5 @@ And with that, our demo application is ready. If you liked this project or want For more information about Appwrite Authentication, visit the following resources: -- [Appwrite Authentication Docs](https://appwrite.io/docs/products/auth): These docs provide more information on how to use the different methods offered under Appwrite Authentication. +- [Appwrite Authentication Docs](/docs/products/auth): These docs provide more information on how to use the different methods offered under Appwrite Authentication. - [Appwrite Discord](https://discord.com/invite/appwrite): Connect with other developers and the Appwrite team for discussion, questions, and collaboration. diff --git a/src/routes/blog/post/function-chat-fictional-character/+page.markdoc b/src/routes/blog/post/function-chat-fictional-character/+page.markdoc index f4d2126199..a8cbcbfcb8 100644 --- a/src/routes/blog/post/function-chat-fictional-character/+page.markdoc +++ b/src/routes/blog/post/function-chat-fictional-character/+page.markdoc @@ -102,5 +102,5 @@ And with that, our fictional character chat function is ready! If you liked this For more information about Appwrite Functions, visit the following resources: -- [Appwrite Function Docs](https://appwrite.io/docs/functions): These documents provide more information on how to use Appwrite Functions. +- [Appwrite Function Docs](/docs/functions): These documents provide more information on how to use Appwrite Functions. - [Appwrite Discord](https://discord.com/invite/appwrite): Connect with other developers and the Appwrite team for discussion, questions, and collaboration. \ No newline at end of file diff --git a/src/routes/blog/post/function-template-prompt-chatgpt/+page.markdoc b/src/routes/blog/post/function-template-prompt-chatgpt/+page.markdoc index f02f32600d..ccb30cd770 100644 --- a/src/routes/blog/post/function-template-prompt-chatgpt/+page.markdoc +++ b/src/routes/blog/post/function-template-prompt-chatgpt/+page.markdoc @@ -66,6 +66,6 @@ We’ve covered the basics, and now it’s your time to shine! With a few change For more information about Appwrite and Appwrite Functions: -- [Appwrite Function Docs](https://appwrite.io/docs/functions): These documents provide more information on how to use Appwrite Functions. +- [Appwrite Function Docs](/docs/functions): These documents provide more information on how to use Appwrite Functions. - [Functions Announcement](https://dev.to/appwrite/serverless-your-way-unleashing-appwrite-functions-true-potential-2l4f): Read the full announcement on Functions 1.4. - [Appwrite Discord](https://discord.com/invite/appwrite): Connect with other developers and the Appwrite team for discussion, questions, and collaboration. \ No newline at end of file diff --git a/src/routes/blog/post/function-template-whatsapp-vonage/+page.markdoc b/src/routes/blog/post/function-template-whatsapp-vonage/+page.markdoc index 8e0ad988f3..6f4d22bbe0 100644 --- a/src/routes/blog/post/function-template-whatsapp-vonage/+page.markdoc +++ b/src/routes/blog/post/function-template-whatsapp-vonage/+page.markdoc @@ -57,6 +57,6 @@ We’ve covered the basics, and now it’s your time to shine! With a few change For more information about Appwrite and Appwrite Functions: -- [Appwrite Function Docs](https://appwrite.io/docs/functions): These documents provide more information on how to use Appwrite Functions. +- [Appwrite Function Docs](/docs/functions): These documents provide more information on how to use Appwrite Functions. - [Functions Announcement](https://dev.to/appwrite/serverless-your-way-unleashing-appwrite-functions-true-potential-2l4f): Read the full announcement on Functions 1.4. - [Appwrite Discord](https://discord.com/invite/appwrite): Connect with other developers and the Appwrite team for discussion, questions, and collaboration. \ No newline at end of file diff --git a/src/routes/blog/post/how-to-build-your-digital-event-tickets/+page.markdoc b/src/routes/blog/post/how-to-build-your-digital-event-tickets/+page.markdoc index 2d57260036..e9e67bf458 100644 --- a/src/routes/blog/post/how-to-build-your-digital-event-tickets/+page.markdoc +++ b/src/routes/blog/post/how-to-build-your-digital-event-tickets/+page.markdoc @@ -59,7 +59,7 @@ Now, in case you would like to know how you can do this, we asked the engineer i First, you need to associate your GitHub account with your Init ticket. Therefore, we need to create an authentication flow on our website. Fortunately, with Appwrite Cloud, it was quite easy to do so. -By following our [documentation on OAuth](https://appwrite.io/docs/products/auth/oauth2), and creating an OAuth GitHub App, we're quickly able to create a login flow for Appwrite Init. When logging in for the first time, a new ticket is instantiated and saved to Appwrite Cloud. +By following our [documentation on OAuth](/docs/products/auth/oauth2), and creating an OAuth GitHub App, we're quickly able to create a login flow for Appwrite Init. When logging in for the first time, a new ticket is instantiated and saved to Appwrite Cloud. ![Init celebration ticket](/images/blog/tickets-blog2.png) diff --git a/src/routes/blog/post/integrate-custom-auth-sveltekit/+page.markdoc b/src/routes/blog/post/integrate-custom-auth-sveltekit/+page.markdoc index ec189138c9..38f6ae508c 100644 --- a/src/routes/blog/post/integrate-custom-auth-sveltekit/+page.markdoc +++ b/src/routes/blog/post/integrate-custom-auth-sveltekit/+page.markdoc @@ -16,7 +16,7 @@ Therefore, in this blog, we will learn about Appwrite’s custom token authentic # What is custom token authentication? -Custom token authentication allows you to use one of Appwrite’s [Server SDKs](https://appwrite.io/docs/sdks#server) to generate tokens, short-lived secrets that can be exchanged for a session by a [Client SDK](https://appwrite.io/docs/sdks#client) to log in users. This allows you to code your own authentication methods using Appwrite Functions or your own server-side APIs. This can be beneficial in a number of scenarios, such as: +Custom token authentication allows you to use one of Appwrite’s [Server SDKs](/docs/sdks#server) to generate tokens, short-lived secrets that can be exchanged for a session by a [Client SDK](/docs/sdks#client) to log in users. This allows you to code your own authentication methods using Appwrite Functions or your own server-side APIs. This can be beneficial in a number of scenarios, such as: 1. **Legacy system integration**: Integrate with old systems using unique authentication methods without major changes. 2. **Custom security needs**: Implement special security features like hardware tokens or voice recognition. @@ -97,7 +97,7 @@ const users = new Users(client); /** * Returns user if user exists in Appwrite, if not creates a new user - * + * * @param {string} email * @returns {Promise} user */ @@ -112,14 +112,14 @@ async function getUser(email) { } catch (err) { console.error(err); } - + } /** * Logic for authentication - * - * @param {string} email - * @param {string} password + * + * @param {string} email + * @param {string} password * @returns {Promise} user */ async function authLogic(email, password) { @@ -294,5 +294,5 @@ And with that, our demo project to try custom token authentication in Appwrite i Additionally, if you would like to learn more about Appwrite Auth, here are some resources: -- [Appwrite Auth docs](https://appwrite.io/docs/products/auth): These documents provide more information on how to use Appwrite Auth. +- [Appwrite Auth docs](/docs/products/auth): These documents provide more information on how to use Appwrite Auth. - [Appwrite Discord](https://discord.com/invite/appwrite): Connect with other developers and the Appwrite team for discussion, questions, and collaboration. \ No newline at end of file diff --git a/src/routes/blog/post/introducing-python-machine-learning-runtime/+page.markdoc b/src/routes/blog/post/introducing-python-machine-learning-runtime/+page.markdoc index 6eb813f084..6848d82467 100644 --- a/src/routes/blog/post/introducing-python-machine-learning-runtime/+page.markdoc +++ b/src/routes/blog/post/introducing-python-machine-learning-runtime/+page.markdoc @@ -12,7 +12,7 @@ featured: false # Introducing Python ML -If you're looking to build AI powered applications, you've probably considered using Python. And in case you haven't, it's probably time you did. We at Appwrite have thought about it, and our conclusion is simple. To improve the experience of building AI powered apps with Appwrite, a new runtime needs to emerge to cater to AI specific needs. +If you're looking to build AI powered applications, you've probably considered using Python. And in case you haven't, it's probably time you did. We at Appwrite have thought about it, and our conclusion is simple. To improve the experience of building AI powered apps with Appwrite, a new runtime needs to emerge to cater to AI specific needs. We're excited to present Appwrite's newest Function runtime, **Python ML.** The new runtime has been tailored and optimised for machine learning use cases, saving you a lot of hassle and time, making building AI powered applications a whole lot easier. @@ -30,7 +30,7 @@ We decided to build a new runtime image to overcome this limitation and at the s 1. Head to the [Appwrite Console](https://cloud.appwrite.io/console) then click on **Functions** in the left sidebar and then click on the **Create Function** button. ![Create Function](/images/blog/introducing-python-machine-learning-runtime/create-function.png) -2. To get started with the new runtime, navigate to your Appwrite console and select `Python (ML) 3.11` when creating a new function. +2. To get started with the new runtime, navigate to your Appwrite console and select `Python (ML) 3.11` when creating a new function. 3. Follow the step-by-step wizard and create the function. Here's an example function that trains a simple neural network on the MNIST dataset using TensorFlow and TensorFlow Datasets: @@ -101,7 +101,7 @@ Tensorflow Lite models are optimized for mobile and edge devices. They are small ### Async executions -Synchronous executions have a global timeout limit of 30s on Appwrite Cloud. Therefore, it is recommended to use asynchronous function executions for long running tasks. This will allow you to run multiple tasks concurrently, set your own timeout period and make the most of the compute resources available. Create an asynchronous execution using the `async` parameter in the [createExecution endpoint](https://appwrite.io/docs/references/cloud/client-web/functions#createExecution). +Synchronous executions have a global timeout limit of 30s on Appwrite Cloud. Therefore, it is recommended to use asynchronous function executions for long running tasks. This will allow you to run multiple tasks concurrently, set your own timeout period and make the most of the compute resources available. Create an asynchronous execution using the `async` parameter in the [createExecution endpoint](/docs/references/cloud/client-web/functions#createExecution). If you see `FUNCTION_SYCHRONOUS_TIMEOUT` errors when executing your function, navigate to your **Function settings** and try increasing your timeout period to a larger number such 50 seconds or more. @@ -117,4 +117,4 @@ If you have training that does not require intensive GPU resources, you can trai For all other use-cases, you can use third-party AI services with Appwrite Functions. Perplexity, Replicate and OpenAI offer powerful APIs that can be used to train and run models on their infrastructure. -We've built a range of example functions and technical guides in our [AI documention](https://appwrite.io/docs/products/ai). \ No newline at end of file +We've built a range of example functions and technical guides in our [AI documention](/docs/products/ai). \ No newline at end of file diff --git a/src/routes/blog/post/its-the-contributors-in-open-source-who-make-the-community-great/+page.markdoc b/src/routes/blog/post/its-the-contributors-in-open-source-who-make-the-community-great/+page.markdoc index 1ebe9ece91..5fd6d41c12 100644 --- a/src/routes/blog/post/its-the-contributors-in-open-source-who-make-the-community-great/+page.markdoc +++ b/src/routes/blog/post/its-the-contributors-in-open-source-who-make-the-community-great/+page.markdoc @@ -67,11 +67,11 @@ Every single contributor and every single contribution made the product better f ## Hacktoberfest to kick off your open source journey -As mentioned previously, many of our team members were first contributors before they joined. Our very own [Christy Jacob](https://github.com/christyjacob4) once started as a contributor during [Hacktoberfest](https://appwrite.io/blog/post/hacktoberfest-2023), the largest celebration of open source, and is now a Lead Engineer building Appwrite Cloud. It all starts with that first step and pull request. +As mentioned previously, many of our team members were first contributors before they joined. Our very own [Christy Jacob](https://github.com/christyjacob4) once started as a contributor during [Hacktoberfest](/blog/post/hacktoberfest-2023), the largest celebration of open source, and is now a Lead Engineer building Appwrite Cloud. It all starts with that first step and pull request. ![hacktoberfest partecipants](/images/blog/badge.png) -So there is more to open source contributing than just helping build a project. It can help you progress in your future career by learning, building your portfolio, networking, and even finding job opportunities. All the more reasons to jump on the wagon. With that said, we also understand that for some, contributing might seem daunting, but it really isn't if you get the right help and guidance. This is where [Hacktoberfest](https://appwrite.io/blog/post/hacktoberfest-2023) comes in. It is an amazing event that allows you to contribute to many different projects in many different ways together with others, so you don't have to start your journey alone. It started on the 1st of October 2023, and you can join the entire month. This is your chance to kickstart your open source journey. +So there is more to open source contributing than just helping build a project. It can help you progress in your future career by learning, building your portfolio, networking, and even finding job opportunities. All the more reasons to jump on the wagon. With that said, we also understand that for some, contributing might seem daunting, but it really isn't if you get the right help and guidance. This is where [Hacktoberfest](/blog/post/hacktoberfest-2023) comes in. It is an amazing event that allows you to contribute to many different projects in many different ways together with others, so you don't have to start your journey alone. It started on the 1st of October 2023, and you can join the entire month. This is your chance to kickstart your open source journey. We want to invite developers to come join us during Hacktoberfest. Together, we continue to build Appwrite through the power of open source. Allowing every developer to have the capabilities of hundreds of developers through one platform. diff --git a/src/routes/blog/post/leveraging-baas-tools-to-scale-faster/+page.markdoc b/src/routes/blog/post/leveraging-baas-tools-to-scale-faster/+page.markdoc index 829cf305db..e6c96b3e9e 100644 --- a/src/routes/blog/post/leveraging-baas-tools-to-scale-faster/+page.markdoc +++ b/src/routes/blog/post/leveraging-baas-tools-to-scale-faster/+page.markdoc @@ -1,7 +1,7 @@ --- layout: post title: Leveraging backend as a service tools to scale faster -description: Discover what thousands of developers already know, and learn how a BaaS platform can benefit you. +description: Discover what thousands of developers already know, and learn how a BaaS platform can benefit you. date: 2023-09-27 cover: /images/blog/baas.png timeToRead: 6 @@ -22,7 +22,7 @@ We believe in most cases there is an easier way, which is where the idea of "Bac A backend as a service is a third party service that lets you develop the backend part of your application without building things from scratch. It's about NOT reinventing the wheel for every app you launch. -Each BaaS platform has its own set of tools and features, so let's use [Appwrite](https://appwrite.io/) as an example of offerings you may see. A service like Appwrite provides you with a console from which you can manage your entire backend. From your console's dashboard you'll have the ability to create and manage services such as: +Each BaaS platform has its own set of tools and features, so let's use [Appwrite](/) as an example of offerings you may see. A service like Appwrite provides you with a console from which you can manage your entire backend. From your console's dashboard you'll have the ability to create and manage services such as: - A Database - Authentication & User Management diff --git a/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc b/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc index 9e1fe202f2..347b5a9361 100644 --- a/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc +++ b/src/routes/blog/post/manage-user-permissions-with-labels-and-teams/+page.markdoc @@ -11,7 +11,7 @@ featured: false --- -Teams and Labels allow us to categorize and group users together, allowing us to set permissions to resources at the Team and label level instead of at the individual user level. Grouping users together makes managing permissions to documents, files and functions much more efficient this way. +Teams and Labels allow us to categorize and group users together, allowing us to set permissions to resources at the Team and label level instead of at the individual user level. Grouping users together makes managing permissions to documents, files and functions much more efficient this way. ![Labels vs Teams](/images/blog/manage-user-permissions-with-labels-and-teams/labels3.png) @@ -26,7 +26,7 @@ So let’s dive into the next section and see how Teams and Labels work and the ## Teams Vs Labels -Teams and labels accomplish much of the same thing, however there are some technical and fundamental differences between the two. While deciding which one to use will be based on your preferences and specific needs, I’ll point out the key differences and try to guide you in the right direction by providing an example of when one may be preferred over the other. +Teams and labels accomplish much of the same thing, however there are some technical and fundamental differences between the two. While deciding which one to use will be based on your preferences and specific needs, I’ll point out the key differences and try to guide you in the right direction by providing an example of when one may be preferred over the other. ### Teams @@ -34,9 +34,9 @@ Teams are designed to group users together, allowing for shared access to resour ![Labels vs Teams](/images/blog/manage-user-permissions-with-labels-and-teams/labels6.png) -One of the key differences between Teams and Labels is that Teams have the ability to set roles within a Team and assign permissions to those roles. This means all users in a Team will inherit permissions from the Team such as read access to all messages in the chat room, but will also inherit permissions from their role as well if they have been assigned one, such as moderator or admin. +One of the key differences between Teams and Labels is that Teams have the ability to set roles within a Team and assign permissions to those roles. This means all users in a Team will inherit permissions from the Team such as read access to all messages in the chat room, but will also inherit permissions from their role as well if they have been assigned one, such as moderator or admin. -This allows for granular control over what each Team member can do based on their role within the Team. +This allows for granular control over what each Team member can do based on their role within the Team. ### Labels @@ -46,8 +46,8 @@ Labels are essentially custom tags that you can assign to a user. They act as cu Just like Teams, we can grant permissions to specific Labels. Labels are attached to individual user accounts and are used to categorize users on a one-to-one basis. Labels can be used in a similar manner to Teams but are a more lightweight and flexible way to manage users and permissions. -This would make Labels a great option for managing which users can view restricted content behind a paywall like a course on Udemy or an e-book on a digital library platform. In this example you would simply attach a label that is unique to a user after they pay to access a product, and from that point on, the label would grant the user permission. If this access was subscription-based and the user stopped paying, we could simply remove the label from the user, and their access would be revoked since they no longer carry the label that gives them access. - +This would make Labels a great option for managing which users can view restricted content behind a paywall like a course on Udemy or an e-book on a digital library platform. In this example you would simply attach a label that is unique to a user after they pay to access a product, and from that point on, the label would grant the user permission. If this access was subscription-based and the user stopped paying, we could simply remove the label from the user, and their access would be revoked since they no longer carry the label that gives them access. + ### Summary - Labels are great for tagging users and assigning permissions based on those tags, while Teams are for grouping users together and allowing role-based management within a Team. @@ -60,7 +60,7 @@ This would make Labels a great option for managing which users can view restrict Here’s the process of granting users permission to resources through Teams and labels. Be sure to pay attention to step 3 in the process. There’s a slight difference in how users connect to Teams Vs. labels. -1. Create a Team or Label +1. Create a Team or Label 2. Assign permissions to that Team or Label 3. **Team**: Add users to the Team / **Label**: Add a Label to the user 4. Users now inherit permissions from the Team they are on or the Labels they have been given. @@ -69,17 +69,17 @@ Did you catch the difference between Labels and Teams in step #3? With Teams, we ## Managing Teams & Labels from the Console -When getting started with Teams and Labels, it could be helpful to set things up from the console manually so you can better visualize how things work. +When getting started with Teams and Labels, it could be helpful to set things up from the console manually so you can better visualize how things work. ## Teams -Let's start with creating a new Team, adding members, and assigning roles to those members of the Team. +Let's start with creating a new Team, adding members, and assigning roles to those members of the Team. 1 - To create a Team, you can go to the “Auth” tab from your console and select “Teams”. From here, you can click on “Create Team” and complete the process of creating by giving your new Team a name -2 - Once your Team is created, you can add a Member to the Team by selecting the “Members” tab and clicking “Create Membership”. Here you will enter the user's email address (name can be left blank) and assign a role to the member. Roles are optional, so you can leave this part blank. +2 - Once your Team is created, you can add a Member to the Team by selecting the “Members” tab and clicking “Create Membership”. Here you will enter the user's email address (name can be left blank) and assign a role to the member. Roles are optional, so you can leave this part blank. -That’s it for creating a Team and adding members from the appwrite console. Now you can assign document, storage, and function permissions to your Teams. As an example, for collection level permissions, you can go to the “settings'' tab in a collection, and in the “permissions” section, choose “Select Teams'' to give permissions to an entire Team or “Custom permissions” if you want to assign permission to only users with a particular role within the Team. +That’s it for creating a Team and adding members from the appwrite console. Now you can assign document, storage, and function permissions to your Teams. As an example, for collection level permissions, you can go to the “settings'' tab in a collection, and in the “permissions” section, choose “Select Teams'' to give permissions to an entire Team or “Custom permissions” if you want to assign permission to only users with a particular role within the Team. ## Labels @@ -129,7 +129,7 @@ const promise = users.updateLabels('', ['subscriber']); ### Resources Learn more about Labels and Teams in our documentation: -- [Labels](https://appwrite.io/docs/products/auth/labels) -- [Teams](https://appwrite.io/docs/products/auth/teams) +- [Labels](/docs/products/auth/labels) +- [Teams](/docs/products/auth/teams) Watch the video tutorial on 'how to manage user permissions with Labels and Teams' on [YouTube](https://www.youtube.com/watch?v=xJTj5Ye8-W0&feature=youtu.be). \ No newline at end of file diff --git a/src/routes/blog/post/oauth-openid/+page.markdoc b/src/routes/blog/post/oauth-openid/+page.markdoc index c58238685d..8b14995ee7 100644 --- a/src/routes/blog/post/oauth-openid/+page.markdoc +++ b/src/routes/blog/post/oauth-openid/+page.markdoc @@ -36,7 +36,7 @@ OAuth 2.0 is widely used for secure, delegated access across various application # What is OpenID Connect? -OpenID Connect is a simple identity layer built on top of OAuth 2.0. It allows clients to verify the user's identity based on the authentication performed by an Authorization Server, as well as to obtain basic profile information about the user in an interoperable way. +OpenID Connect is a simple identity layer built on top of OAuth 2.0. It allows clients to verify the user's identity based on the authentication performed by an Authorization Server, as well as to obtain basic profile information about the user in an interoperable way. OIDC uses OAuth 2.0 as its foundation. While OAuth 2.0 provides a framework for authorization, OIDC extends this to include authentication, delivering a more holistic security solution. @@ -88,18 +88,18 @@ Appwrite Authentication features support for over 30 OAuth 2.0 adapters, includi Appwrite provides the necessary redirect URL to add to your OIDC app configuration. -Once that is done, you can use any of the Appwrite client SDKs to implement OAuth 2.0 or OIDC authentication in just a few lines of code. +Once that is done, you can use any of the Appwrite client SDKs to implement OAuth 2.0 or OIDC authentication in just a few lines of code. ```client-web import { Client, Account, OAuthProvider } from "appwrite"; const client = new Client() .setEndpoint('https://cloud.appwrite.io/v1') - .setProject(''); + .setProject(''); const account = new Account(client); account.createOAuth2Session(OAuthProvider.Oidc, '[LINK_ON_SUCCESS]', '[LINK_ON_FAILURE]'); ``` -To learn more about Appwrite and OAuth 2.0, ensure you visit the [Appwrite documentation](https://appwrite.io/docs/products/auth/oauth2). \ No newline at end of file +To learn more about Appwrite and OAuth 2.0, ensure you visit the [Appwrite documentation](/docs/products/auth/oauth2). \ No newline at end of file diff --git a/src/routes/blog/post/oss-journey-blog/+page.markdoc b/src/routes/blog/post/oss-journey-blog/+page.markdoc index eca81a3a77..4a16ee186c 100644 --- a/src/routes/blog/post/oss-journey-blog/+page.markdoc +++ b/src/routes/blog/post/oss-journey-blog/+page.markdoc @@ -9,11 +9,11 @@ author: laura-du-ry category: OSS --- -With the release of [Appwrite Pro](https://appwrite.io/blog/post/announcing-appwrite-pro), we reached another milestone. A new development in our product offering that allows you to build with more confidence. +With the release of [Appwrite Pro](/blog/post/announcing-appwrite-pro), we reached another milestone. A new development in our product offering that allows you to build with more confidence. But for those of you thinking: ‘This is a paid plan, so what about us open-source maintainers?’ -Well, we haven’t forgotten you. Appwrite is open-source, and we have come so far due to the love the open-source community has shown us. Therefore, we want to continue to give back to the community by allowing OSS maintainers to build with Appwrite Pro free of charge. With this OSS plan, we hope to ensure the future for many open-source maintainers, just like many of you have ensured ours. +Well, we haven’t forgotten you. Appwrite is open-source, and we have come so far due to the love the open-source community has shown us. Therefore, we want to continue to give back to the community by allowing OSS maintainers to build with Appwrite Pro free of charge. With this OSS plan, we hope to ensure the future for many open-source maintainers, just like many of you have ensured ours. Let’s take a short walk down memory lane to learn about Appwrite’s open-source journey so far and why we owe the community our support. @@ -23,7 +23,7 @@ The [first ever pull request](https://github.com/appwrite/appwrite/pulls?page=10 ![Eldad's first ever PR for Appwrite](/images/blog/first-pr1.png) -Not much later, Appwrite's [open-source version](https://betterprogramming.pub/introducing-appwrite-an-open-source-backend-server-for-mobile-web-developers-4be70731575d) was launched. The launch went viral, our Hacker News post was trending, and our GitHub Stars charts went up with over 1,500 new stargazers in the first month after release. The love was evident from both sides and together with many contributors, Eldad worked tirelessly as a solo maintainer to build out the product envisioned, ensuring many other developers would not face the same struggles when building complex software. +Not much later, Appwrite's [open-source version](https://betterprogramming.pub/introducing-appwrite-an-open-source-backend-server-for-mobile-web-developers-4be70731575d) was launched. The launch went viral, our Hacker News post was trending, and our GitHub Stars charts went up with over 1,500 new stargazers in the first month after release. The love was evident from both sides and together with many contributors, Eldad worked tirelessly as a solo maintainer to build out the product envisioned, ensuring many other developers would not face the same struggles when building complex software. ![First ever community contribution for Appwrite](/images/blog/community-pr1.png) @@ -33,7 +33,7 @@ Today, Appwrite has over [38K stars](https://github.com/appwrite/appwrite), 800 ### **Pre-monetization as a solo maintainer** -After three months of getting serious traction, Eldad decided to become a full-time open-source maintainer, leaving a full-time job. After 12 months, with no monetization of Appwrite yet possible, the real struggle started. The financial burden as a solo maintainer was immense. Not only do you have to cover the costs of building your project, such as infrastructure, development tools, and hosting, but you also feel the financial burden of day-to-day life. +After three months of getting serious traction, Eldad decided to become a full-time open-source maintainer, leaving a full-time job. After 12 months, with no monetization of Appwrite yet possible, the real struggle started. The financial burden as a solo maintainer was immense. Not only do you have to cover the costs of building your project, such as infrastructure, development tools, and hosting, but you also feel the financial burden of day-to-day life. After many considerations to fight the financial pressure, Appwrite got an amazing investment offer from the outstanding individuals at Ibex and Seedcamp, who offered to support the vision. Six months later, they were followed by an investment from Bessemer (Auth0, Cloudinary) and Flybridge (Firebase, MongoDB) that led our 8.5m seed round. The timing could not have been better, and Appwrite was able to thrive with new financial stability. @@ -47,7 +47,7 @@ The first thing Eldad did with the funding was build out the team. And what bett ![The evolution of Torsten Dittman's contributions to Appwrite](/images/blog/Torsten-GitHub-profile.png) -As we grew, so did our team, and we added many more engineers to the team. Many of them came [from the community.](https://appwrite.io/community) Some contributed to code, some started helping others in the community, and some created content. To this day, we still hire from the community, as we stand by open source and its contributors. It is embedded in our DNA. +As we grew, so did our team, and we added many more engineers to the team. Many of them came [from the community.](/community) Some contributed to code, some started helping others in the community, and some created content. To this day, we still hire from the community, as we stand by open source and its contributors. It is embedded in our DNA. ### **Appwrite Swag Store** @@ -65,4 +65,4 @@ This fund has now come to an end, but we successfully supported twenty OSS maint ### **Pro Plan for free** -Now that we have released Appwrite Pro, we can also release our new initiative to give back to the OSS community, the Appwrite OSS Program. OSS maintainers can apply for the OSS Program and use Appwrite Pro resources free of charge. This plan is important to us as we strongly believe in helping OSS maintainers, and we are humbled to have the opportunity and privilege to contribute to the growth of developers. We know very well where we came from, and Appwrite has been built with and by the open-source community. We’re excited to continue our support and to see OSS maintainers reach out to build with Appwrite Pro. In case you are such a maintainer, read our [announcement blog](https://appwrite.io/blog/post/announcing-the-appwrite-oss-program) to learn more. +Now that we have released Appwrite Pro, we can also release our new initiative to give back to the OSS community, the Appwrite OSS Program. OSS maintainers can apply for the OSS Program and use Appwrite Pro resources free of charge. This plan is important to us as we strongly believe in helping OSS maintainers, and we are humbled to have the opportunity and privilege to contribute to the growth of developers. We know very well where we came from, and Appwrite has been built with and by the open-source community. We’re excited to continue our support and to see OSS maintainers reach out to build with Appwrite Pro. In case you are such a maintainer, read our [announcement blog](/blog/post/announcing-the-appwrite-oss-program) to learn more. diff --git a/src/routes/blog/post/password-hashing-algorithms/+page.markdoc b/src/routes/blog/post/password-hashing-algorithms/+page.markdoc index 0806b54cc5..b1ae030010 100644 --- a/src/routes/blog/post/password-hashing-algorithms/+page.markdoc +++ b/src/routes/blog/post/password-hashing-algorithms/+page.markdoc @@ -13,9 +13,9 @@ In today's digital world, securing sensitive information such as passwords is of ## What is a password hashing algorithm? -**Password hashing algorithms** are specialized mathematical functions that transform plaintext passwords into unique, fixed-size outputs, known as hashes, which are then stored in databases. Through the use of techniques such as salting, adjustable work factors, and memory hardness, modern password hashing algorithms are designed to thwart attacks and keep user data secure. +**Password hashing algorithms** are specialized mathematical functions that transform plaintext passwords into unique, fixed-size outputs, known as hashes, which are then stored in databases. Through the use of techniques such as salting, adjustable work factors, and memory hardness, modern password hashing algorithms are designed to thwart attacks and keep user data secure. -The mathematical process of password hashing involves applying a hash function to a combination of a password and a salt, iterating the process based on a work factor, and, in some cases, incorporating memory hardness to increase the computational complexity. +The mathematical process of password hashing involves applying a hash function to a combination of a password and a salt, iterating the process based on a work factor, and, in some cases, incorporating memory hardness to increase the computational complexity. This function would operate as follows: @@ -33,41 +33,41 @@ The result is a fixed-size hash that is unique, deterministic, and resistant to Password hashing algorithms have certain characteristics: -- **One-way function** +- **One-way function** Password hashing algorithms should be one-way functions, making it computationally infeasible to reverse-engineer the original password from the hash output, preventing attackers from trying to retrieve user passwords from the stored hashes. -- **Deterministic** +- **Deterministic** A password hashing algorithm must always produce the same hash output for a given input to ensure consistency and reliability. -- **Fixed-size output** +- **Fixed-size output** Password hashing algorithms must produce a fixed-size output (hash) regardless of the input size. This is necessary when verifying the password inputted by comparing it with its hash. -- **Slow computation** +- **Slow computation** Unlike general hashing algorithms, which prioritize fast computation, password hashing algorithms should be intentionally slow to compute. This characteristic makes it more time-consuming and resource-intensive for attackers to perform brute-force attacks or attempt to guess passwords using a large number of inputs. -- **Avalanche effect** +- **Avalanche effect** A small change in the input should result in a significant change in the hash output, making the new output appear uncorrelated with the old output. This property makes it difficult for attackers to predict the input based on the output or find two different inputs that produce the same output (collision). For example, the SHA-256 hash for `eight` is `c195d2d8756234367242ba7616c5c60369bc25ced2dcb5b92808d31b58ef217a`, but for `right` is `27042f4e6eca7d0b2a7ee4026df2ecfa51d3339e6d122aa099118ecd8563bad9`, despite having only one character different. -- **Pseudorandomness** +- **Pseudorandomness** The output of a password hashing algorithm should appear random and uniformly distributed, making it difficult for attackers to predict patterns or relationships between inputs and their corresponding hash outputs. -- **Resistance to side-channel attacks** +- **Resistance to side-channel attacks** Password hashing algorithms should be designed to resist side-channel attacks, such as timing attacks, where an attacker attempts to gain information about the password or hash by analyzing the time taken to compute the hash. -- **Adjustable work factor** +- **Adjustable work factor** A good password hashing algorithm should allow for an adjustable work factor, also known as a cost factor or iteration count. This increases the algorithm's computational complexity over time as hardware capabilities improve, ensuring that the password hashing process remains secure and resource-intensive for attackers. -- **Memory hardness** +- **Memory hardness** Some modern password hashing algorithms are designed to be memory-hard, meaning that they require a significant amount of memory to compute the hash. This characteristic makes it more difficult for attackers to perform parallel attacks using specialized hardware, such as GPUs or ASICs, which have limited memory resources. -- **Wide adoption and peer review** +- **Wide adoption and peer review** A reliable password hashing algorithm should have a proven track record, be widely adopted, and have undergone extensive peer review and analysis by the cryptographic community. This ensures that the algorithm has been tested for vulnerabilities and is considered secure for password storage and verification. ## Examples of password-hashing algorithms Here are some modern password-hashing algorithms and their concise descriptions: -- **Bcrypt** +- **Bcrypt** Bcrypt is a widely used password hashing algorithm based on the Blowfish cipher. It incorporates a salt and an adjustable work factor to slow down the hashing process, making brute-force attacks more time-consuming. Bcrypt is designed to be resistant to side-channel attacks and is considered secure for password storage. -- **Scrypt** +- **Scrypt** Scrypt is a memory-hard password hashing algorithm that requires a significant amount of memory to compute the hash, making it more difficult for attackers to perform parallel attacks using specialized hardware. It also supports adjustable work factors and salt usage. Scrypt was specifically designed to protect against hardware-based attacks, such as those using GPUs or ASICs. -- **Argon2** +- **Argon2** Argon2 is a modern, memory-hard password hashing algorithm that won the Password Hashing Competition in 2015. It offers adjustable work factors for both time (computation) and memory usage, providing a balance between security and performance. Argon2 supports salting and has three main variants: - `Argon2i`: optimized for resistance to side-channel attacks - `Argon2d`: optimized for resistance to time-memory trade-off (TMTO) attacks - `Argon2id`: a hybrid version of both of the above -- **PBKDF2 (Password-Based Key Derivation Function 2)** +- **PBKDF2 (Password-Based Key Derivation Function 2)** PBKDF2 is a widely-used password hashing algorithm that iteratively applies a pseudorandom function, such as HMAC, to the input password and salt. It supports an adjustable work factor, increasing the number of iterations to make the hashing process slower and more resistant to attacks. While PBKDF2 is considered secure, it is not memory-hard and may be more susceptible to hardware-based attacks compared to `scrypt` or `Argon2`. These modern password hashing algorithms are designed to provide increased security for password storage and verification by incorporating features like salting, adjustable work factors, memory hardness, and resistance to various types of attacks. ## Password hashing and Appwrite @@ -96,7 +96,7 @@ When a developer implements account creation on a server-side application, howev - PHPass - SHA -An additional side-benefit this offers is that it allows a developer to migrate users from other platforms, such as Firebase, Supabase, and Nhost, using [Appwrite Migrations](https://appwrite.io/docs/advanced/migrations). +An additional side-benefit this offers is that it allows a developer to migrate users from other platforms, such as Firebase, Supabase, and Nhost, using [Appwrite Migrations](/docs/advanced/migrations). ## Recap diff --git a/src/routes/blog/post/password-protection/+page.markdoc b/src/routes/blog/post/password-protection/+page.markdoc index 2ec54f6eb4..35d4321a94 100644 --- a/src/routes/blog/post/password-protection/+page.markdoc +++ b/src/routes/blog/post/password-protection/+page.markdoc @@ -72,4 +72,4 @@ Please help your users understand why setting strong passwords is necessary and ## Moving Forward -Security is a shared responsibility between developers and users. Collaborating with them in this process is essential to implement better password protection and keep your applications secure. As a developer, by the way, if you would like to try an authentication solution that implements better password protection policies out-of-the-box, look at [Appwrite](https://appwrite.io/docs/products/auth). With various features such as password hashing, session limits, a strong permissions system, password history, a password dictionary, and personal data checks in passwords, [Appwrite Authentication](https://appwrite.io/docs/products/auth) offers an easy-to-implement yet robust authentication system for you to build with. +Security is a shared responsibility between developers and users. Collaborating with them in this process is essential to implement better password protection and keep your applications secure. As a developer, by the way, if you would like to try an authentication solution that implements better password protection policies out-of-the-box, look at [Appwrite](/docs/products/auth). With various features such as password hashing, session limits, a strong permissions system, password history, a password dictionary, and personal data checks in passwords, [Appwrite Authentication](/docs/products/auth) offers an easy-to-implement yet robust authentication system for you to build with. diff --git a/src/routes/blog/post/personal-chatbot-gpt-4o/+page.markdoc b/src/routes/blog/post/personal-chatbot-gpt-4o/+page.markdoc index d2e562807b..1a12a29028 100644 --- a/src/routes/blog/post/personal-chatbot-gpt-4o/+page.markdoc +++ b/src/routes/blog/post/personal-chatbot-gpt-4o/+page.markdoc @@ -9,7 +9,7 @@ author: aditya-oberai category: functions --- -Recently, at the OpenAI Spring Update, OpenAI CTO Mira Murati announced the launch of their new flagship model, **GPT-4o**. GPT-4o happens to be OpenAI's fastest and most affordable model so far, which led us to wonder if we could use it to build our very own chatbot. +Recently, at the OpenAI Spring Update, OpenAI CTO Mira Murati announced the launch of their new flagship model, **GPT-4o**. GPT-4o happens to be OpenAI's fastest and most affordable model so far, which led us to wonder if we could use it to build our very own chatbot. Therefore, in this blog, we will learn how to use Appwrite Functions and the OpenAI GPT-4o API to build a personal chatbot. @@ -147,7 +147,7 @@ To get our chatbot up and running, we must first develop a UI you can interact w ### Preparing our utility functions -To simplify the function logic, we create additional utility functions to +To simplify the function logic, we create additional utility functions to - return the contents of a file in the static folder as a string (to send our UI to the client browser) - throw an error if any of the keys are missing from the object (to check for missing environment variables) @@ -271,5 +271,5 @@ And with that, you have successfully deployed your personal chatbot powered by G Additionally, if you would like to learn more about Appwrite Functions, here are some resources: -- [Appwrite Functions docs](https://appwrite.io/docs/functions): These documents provide more information on how to use Appwrite Functions. +- [Appwrite Functions docs](/docs/functions): These documents provide more information on how to use Appwrite Functions. - [Appwrite Discord](https://discord.com/invite/appwrite): Connect with other developers and the Appwrite team for discussion, questions, and collaboration. \ No newline at end of file diff --git a/src/routes/blog/post/preventing-password-sharing/+page.markdoc b/src/routes/blog/post/preventing-password-sharing/+page.markdoc index ba07de9d5a..76f85633d4 100644 --- a/src/routes/blog/post/preventing-password-sharing/+page.markdoc +++ b/src/routes/blog/post/preventing-password-sharing/+page.markdoc @@ -41,7 +41,7 @@ To prevent password sharing and enhance security, several tools and technologies ## 1. Authentication systems -- **Multi-factor authentication (MFA)**: Tools like Duo Security, Authy, and Google Authenticator add an extra layer of security by requiring additional verification beyond just a password. We at Appwrite have also recently announced our own 2FA solution for consumers of our Authentication product, which you can read about in our [product announcement](https://appwrite.io/blog/post/announcing-two-factor-authentication). +- **Multi-factor authentication (MFA)**: Tools like Duo Security, Authy, and Google Authenticator add an extra layer of security by requiring additional verification beyond just a password. We at Appwrite have also recently announced our own 2FA solution for consumers of our Authentication product, which you can read about in our [product announcement](/blog/post/announcing-two-factor-authentication). - **Single Sign-On (SSO) providers**: Solutions like Okta, Azure Active Directory, and OneLogin allow users to access multiple applications with a single set of credentials, reducing the temptation to share passwords. ## 2. Passwordless authentication technologies diff --git a/src/routes/blog/post/the-evolution-of-team-appwrite/+page.markdoc b/src/routes/blog/post/the-evolution-of-team-appwrite/+page.markdoc index 3b77644707..9992904713 100644 --- a/src/routes/blog/post/the-evolution-of-team-appwrite/+page.markdoc +++ b/src/routes/blog/post/the-evolution-of-team-appwrite/+page.markdoc @@ -49,7 +49,7 @@ If you have been around the Appwrite community, you must know [Aditya Oberai](ht [Dennis Ivy](https://twitter.com/dennisivy11) is not just a class teammate but also an amazing tutor to so many devs, as he has produced hundreds of videos that have helped others in the community learn how to code, including [tutorials on Appwrite](https://www.youtube.com/watch?v=pGNxoIoLt_Y). Need we say more? Contributing is more than just code! -[Sara Kaandorp](https://www.linkedin.com/in/sara-k-78468a116/) joined as the first non-technical hire. Now, She leads our Design team and, with it, brings our brand and visual identity to new heights every day. She might not have contributed to the community, but as a designer, she put the work in with her portfolio. Also, she understands development as she has a [background](https://appwrite.io/blog/post/appwrite-decoded-sara-kaandorp/) in it. Therefore, there is no better designer we could wish for to lead all of our efforts. +[Sara Kaandorp](https://www.linkedin.com/in/sara-k-78468a116/) joined as the first non-technical hire. Now, She leads our Design team and, with it, brings our brand and visual identity to new heights every day. She might not have contributed to the community, but as a designer, she put the work in with her portfolio. Also, she understands development as she has a [background](/blog/post/appwrite-decoded-sara-kaandorp/) in it. Therefore, there is no better designer we could wish for to lead all of our efforts. # How to stand out from the crowd @@ -61,6 +61,6 @@ Now, this is not an unhealthy testimony to working day and night, every day, no # Doing more with your skills -So, how do you stand out? Be active in the community you want to work in. Contribute to open-source projects with code, content, support, or whatever works best for you. To learn more and get inspired, follow people like [Eddie Jaoude](https://twitter.com/eddiejaoude), [Danny Thompson](https://twitter.com/DThompsonDev), [Ruth Ikegah](https://twitter.com/IkegahRuth), [Santosh Yadav,](https://twitter.com/SantoshYadavDev) and our very own [Eldad Fux](https://twitter.com/eldadfux). However, if you decide to contribute, keep in mind: [keep it healthy.](https://appwrite.io/blog/post/make-open-source-healthier) +So, how do you stand out? Be active in the community you want to work in. Contribute to open-source projects with code, content, support, or whatever works best for you. To learn more and get inspired, follow people like [Eddie Jaoude](https://twitter.com/eddiejaoude), [Danny Thompson](https://twitter.com/DThompsonDev), [Ruth Ikegah](https://twitter.com/IkegahRuth), [Santosh Yadav,](https://twitter.com/SantoshYadavDev) and our very own [Eldad Fux](https://twitter.com/eldadfux). However, if you decide to contribute, keep in mind: [keep it healthy.](/blog/post/make-open-source-healthier) ![Eddie Jaoude Tweet](/images/blog/the-evolution-of-team-appwrite/eddie-jaoude.png) diff --git a/src/routes/blog/post/the-journey-and-meaning-behind-our-new-logo/+page.markdoc b/src/routes/blog/post/the-journey-and-meaning-behind-our-new-logo/+page.markdoc index e221e4f445..1732769229 100644 --- a/src/routes/blog/post/the-journey-and-meaning-behind-our-new-logo/+page.markdoc +++ b/src/routes/blog/post/the-journey-and-meaning-behind-our-new-logo/+page.markdoc @@ -1,7 +1,7 @@ --- layout: post title: The journey and meaning behind our new logo -description: +description: date: 2023-10-03 cover: /images/blog/the-journey-and-meaning-behind-our-new-logo/cover.png timeToRead: 5 @@ -66,7 +66,7 @@ Finally, its overall look is reminiscent of the lowercase letter 'a,' standing f ![Decorative lines](/images/blog/the-journey-and-meaning-behind-our-new-logo/lines.png) -Our new logo inspired the rest of our visual identity. Our [website](https://appwrite.io/), promotional materials, and even [documentation](https://appwrite.io/docs) are now harmonized with this new identity, giving Appwrite a fresh, meaningful, and cohesive look. +Our new logo inspired the rest of our visual identity. Our [website](/), promotional materials, and even [documentation](/docs) are now harmonized with this new identity, giving Appwrite a fresh, meaningful, and cohesive look. # The road ahead diff --git a/src/routes/blog/post/valentines-day-sonnet-generator/+page.markdoc b/src/routes/blog/post/valentines-day-sonnet-generator/+page.markdoc index 2f4d0e2e52..6ad1fc2761 100644 --- a/src/routes/blog/post/valentines-day-sonnet-generator/+page.markdoc +++ b/src/routes/blog/post/valentines-day-sonnet-generator/+page.markdoc @@ -206,7 +206,7 @@ Once you’ve completed all the aforementioned steps, you can push the code to t ![Function deployments](/images/blog/valentines-day-sonnet-generator/deployments.png) -You can then go ahead and test your function by opening the function domain in your browser. +You can then go ahead and test your function by opening the function domain in your browser. # Next steps @@ -218,5 +218,5 @@ If you liked this project or want to investigate the full project code, visit th For more information about Appwrite Functions, visit the following resources: -- [Appwrite Function Docs](https://appwrite.io/docs/functions): These documents provide more information on how to use Appwrite Functions. +- [Appwrite Function Docs](/docs/functions): These documents provide more information on how to use Appwrite Functions. - [Appwrite Discord](https://discord.com/invite/appwrite): Connect with other developers and the Appwrite team for discussion, questions, and collaboration. \ No newline at end of file diff --git a/src/routes/blog/post/what-is-hipaa-compliant/+page.markdoc b/src/routes/blog/post/what-is-hipaa-compliant/+page.markdoc index bccd37af8f..67c83a4f67 100644 --- a/src/routes/blog/post/what-is-hipaa-compliant/+page.markdoc +++ b/src/routes/blog/post/what-is-hipaa-compliant/+page.markdoc @@ -57,12 +57,12 @@ Start with a solid understanding of HIPAA's requirements. Resources are availabl - **Implement strong security measures** Use encryption for data at rest and in transit, ensure proper authentication mechanisms are in place, and regularly update and patch systems. - **Consider HIPAA early on** -Integrate HIPAA considerations into the design phase of your development process. It’s easier to build compliance into your application from the start than to retrofit it later. +Integrate HIPAA considerations into the design phase of your development process. It’s easier to build compliance into your application from the start than to retrofit it later. - **Invest in a HIPAA compliant tech stack** -Investigate what platforms and tools ad here to HIPAA compliancy and reassure they meet both your tech and compliancy requirements. +Investigate what platforms and tools ad here to HIPAA compliancy and reassure they meet both your tech and compliancy requirements. ## Caring for your users HIPAA might seem daunting at first glance, but it’s fundamentally about protecting individuals' health information. We have the power to build applications that not only innovate healthcare but also safeguard the very personal information people entrust to them. Understanding and implementing HIPAA regulations is not just a legal requirement; it's a critical component of ethical software development in the healthcare domain. So, the next time you come across HIPAA in your development journey, remember it’s more than just compliance—it’s about caring for the data privacy and security of your users. -Looking for a HIPAA compliant backend provider? Looking to replace Firebase? Appwrite can be your solution. Take a look at our [documentation](https://appwrite.io/docs/advanced/security) to learn more about our security. +Looking for a HIPAA compliant backend provider? Looking to replace Firebase? Appwrite can be your solution. Take a look at our [documentation](/docs/advanced/security) to learn more about our security. diff --git a/src/routes/changelog/(entries)/2024-05-29.markdoc b/src/routes/changelog/(entries)/2024-05-29.markdoc index 3be2edf184..c94fdd0287 100644 --- a/src/routes/changelog/(entries)/2024-05-29.markdoc +++ b/src/routes/changelog/(entries)/2024-05-29.markdoc @@ -82,7 +82,7 @@ Miscellaneous: - Feat: improve header demo values - Feat: add warning header -You can update by following the [upgrade docs](https://appwrite.io/docs/advanced/self-hosting/update). +You can update by following the [upgrade docs](/docs/advanced/self-hosting/update). {% arrow_link href="https://github.com/appwrite/appwrite/releases/tag/1.5.7" %} View the changelog on GitHub diff --git a/src/routes/cookies/+page.markdoc b/src/routes/cookies/+page.markdoc index 50215323f1..17644991e1 100644 --- a/src/routes/cookies/+page.markdoc +++ b/src/routes/cookies/+page.markdoc @@ -4,11 +4,11 @@ title: Cookies Policy transparentTableCells: true --- -We use in our site [Appwrite (https://appwrite.io/)](https://appwrite.io/) ("**Site**") cookies and similar files or technologies to automatically collect and store information about your computer, device, and Site usage, in order to improve their performance and enhance your user experience. We use the general term "**cookies**" in this policy to refer to these technologies and all such similar technologies that collect information automatically when you are using our Site where this policy is posted. You can find out more about cookies and how to control them in the information below. +We use in our site [Appwrite (/)](/) ("**Site**") cookies and similar files or technologies to automatically collect and store information about your computer, device, and Site usage, in order to improve their performance and enhance your user experience. We use the general term "**cookies**" in this policy to refer to these technologies and all such similar technologies that collect information automatically when you are using our Site where this policy is posted. You can find out more about cookies and how to control them in the information below. If you do not accept the use of these cookies, please disable them using the instructions in this cookie policy or by changing your browser settings so that cookies from this Site cannot be placed on your computer or mobile device. Important: disabling cookies on this Site may impair certain Site features. -In this Cookies Policy, we use the term Appwio "we", "us" and "our") to refer to Appwrite Code Ltd. Our Privacy Policy is available at [Appwrite Privacy Policy (https://appwrite.io/policy/privacy)](https://appwrite.io/policy/privacy). +In this Cookies Policy, we use the term Appwio "we", "us" and "our") to refer to Appwrite Code Ltd. Our Privacy Policy is available at [Appwrite Privacy Policy (/policy/privacy)](/policy/privacy). ## What is a cookie? diff --git a/src/routes/docs/advanced/platform/enterprise/+page.markdoc b/src/routes/docs/advanced/platform/enterprise/+page.markdoc index 0119c6cfb2..5f2b664df0 100644 --- a/src/routes/docs/advanced/platform/enterprise/+page.markdoc +++ b/src/routes/docs/advanced/platform/enterprise/+page.markdoc @@ -4,7 +4,7 @@ title: Enterprise description: How Appwrite can accelerate enterprise development teams and provide custom support and hosting options. --- -Enterprise development teams face unique challenges and have unique needs. +Enterprise development teams face unique challenges and have unique needs. Appwrite can provide tailored solutions for enterprise customers with custom hosting, training, and support needs. -If you're interested to learn about what Appwrite can do for your enterprise development teams, [contact us](https://appwrite.io/contact-us) for more details. \ No newline at end of file +If you're interested to learn about what Appwrite can do for your enterprise development teams, [contact us](/contact-us) for more details. \ No newline at end of file diff --git a/src/routes/docs/advanced/platform/oss/+page.markdoc b/src/routes/docs/advanced/platform/oss/+page.markdoc index 38bb487e57..7f09f4c9cd 100644 --- a/src/routes/docs/advanced/platform/oss/+page.markdoc +++ b/src/routes/docs/advanced/platform/oss/+page.markdoc @@ -22,7 +22,7 @@ To apply for this program, you must adhere to the official criteria for having a # Application {% #application %} -If your open-source project has outgrown our free Starter plan and you adhere to the criteria, you can apply for a free Pro plan by filling out our [OSS contact form](https://appwrite.io/oss-program). +If your open-source project has outgrown our free Starter plan and you adhere to the criteria, you can apply for a free Pro plan by filling out our [OSS contact form](/oss-program). We will review your request as soon as possible and get back to you to go over your application. Please note that Appwrite holds the sole discretion on deciding whether to accept projects. diff --git a/src/routes/docs/advanced/platform/pro/+page.markdoc b/src/routes/docs/advanced/platform/pro/+page.markdoc index 73cb5ccf21..61a6379554 100644 --- a/src/routes/docs/advanced/platform/pro/+page.markdoc +++ b/src/routes/docs/advanced/platform/pro/+page.markdoc @@ -6,15 +6,15 @@ description: Understand Appwrite's different pricing plans, behaviors, billing c Appwrite Cloud's Pro plan is designed for professional developers or development teams that need to build applications at scale. When applications outgrows Appwrite's Starter plan organizations can switch to Pro plan to continue growing its apps. -You can learn more about Pro plan on the [pricing page](https://appwrite.io/pricing). +You can learn more about Pro plan on the [pricing page](/pricing). # Create a Pro plan organization {% #create-a-pro-plan-organizations %} Appwrite's plans are applied to an entire organization. -Get started with a Pro plan organization by visiting the [pricing page](https://appwrite.io/pricing) and click **Start building** +Get started with a Pro plan organization by visiting the [pricing page](/pricing) and click **Start building** or create a new organization from the Appwrite Console and select **Pro plan**. -{% #trial %} @@ -25,7 +25,7 @@ Under the **Billing** tab, you can click **Change plan** to update your organiza # Resource limits {% #resource-limits %} -Each plan in Appwrite Cloud has a set of resource limits. You can find the details of these resource limits in the in the [pricing page](https://appwrite.io/pricing). +Each plan in Appwrite Cloud has a set of resource limits. You can find the details of these resource limits in the in the [pricing page](/pricing). Additional resources are automatically purchased when your orgnization goes over the resource limits to continue scaling until the budget cap is reached. Each resource limit is applied per billing period and resets at the beginning of each billing period. diff --git a/src/routes/docs/advanced/platform/scale/+page.markdoc b/src/routes/docs/advanced/platform/scale/+page.markdoc index df3bc2c1c2..b759f67db6 100644 --- a/src/routes/docs/advanced/platform/scale/+page.markdoc +++ b/src/routes/docs/advanced/platform/scale/+page.markdoc @@ -8,4 +8,4 @@ Appwrite's Scale plan is designed for growing development teams and agencies wit Appwrite's Scale plan is priced per organization instead of priced per member. Scale plan organizations will receive substancially greater resource limits and dedicated support. -Appwrite's Scale plan is coming soon, stay tuned for future announcements or [contact us](https://appwrite.io/contact-us) for more details. \ No newline at end of file +Appwrite's Scale plan is coming soon, stay tuned for future announcements or [contact us](/contact-us) for more details. \ No newline at end of file diff --git a/src/routes/docs/advanced/platform/starter/+page.markdoc b/src/routes/docs/advanced/platform/starter/+page.markdoc index a40c9a9fba..e08ba763e0 100644 --- a/src/routes/docs/advanced/platform/starter/+page.markdoc +++ b/src/routes/docs/advanced/platform/starter/+page.markdoc @@ -4,9 +4,9 @@ title: Starter description: Appwrite's Starter plan provides a generous free tier. Perfect for budding projects, hobbiests, and side-projects. --- -Appwrite Cloud provides a free **Starter** plan to all developers to start building with Appwrite. +Appwrite Cloud provides a free **Starter** plan to all developers to start building with Appwrite. Appwrite Starter plan is a perfect for personal hobbby projects for students and professional developers alike. -Learn more about Starter plan's generous resource limits on the [pricing page](https://appwrite.io/pricing). +Learn more about Starter plan's generous resource limits on the [pricing page](/pricing). # Create a Starter plan organization {% #create-a-starter-plan-organizations %} Appwrite Cloud's different plans are applied at an organization level with its resources shared by the organization's projects. @@ -15,7 +15,7 @@ When you create your Appwrite Cloud account, a **Personal Projects** organizatio Each Appwrite Cloud account can only have one organization on the **Starter** plan, but you can create unlimited projects in the organization. # Resource limits {% #resource-limits %} -Each plan in Appwrite Cloud has a set of resource limits. You can find the details of these resource limits in the in the [pricing page](https://appwrite.io/pricing). +Each plan in Appwrite Cloud has a set of resource limits. You can find the details of these resource limits in the in the [pricing page](/pricing). Each resource limit is applied per billing period and resets at the beginning of each billing period. You cannot purchase additional resources under the Starter plan. diff --git a/src/routes/docs/advanced/security/gdpr/+page.markdoc b/src/routes/docs/advanced/security/gdpr/+page.markdoc index 10f370c680..ba77b8583b 100644 --- a/src/routes/docs/advanced/security/gdpr/+page.markdoc +++ b/src/routes/docs/advanced/security/gdpr/+page.markdoc @@ -4,21 +4,21 @@ title: GDPR description: The safeguarding of your and your users' data is taken seriously at Appwrite. Learn about Appwrite's measures and compliance with the European General Data Protection Regulation (GDPR). --- -Appwrite is compliant with the European General Data Protection Regulation (GDPR). +Appwrite is compliant with the European General Data Protection Regulation (GDPR). GDPR is an EU regulation that concerns data privacy and security in the European Union and the European Economic Area. By attesting that Appwrite is GDPR compliant, we have done the following. - Appwrite users will retain access to their personal information including the right to correct and delete it. -- Impose the same rules upon the organization's sub-processors who assist in providing Appwrite's services as described in the Terms of Service (“ToS”). +- Impose the same rules upon the organization's sub-processors who assist in providing Appwrite's services as described in the Terms of Service (“ToS”). - Appwrite will notify users promptly about policy changes and/or data breaches. -You can learn more in our [Privacy policy](https://appwrite.io/privacy) and [Cookie policy](https://appwrite.io/cookies). +You can learn more in our [Privacy policy](/privacy) and [Cookie policy](/cookies). You can also reach us at `privacy@appwrite.io` for more questions. Appwrite has also implemented the following security measures to achieve technical compliance. - Appwrite implements a multi-layered security approach, integrating centralized IAM (Identity and Access Management) to regulate access to production resources. - Cloud security processes are employed for provisioning, configuring, monitoring, and accessing cloud resources. Changes in production environments follow a controlled process using Infrastructure as Code (IaC). -- Industry-standard encryption protocols like TLS/SSL safeguard data transmitted over networks. Additionally, data stored in databases and file storage is secured using techniques like AES encryption. Key rotations are performed at regular intervals to ensure data security. +- Industry-standard encryption protocols like TLS/SSL safeguard data transmitted over networks. Additionally, data stored in databases and file storage is secured using techniques like AES encryption. Key rotations are performed at regular intervals to ensure data security. - Appwrite performs regular security audits at the application and infrastructure layers to ensure compliance with industry-leading security standards and practices. Periodic vulnerability scans are also conducted on software dependencies and packages to mitigate against CVEs. # DPA {% #dpa %} @@ -26,8 +26,8 @@ Appwrite has also implemented the following security measures to achieve technic A DPA, or Data Processing Agreement, is a contract between a data controller and data processor concerning the rights and obligations of both parties when processing personal data. -This agreement describes how Appwrite and sub-processors handle, secure, and transfer data, as well as outline rights and obligations of both Appwrite and -you or your company when personal data is processed. +This agreement describes how Appwrite and sub-processors handle, secure, and transfer data, as well as outline rights and obligations of both Appwrite and +you or your company when personal data is processed. You can find and sign a DPA in your organization's **Settings** > **Download DPA document**. {% only_dark %} diff --git a/src/routes/docs/advanced/security/hipaa/+page.markdoc b/src/routes/docs/advanced/security/hipaa/+page.markdoc index 1d049c7b67..5552ad755a 100644 --- a/src/routes/docs/advanced/security/hipaa/+page.markdoc +++ b/src/routes/docs/advanced/security/hipaa/+page.markdoc @@ -10,19 +10,19 @@ HIPAA is an important regulation that protects patients' health data from being If you're building apps that handle information that is considered [PHI (Personal Health Information)](https://privacyruleandresearch.nih.gov/pr_07.asp) for an U.S. user base, data must be stored in a HIPAA-compliant environment. -To attain HIPAA compliance, we've taken extensive measures, ensuring that our practices align with the highest data protection standards. +To attain HIPAA compliance, we've taken extensive measures, ensuring that our practices align with the highest data protection standards. We have implemented robust measures to safeguard personal information, updating our policies, procedures, and infrastructure to meet the strict requirements of HIPAA regulations. - A strict data backup schedule. - An extended business continuity plan. -- Data retention rights for individuals as outlined in our [Privacy Policy](https://appwrite.io/privacy). +- Data retention rights for individuals as outlined in our [Privacy Policy](/privacy). - Intrusion detection and penetration testing. -- Encryption of data transmitted between Appwrite and users using transport layer security (TLS) and HTTP strict Transport Security, +- Encryption of data transmitted between Appwrite and users using transport layer security (TLS) and HTTP strict Transport Security, ensuring confidentiality both at rest and during transmission. -- Access to environments containing customer data is strictly controlled, -requiring authentication and authorization through multi-factor authentication (MFA). +- Access to environments containing customer data is strictly controlled, +requiring authentication and authorization through multi-factor authentication (MFA). -Appwrite safeguards personal information to the same extent it protects its own, complying with relevant privacy laws and regulations in the jurisdictions where its services are offered. +Appwrite safeguards personal information to the same extent it protects its own, complying with relevant privacy laws and regulations in the jurisdictions where its services are offered. -Please note that while Appwrite Cloud serves as a HIPAA-compliant platform to handle data, +Please note that while Appwrite Cloud serves as a HIPAA-compliant platform to handle data, it is the responsibility of developers to ensure that their application is also compliant with HIPAA regulations. \ No newline at end of file diff --git a/src/routes/docs/advanced/self-hosting/+page.markdoc b/src/routes/docs/advanced/self-hosting/+page.markdoc index 55602a0bbb..434c42d526 100644 --- a/src/routes/docs/advanced/self-hosting/+page.markdoc +++ b/src/routes/docs/advanced/self-hosting/+page.markdoc @@ -104,7 +104,7 @@ Make these configurations to unlock the full power of Appwrite. # Manual (Docker Compose) {% #manual %} -For advanced Docker users, the manual installation might seem more familiar. To set up Appwrite manually, download the Appwrite base [`docker-compose.yml`](https://appwrite.io/install/compose) and [`.env`](https://appwrite.io/install/env) files, then move them inside a directory named `appwrite`. After the download completes, update the different environment variables as you wish in the `.env` file and start the Appwrite stack using the following Docker command: +For advanced Docker users, the manual installation might seem more familiar. To set up Appwrite manually, download the Appwrite base [`docker-compose.yml`](/install/compose) and [`.env`](/install/env) files, then move them inside a directory named `appwrite`. After the download completes, update the different environment variables as you wish in the `.env` file and start the Appwrite stack using the following Docker command: ```bash docker compose up -d --remove-orphans diff --git a/src/routes/docs/advanced/self-hosting/tls-certificates/+page.markdoc b/src/routes/docs/advanced/self-hosting/tls-certificates/+page.markdoc index 6b67b872e1..3520bb35b7 100644 --- a/src/routes/docs/advanced/self-hosting/tls-certificates/+page.markdoc +++ b/src/routes/docs/advanced/self-hosting/tls-certificates/+page.markdoc @@ -7,7 +7,7 @@ description: Secure your self-hosted Appwrite instance with TLS certificates. Le Appwrite uses Let's Encrypt to auto-generate TLS certificates for your Appwrite instance to ensure your API traffic is appropriately encrypted. For Appwrite to properly generate certificates, a few conditions need to be met. 1. You need to use a public-facing domain with a known TLD pointing to your Appwrite instance. -2. Your `_APP_ENV` [environment variable](https://appwrite.io/docs/environment-variables) should be set for production mode. The default Appwrite setup comes with this predefined setting, so you should be OK unless you change it. +2. Your `_APP_ENV` [environment variable](/docs/environment-variables) should be set for production mode. The default Appwrite setup comes with this predefined setting, so you should be OK unless you change it. 3. You need to ensure you have a valid email address set on `_APP_SYSTEM_SECURITY_EMAIL_ADDRESS`. The default setup comes with `certs@appwrite.io` as the default value. While this address will work, it's recommended to change it to your own email. 4. Currently, Appwrite is using the [ACME](https://letsencrypt.org/docs/client-options/) HTTP challenge to issue an TLS certificate. This forces us to generate certificates for port 443 when the challenge itself is performed on port 80. At this point, other ports will not work. To overcome this limit, you can set Appwrite on a separate sub-domain or use your own certificate or proxy server in front of Appwrite. diff --git a/src/routes/docs/quick-starts/kotlin/+page.markdoc b/src/routes/docs/quick-starts/kotlin/+page.markdoc index fd99749066..2928d175ed 100644 --- a/src/routes/docs/quick-starts/kotlin/+page.markdoc +++ b/src/routes/docs/quick-starts/kotlin/+page.markdoc @@ -13,7 +13,7 @@ Head to the [Appwrite Console](https://cloud.appwrite.io/console). {% info title="Server SDK" %} This tutorial is for the Kotlin Server SDK, meant for server and backend applications. If you're trying to build a client-side app, like an Android app, -follow the [Start with Android guide](https://appwrite.io/docs/quick-starts/android). +follow the [Start with Android guide](/docs/quick-starts/android). {% /info %} If this is your first time using Appwrite, create an account and create your first project. @@ -55,7 +55,7 @@ Other scopes are optional. Create a Kotlin application by opening **IntelliJ IDEA** > **New Project** and create a **Kotlin** application. This quick start will use **Gradle** as the build system, with the Kotlin DSL. You can follow with Maven or IntelliJ if you're more comfortable. -Follow the wizard and open your new project. +Follow the wizard and open your new project. {% /section %} {% section #step-3 step=3 title="Install Appwrite" %} @@ -71,7 +71,7 @@ dependencies { {% /section %} {% section #step-4 step=4 title="Import Appwrite" %} -Find your project ID in the **Settings** page. Also, click on the **View API Keys** button to find the API key that was created earlier. +Find your project ID in the **Settings** page. Also, click on the **View API Keys** button to find the API key that was created earlier. {% only_dark %} ![Project settings screen](/images/docs/quick-starts/dark/project-id.png) diff --git a/src/routes/docs/quick-starts/swift/+page.markdoc b/src/routes/docs/quick-starts/swift/+page.markdoc index a9d7a8e47b..edb728a6e1 100644 --- a/src/routes/docs/quick-starts/swift/+page.markdoc +++ b/src/routes/docs/quick-starts/swift/+page.markdoc @@ -10,8 +10,8 @@ Learn how to setup your first Swift project powered by Appwrite. {% info title="Server SDK" %} This tutorial is for the Swift Server SDK, meant for server and backend applications. -If you're trying to build a client-side app, like an iOS, macOS, watchOS or tvOS app, -follow the [Start with Apple guide](https://appwrite.io/docs/quick-starts/apple). +If you're trying to build a client-side app, like an iOS, macOS, watchOS or tvOS app, +follow the [Start with Apple guide](/docs/quick-starts/apple). {% /info %} {% section #step-1 step=1 title="Create project" %} @@ -61,14 +61,14 @@ Follow the wizard and open your new project. {% /section %} {% section #step-3 step=3 title="Install Appwrite" %} -Install the Swift Appwrite SDK by going to **File** > **Add Packages...** and search for the repo url +Install the Swift Appwrite SDK by going to **File** > **Add Packages...** and search for the repo url `https://github.com/appwrite/sdk-for-swift` and select `sdk-for-swift`. Specify version as `5.0.1` with rule **Up to Next Major Version**. {% /section %} {% section #step-4 step=4 title="Import Appwrite" %} -Find your project ID in the **Settings** page. Also, click on the **View API Keys** button to find the API key that was created earlier. +Find your project ID in the **Settings** page. Also, click on the **View API Keys** button to find the API key that was created earlier. {% only_dark %} ![Project settings screen](/images/docs/quick-starts/dark/project-id.png) @@ -129,7 +129,7 @@ func prepareDatabase() async -> (Database?, Collection?) { key: "isComplete", xrequired: true ) - + return (todoDatabase, todoCollection) } ``` @@ -159,13 +159,13 @@ func seedDatabase(todoDatabase: Database?, todoCollection: Collection?) async { try? await databases.createDocument( databaseId: todoDatabase!.id, collectionId: todoCollection!.id, - documentId: ID.unique(), + documentId: ID.unique(), data: testTodo1 ) try? await databases.createDocument( databaseId: todoDatabase!.id, collectionId: todoCollection!.id, - documentId: ID.unique(), + documentId: ID.unique(), data: testTodo2 ) try? await databases.createDocument( diff --git a/src/routes/docs/tutorials/astro-ssr-auth/step-8/+page.markdoc b/src/routes/docs/tutorials/astro-ssr-auth/step-8/+page.markdoc index 96f1f78ae5..95bc18521b 100644 --- a/src/routes/docs/tutorials/astro-ssr-auth/step-8/+page.markdoc +++ b/src/routes/docs/tutorials/astro-ssr-auth/step-8/+page.markdoc @@ -7,8 +7,8 @@ step: 8 Start a preview of your app by running `npm run dev`. -If you want to see the complete source code with styling, see the [demos-for-astro](https://github.com/appwrite/demos-for-astro/tree/main/server-side-rendering) repository. +If you want to see the complete source code with styling, see the [demos-for-astro](https://github.com/appwrite/demos-for-astro/tree/main/server-side-rendering) repository. # Other authentication methods {% #other-authentication-methods %} -Appwrite also supports OAuth, passwordless login, anonymous login, and phone login. -Learn more about them in the [authentication guide](https://appwrite.io/docs/products/auth). +Appwrite also supports OAuth, passwordless login, anonymous login, and phone login. +Learn more about them in the [authentication guide](/docs/products/auth). diff --git a/src/routes/docs/tutorials/nextjs-ssr-auth/step-1/+page.markdoc b/src/routes/docs/tutorials/nextjs-ssr-auth/step-1/+page.markdoc index 0db329dd2e..759cb1194a 100644 --- a/src/routes/docs/tutorials/nextjs-ssr-auth/step-1/+page.markdoc +++ b/src/routes/docs/tutorials/nextjs-ssr-auth/step-1/+page.markdoc @@ -9,7 +9,7 @@ framework: Next.js SSR category: Auth --- -Appwrite takes away the stress of building and maintaining a backend. Appwrite helps implement authentication, databases, file storage, and respond to real-time events with **secure** APIs out of the box. +Appwrite takes away the stress of building and maintaining a backend. Appwrite helps implement authentication, databases, file storage, and respond to real-time events with **secure** APIs out of the box. If you're a Next.js developer, the examples in this guide show you how Appwrite can help you add authentication to Next.js apps faster. # Before you start {% #before-you-start %} @@ -20,5 +20,5 @@ Before following this tutorial, have the following prepared: - A basic knowledge of Next.js and React. -If you're inspired and wish to follow along, make sure you've followed [Start with React](https://appwrite.io/docs/quick-starts/react) first. +If you're inspired and wish to follow along, make sure you've followed [Start with React](/docs/quick-starts/react) first. Clone the [demos-for-react](https://github.com/appwrite/demos-for-react/tree/main/nextjs) examples and follow along with the source code. \ No newline at end of file diff --git a/src/routes/docs/tutorials/nextjs-ssr-auth/step-8/+page.markdoc b/src/routes/docs/tutorials/nextjs-ssr-auth/step-8/+page.markdoc index 3aca9b2203..4bfa5bf56b 100644 --- a/src/routes/docs/tutorials/nextjs-ssr-auth/step-8/+page.markdoc +++ b/src/routes/docs/tutorials/nextjs-ssr-auth/step-8/+page.markdoc @@ -7,5 +7,5 @@ step: 8 If you want to see the complete source code with styling, see the [demos-for-react](https://github.com/appwrite/demos-for-react/tree/main/nextjs/server-side-rendering) repository. # Other authentication methods {% #other-authentication-methods %} -Appwrite also supports OAuth, passwordless login, anonymous login, and phone login. -Learn more about them in the [authentication guide](https://appwrite.io/docs/products/auth). +Appwrite also supports OAuth, passwordless login, anonymous login, and phone login. +Learn more about them in the [authentication guide](/docs/products/auth). diff --git a/src/routes/docs/tutorials/nuxt-ssr-auth/step-1/+page.markdoc b/src/routes/docs/tutorials/nuxt-ssr-auth/step-1/+page.markdoc index 970d378bf5..3bd8898d78 100644 --- a/src/routes/docs/tutorials/nuxt-ssr-auth/step-1/+page.markdoc +++ b/src/routes/docs/tutorials/nuxt-ssr-auth/step-1/+page.markdoc @@ -7,10 +7,10 @@ difficulty: beginner draft: true readtime: 20 framework: Nuxt SSR -category: Auth +category: Auth --- -Appwrite takes away the stress of building and maintaining a backend. Appwrite helps implement authentication, databases, file storage, and respond to real-time events with **secure** APIs out of the box. +Appwrite takes away the stress of building and maintaining a backend. Appwrite helps implement authentication, databases, file storage, and respond to real-time events with **secure** APIs out of the box. This tutorials shows how Appwrite can help you add authentication to your Nuxt app using server-side rendering (SSR). # Before you start {% #before-you-start %} @@ -20,5 +20,5 @@ Before following this tutorial, have the following prepared: - A recent version of [Node.js](https://nodejs.org/en/download/) installed on your system. - A basic knowledge of Vue and Nuxt. -If you're inspired and wish to follow along, make sure you've followed [Start with Nuxt](https://appwrite.io/docs/quick-starts/nuxt) first. +If you're inspired and wish to follow along, make sure you've followed [Start with Nuxt](/docs/quick-starts/nuxt) first. Clone the [demos-for-vue](https://github.com/appwrite/demos-for-vue) examples and follow along with the source code. \ No newline at end of file diff --git a/src/routes/docs/tutorials/nuxt-ssr-auth/step-8/+page.markdoc b/src/routes/docs/tutorials/nuxt-ssr-auth/step-8/+page.markdoc index 96b2a5574c..a5b4c80dcd 100644 --- a/src/routes/docs/tutorials/nuxt-ssr-auth/step-8/+page.markdoc +++ b/src/routes/docs/tutorials/nuxt-ssr-auth/step-8/+page.markdoc @@ -4,8 +4,8 @@ title: All set description: Add authentication to a Nuxt project using Appwrite. step: 8 --- -If you want to see the complete source code with styling, see the [demos-for-vue](https://github.com/appwrite/demos-for-vue/tree/main/server-side-rendering) repository. +If you want to see the complete source code with styling, see the [demos-for-vue](https://github.com/appwrite/demos-for-vue/tree/main/server-side-rendering) repository. # Other authentication methods {% #other-authentication-methods %} -Appwrite also supports OAuth, passwordless login, anonymous login, and phone login. -Learn more about them in the [authentication guide](https://appwrite.io/docs/products/auth). +Appwrite also supports OAuth, passwordless login, anonymous login, and phone login. +Learn more about them in the [authentication guide](/docs/products/auth). diff --git a/src/routes/docs/tutorials/sveltekit-csr-auth/step-1/+page.markdoc b/src/routes/docs/tutorials/sveltekit-csr-auth/step-1/+page.markdoc index f628e9086e..9c5f1ad051 100644 --- a/src/routes/docs/tutorials/sveltekit-csr-auth/step-1/+page.markdoc +++ b/src/routes/docs/tutorials/sveltekit-csr-auth/step-1/+page.markdoc @@ -9,12 +9,12 @@ framework: SvelteKit category: Auth --- -Appwrite takes away your stress of building and maintaining a backend. Appwrite helps you implement authentication, databases, file storage, and respond to real-time events with **secure** APIs out of the box. +Appwrite takes away your stress of building and maintaining a backend. Appwrite helps you implement authentication, databases, file storage, and respond to real-time events with **secure** APIs out of the box. If you're a Svelte developer, examples in this guide shows you how Appwrite can help you add authentication to Svelte apps faster. # Before you start {% #before-you-start %} Even if you've never tried Appwrite, you will get an idea of what it'll feel like to build with Svelte and Appwrite. -If you're inspired and wish to follow along, make sure you've followed [Start with Svelte](https://appwrite.io/docs/quick-starts/sveltekit) first. +If you're inspired and wish to follow along, make sure you've followed [Start with Svelte](/docs/quick-starts/sveltekit) first. You can also choose to clone our [Getting started](https://github.com/appwrite/getting-started-projects/tree/main/svelte) examples and follow along by looking at our example code. \ No newline at end of file diff --git a/src/routes/docs/tutorials/sveltekit-csr-auth/step-7/+page.markdoc b/src/routes/docs/tutorials/sveltekit-csr-auth/step-7/+page.markdoc index 5cca9f5ebb..c83cf4422c 100644 --- a/src/routes/docs/tutorials/sveltekit-csr-auth/step-7/+page.markdoc +++ b/src/routes/docs/tutorials/sveltekit-csr-auth/step-7/+page.markdoc @@ -7,5 +7,5 @@ step: 7 If you want to see these authentication concepts applied in a more robust manner, you can see them in action in this [demo app](https://github.com/appwrite/getting-started-projects/tree/main/svelte/auth). # Other authentication methods {% #other-authentication-methods %} -Appwrite also supports OAuth, passwordless login, anonymous login, and phone login. -Learn more about them in the [authentication guide](https://appwrite.io/docs/products/auth). +Appwrite also supports OAuth, passwordless login, anonymous login, and phone login. +Learn more about them in the [authentication guide](/docs/products/auth). diff --git a/src/routes/docs/tutorials/sveltekit-ssr-auth/step-1/+page.markdoc b/src/routes/docs/tutorials/sveltekit-ssr-auth/step-1/+page.markdoc index 4669112a33..6dccfd4521 100644 --- a/src/routes/docs/tutorials/sveltekit-ssr-auth/step-1/+page.markdoc +++ b/src/routes/docs/tutorials/sveltekit-ssr-auth/step-1/+page.markdoc @@ -9,7 +9,7 @@ framework: SvelteKit SSR category: Auth --- -Appwrite takes away the stress of building and maintaining a backend. Appwrite helps implement authentication, databases, file storage, and respond to real-time events with **secure** APIs out of the box. +Appwrite takes away the stress of building and maintaining a backend. Appwrite helps implement authentication, databases, file storage, and respond to real-time events with **secure** APIs out of the box. If you're a Svelte developer, the examples in this guide show you how Appwrite can help you add authentication to Svelte apps faster. # Before you start {% #before-you-start %} @@ -19,5 +19,5 @@ Before following this tutorial, have the following prepared: - A recent version of [Node.js](https://nodejs.org/en/download/) installed on your system. - A basic knowledge of Svelte and SvelteKit. -If you're inspired and wish to follow along, make sure you've followed [Start with Svelte](https://appwrite.io/docs/quick-starts/sveltekit) first. +If you're inspired and wish to follow along, make sure you've followed [Start with Svelte](/docs/quick-starts/sveltekit) first. Clone the [Demos for svelte](https://github.com/appwrite/demos-for-svelte) examples and follow along with the source code. \ No newline at end of file diff --git a/src/routes/docs/tutorials/sveltekit-ssr-auth/step-8/+page.markdoc b/src/routes/docs/tutorials/sveltekit-ssr-auth/step-8/+page.markdoc index 8c03851553..bd7b43e707 100644 --- a/src/routes/docs/tutorials/sveltekit-ssr-auth/step-8/+page.markdoc +++ b/src/routes/docs/tutorials/sveltekit-ssr-auth/step-8/+page.markdoc @@ -4,8 +4,8 @@ title: All set description: Add authentication to a SvelteKit project using Appwrite. step: 8 --- -If you want to see the complete source code with styling, see the [demos-for-svelte](https://github.com/appwrite/demos-for-svelte/tree/main/server-side-rendering) repository. +If you want to see the complete source code with styling, see the [demos-for-svelte](https://github.com/appwrite/demos-for-svelte/tree/main/server-side-rendering) repository. # Other authentication methods {% #other-authentication-methods %} -Appwrite also supports OAuth, passwordless login, anonymous login, and phone login. -Learn more about them in the [authentication guide](https://appwrite.io/docs/products/auth). +Appwrite also supports OAuth, passwordless login, anonymous login, and phone login. +Learn more about them in the [authentication guide](/docs/products/auth). diff --git a/src/routes/privacy/+page.markdoc b/src/routes/privacy/+page.markdoc index 6cd162b19c..6b465d6f12 100644 --- a/src/routes/privacy/+page.markdoc +++ b/src/routes/privacy/+page.markdoc @@ -4,7 +4,7 @@ title: Privacy Policy --- This privacy policy (“Privacy Policy”) governs how we, Appwrite Code Ltd. (together, “Appwrite” “we”, “our” or “us”) use, collect and store Personal Data we collect or receive from or about you (“you”) such as in the following use cases: -1. When you make use of, or interact with, our Website (https://appwrite.io/) +1. When you make use of, or interact with, our Website (/) - When you create an account and when you log in - When you purchase our Cloud plan - When you purchase our products in our Swag Store @@ -323,7 +323,7 @@ How we protect and retain your personal data We have implemented appropriate technical, organizational and security measures designed to protect your Personal Data. However, please note that we cannot guarantee that the information will not be compromised as a result of unauthorized penetration to our servers. As the security of information depends in part on the security of the computer, device or network you use to communicate with us and the security you use to protect your user IDs and passwords, please make sure to take appropriate measures to protect this information. {% count_title title="Retention of your personal data" / %} -Your Personal Data will be stored until we delete the record and we proactively delete it or you send a valid deletion request, please note that in some circumstances we may store your Personal Data for longer periods of time, for example (i) where we are required to do so in accordance with legal, regulatory, tax or accounting requirements, or (ii) for us to have an accurate record of your dealings with us in the event of any complaints or challenges, or (iii) if we reasonably believe there is a prospect of litigation relating to your Personal Data or dealings. Regaioention of cookies, you can read more in our cookie policy [https://appwrite.io/policy/cookies](https://appwrite.io/policy/cookies). +Your Personal Data will be stored until we delete the record and we proactively delete it or you send a valid deletion request, please note that in some circumstances we may store your Personal Data for longer periods of time, for example (i) where we are required to do so in accordance with legal, regulatory, tax or accounting requirements, or (ii) for us to have an accurate record of your dealings with us in the event of any complaints or challenges, or (iii) if we reasonably believe there is a prospect of litigation relating to your Personal Data or dealings. Regaioention of cookies, you can read more in our cookie policy [https://appwrite.io/cookies](/cookies). {% /count_section %} {% count_section %} @@ -345,7 +345,7 @@ In the event that we are acquired by, or merged with, a third party entity, or i {% count_title / %} Where you have provided your consent to us sharing or transferring your Personal Data (e.g., where you provide us with marketing consents or opt-in to optional additional services or functionality). {% /count_section %} - + {% count_section %} # Transfers of personal data @@ -372,21 +372,21 @@ The following rights (which may be subject to certain exemptions or derogations) {% count_title / %} -You can exercise your rights by contacting us at privacy@appwrite.io. You may use an authorized agent to submit a request on your behalf if you provide the authorized agent written permission signed by you. To protect your privacy, we may take steps to verify your identity before fulfilling your request. Subject to legal and other permissible considerations, we will make every reasonable effort to honor your request promptly in accordance with applicable law or inform you if we require further information in order to fulfill your request. When processing your request, we may ask you for additional information to confirm or verify your identity and for security purposes, before processing and/or honoring your request. We reserve the right to charge a fee where permitted by law, for instance, if your request is manifestly unfounded or excessive. In the event that your request would adversely affect the rights and freedoms of others (for example, would impact the duty of confidentiality we owe to others) or if we are legally entitled to deal with your request in a different way than initially requested, we will address your request to the maximum extent possible, all in accordance with applicable law. +You can exercise your rights by contacting us at privacy@appwrite.io. You may use an authorized agent to submit a request on your behalf if you provide the authorized agent written permission signed by you. To protect your privacy, we may take steps to verify your identity before fulfilling your request. Subject to legal and other permissible considerations, we will make every reasonable effort to honor your request promptly in accordance with applicable law or inform you if we require further information in order to fulfill your request. When processing your request, we may ask you for additional information to confirm or verify your identity and for security purposes, before processing and/or honoring your request. We reserve the right to charge a fee where permitted by law, for instance, if your request is manifestly unfounded or excessive. In the event that your request would adversely affect the rights and freedoms of others (for example, would impact the duty of confidentiality we owe to others) or if we are legally entitled to deal with your request in a different way than initially requested, we will address your request to the maximum extent possible, all in accordance with applicable law. {% count_title / %} -Deleting your account: Should you ever decide to delete your account, you may do so by emailing privacy@appwrite.io. If you terminate your account, any association between your account and Personal Data we store will no longer be accessible through your account. However, given the nature of sharing on certain services, any public activity on your account prior to deletion will remain stored on our servers and will remain accessible to the public. +Deleting your account: Should you ever decide to delete your account, you may do so by emailing privacy@appwrite.io. If you terminate your account, any association between your account and Personal Data we store will no longer be accessible through your account. However, given the nature of sharing on certain services, any public activity on your account prior to deletion will remain stored on our servers and will remain accessible to the public. {% /count_section %} {% count_section %} # Use by children -We do not offer our products or services for use by children and, therefore, we do not knowingly collect Personal Data from, and/or about children under the age of eighteen (18). If you are under the age of eighteen (18), do not provide any Personal Data to us without involvement of a parent or a guardian. For the purposes of the GDPR, we do not intend to offer information society services directly to children. In the event that we become aware that you provide Personal Data in violation of applicable privacy laws, we reserve the right to delete it. If you believe that we might have any such information, please contact us at privacy@appwrite.io. +We do not offer our products or services for use by children and, therefore, we do not knowingly collect Personal Data from, and/or about children under the age of eighteen (18). If you are under the age of eighteen (18), do not provide any Personal Data to us without involvement of a parent or a guardian. For the purposes of the GDPR, we do not intend to offer information society services directly to children. In the event that we become aware that you provide Personal Data in violation of applicable privacy laws, we reserve the right to delete it. If you believe that we might have any such information, please contact us at privacy@appwrite.io. {%/count_section %} {% count_section %} # Third party interaction -We enable you to interact with third party websites, mobile software applications and products or services that are not owned or controlled by us (each a “Third Party Service”). We are not responsible for the privacy practices or the content of such Third Party Services. Please be aware that Third Party Services can collect Personal Data from you. Accordingly, we encourage you to read the terms and conditions and privacy policies of each Third Party Service. +We enable you to interact with third party websites, mobile software applications and products or services that are not owned or controlled by us (each a “Third Party Service”). We are not responsible for the privacy practices or the content of such Third Party Services. Please be aware that Third Party Services can collect Personal Data from you. Accordingly, we encourage you to read the terms and conditions and privacy policies of each Third Party Service. {% /count_section %} @@ -423,7 +423,7 @@ We may provide paid products and/or services within the Service. In that case, w # California Privacy Law {% count_title title="Our California Do Not Track Notice (Shine the Light)" / %} -Do Not Track (“DNT”) is a privacy preference that users can set in certain web browsers. Please note that we do not respond to or honor DNT signals or similar mechanisms transmitted by web browsers, but we may allow third parties, such as companies that provide us with analytics tools, to collect personally identifiable information about an individual consumer's online activities over time and across different web sites when a consumer uses the Services. +Do Not Track (“DNT”) is a privacy preference that users can set in certain web browsers. Please note that we do not respond to or honor DNT signals or similar mechanisms transmitted by web browsers, but we may allow third parties, such as companies that provide us with analytics tools, to collect personally identifiable information about an individual consumer's online activities over time and across different web sites when a consumer uses the Services. {% /count_section %} {% count_section %}