Merge branch 'main' into fix-csp-and-posthog-init

This commit is contained in:
Darshan
2025-01-11 09:35:34 +05:30
committed by GitHub
9 changed files with 283 additions and 6 deletions

View File

@@ -40,7 +40,7 @@ const securityheaders: Handle = async ({ event, resolve }) => {
const cspDirectives = [ const cspDirectives = [
"default-src 'self'", "default-src 'self'",
"script-src 'self' 'unsafe-inline' 'unsafe-eval'", "script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.posthog.com",
"style-src 'self' 'unsafe-inline'", "style-src 'self' 'unsafe-inline'",
"img-src 'self' data: https:", "img-src 'self' data: https:",
"font-src 'self'", "font-src 'self'",
@@ -50,7 +50,7 @@ const securityheaders: Handle = async ({ event, resolve }) => {
"frame-ancestors 'self' https://www.youtube.com https://*.vimeo.com", "frame-ancestors 'self' https://www.youtube.com https://*.vimeo.com",
'block-all-mixed-content', 'block-all-mixed-content',
'upgrade-insecure-requests', 'upgrade-insecure-requests',
"connect-src 'self' https://*.appwrite.io", // example: cloud, growth, etc. "connect-src 'self' https://*.appwrite.io https://*.posthog.com",
"frame-src 'self' https://www.youtube.com https://status.appwrite.online https://www.youtube-nocookie.com https://player.vimeo.com" "frame-src 'self' https://www.youtube.com https://status.appwrite.online https://www.youtube-nocookie.com https://player.vimeo.com"
]; ];

View File

@@ -0,0 +1,38 @@
---
layout: post
title: Announcing phone OTP login pricing change
description: To keep Appwrite Cloud sustainable, we are introducing phone OTP login pricing.
date: 2025-01-10
cover: /images/blog/announcing-phone-OTP-pricing/cover.png
timeToRead: 4
author: eldad-fux
category: product
featured: false
callToAction: true
---
One-time password (OTP) logins with SMS provide a secure and convenient way for users to authenticate themselves, ensuring that only authorized individuals can access accounts. By sending a temporary, time-sensitive code via SMS, phone OTP logins offer a strong layer of security, helping prevent unauthorized access and protecting user data. This service has become a crucial part of many applications, and we've worked hard to make it as easy and scalable as possible.
When we launched Appwrite Cloud in beta, we focused on enabling the platform and providing you with as much value as possible. We intentionally didn't charge for every service, even in cases where we were absorbing significant costs ourselves - like phone OTP logins, where sending SMS messages through various telecom companies incurred a considerable expense.
In the last few months, we've worked tirelessly with various vendors, navigating complex regulations and bureaucracy in multiple countries to ensure excellent phone OTP message delivery. Our goal was always to integrate phone OTP logins as simply as possible while providing a scalable and reliable service.
It's been incredibly rewarding to see teams successfully implement phone OTP logins, using Appwrite to authenticate hundreds of thousands of users every month securely. Seeing this impact reinforces the importance of continuing to build a secure, accessible, and sustainable platform.
# Pricing update
As Appwrite continues to grow, we need to ensure that the platform remains sustainable and that we can provide the best possible service to all our users. Starting February 10th, we will begin charging for phone OTP login attempts. This change will help cover the costs associated with providing this valuable service and allow us to keep improving and expanding the platform.
Please refer to our rates page for a breakdown of the new pricing, including rates by region and specific SMS costs.
To help prepare for these changes, each team can visit their organization's usage page or the usage section of a specific project to review their current phone OTP usage. This will help you better understand your usage patterns and plan accordingly.
![console image](/images/blog/announcing-phone-OTP-pricing/cover.png)
# Free quota available
To ensure that free users can continue exploring the platform and its features, we will provide up to 10 phone OTP login attempts per month at no charge. This will allow you to continue utilizing OTP logins to evaluate Appwrite's capabilities and integration into your workflows.
# We're here to help
If you have any questions about this change or need assistance with adjusting your application, please don't hesitate to contact us at [billing@appwrite.io](mailto:billing@appwrite.io).

View File

@@ -97,6 +97,11 @@
label: 'Compute', label: 'Compute',
href: '/docs/advanced/platform/compute' href: '/docs/advanced/platform/compute'
}, },
{
new: true,
label: 'Phone OTP',
href: '/docs/advanced/platform/phone-otp'
}
] ]
}, },
{ {

View File

@@ -107,4 +107,7 @@ Learn about additional features and functionalities that Appwrite offers.
{% cards_item href="/docs/advanced/platform/compute" title="Compute" %} {% cards_item href="/docs/advanced/platform/compute" title="Compute" %}
Learn about Appwrite's different compute add-ons. Learn about Appwrite's different compute add-ons.
{% /cards_item %} {% /cards_item %}
{% cards_item href="/docs/advanced/platform/phone-otp" title="Phone OTP" %}
Learn how Appwrite handles SMS-based OTP authentication.
{% /cards_item %}
{% /cards %} {% /cards %}

View File

@@ -0,0 +1,219 @@
---
layout: article
title: Phone OTP
description: Learn how Appwrite handles SMS-based OTP authentication for secure user verification.
---
{% info title="Note" %}
Changes will take effect on February 10th, 2025. Check out this [blog post](https://appwrite.io/blog/post/announcing-phone-OTP-pricing) for more information.
{% /info %}
Appwrite supports SMS-based OTP (One-Time Password) authentication to provide secure and reliable user verification. This feature enhances your app's security by adding an extra layer of authentication.
# Free messages {% #free-messages %}
All Appwrite plans include **10 free SMS messages** per month, which allows you to test and implement OTP functionality without immediate costs.
In addition you can also use the [Mock phone numbers](/docs/products/auth/security#mock-phone-numbers) feature to continue testing your integrations without incurring additional costs.
# Additional messages {% #additional-messages %}
To send more than 10 SMS messages per month, you need to upgrade to a **paid plan**. For detailed information about the different pricing options and features, please visit the [pricing page](/pricing).
The cost for additional messages is calculated based on two factors:
1. The number of messages sent
2. The destination country of each message
As part of our commitment to making Appwrite as accessible as possible, we regularly collaborate with telecom providers to negotiate lower SMS rates. Our goal is to keep costs affordable for all users. However, due to the unique pricing structures of each vendor, our rates may fluctuate from time to time.
## Rates {% #rates %}
SMS rates vary by country due to differences in telecom infrastructure and regulations. Here is a breakdown of the rates:
| Country code | Country name | Price per SMS (USD) |
|--------------|--------------------------------------------------------------|---------------------|
| +213 | Algeria | $ 0.23 |
| +376 | Andorra | $ 0.09 |
| +244 | Angola | $ 0.07 |
| +54 | Argentina | $ 0.06 |
| +374 | Armenia | $ 0.11 |
| +297 | Aruba | $ 0.06 |
| +61 | Australia | $ 0.03 |
| +43 | Austria | $ 0.03 |
| +994 | Azerbaijan | $ 0.22 |
| +973 | Bahrain | $ 0.04 |
| +880 | Bangladesh | $ 0.25 |
| +375 | Belarus | $ 0.16 |
| +32 | Belgium | $ 0.09 |
| +501 | Belize | $ 0.21 |
| +229 | Benin | $ 0.12 |
| +975 | Bhutan | $ 0.18 |
| +591 | Bolivia | $ 0.06 |
| +387 | Bosnia and Herzegovina | $ 0.06 |
| +267 | Botswana | $ 0.03 |
| +55 | Brazil | $ 0.03 |
| +673 | Brunei | $ 0.03 |
| +359 | Bulgaria | $ 0.12 |
| +226 | Burkina Faso | $ 0.09 |
| +257 | Burundi | $ 0.18 |
| +855 | Cambodia | $ 0.17 |
| +237 | Cameroon | $ 0.1 |
| +1 | North America | $ 0.01 |
| +238 | Cape Verde Islands | $ 0.12 |
| +56 | Chile | $ 0.05 |
| +86 | China | $ 0.02 |
| +57 | Colombia | $ 0.04 |
| +269 | Comoros and Mayotte | $ 0.1 |
| +242 | Congo | $ 0.1 |
| +682 | Cook Islands | $ 0.04 |
| +506 | Costa Rica | $ 0.02 |
| +385 | Croatia | $ 0.05 |
| +53 | Cuba | $ 0.08 |
| +357 | Cyprus | $ 0.02 |
| +420 | Czech Republic | $ 0.06 |
| +45 | Denmark | $ 0.05 |
| +253 | Djibouti | $ 0.1 |
| +593 | Ecuador | $ 0.22 |
| +20 | Egypt | $ 0.23 |
| +503 | El Salvador | $ 0.05 |
| +240 | Equatorial Guinea | $ 0.09 |
| +291 | Eritrea | $ 0.15 |
| +372 | Estonia | $ 0.05 |
| +251 | Ethiopia | $ 0.15 |
| +500 | Falkland Islands | $ 0.04 |
| +298 | Faroe Islands | $ 0.03 |
| +679 | Fiji | $ 0.12 |
| +358 | Finland | $ 0.06 |
| +33 | France | $ 0.07 |
| +594 | French Guiana | $ 0.1 |
| +689 | French Polynesia | $ 0.1 |
| +241 | Gabon | $ 0.12 |
| +220 | Gambia | $ 0.09 |
| +995 | Georgia | $ 0.13 |
| +49 | Germany | $ 0.09 |
| +233 | Ghana | $ 0.19 |
| +350 | Gibraltar | $ 0.06 |
| +30 | Greece | $ 0.05 |
| +299 | Greenland | $ 0.03 |
| +590 | Guadeloupe | $ 0.07 |
| +1671 | Guam | $ 0.03 |
| +502 | Guatemala | $ 0.05 |
| +224 | Guinea | $ 0.11 |
| +245 | Guinea-Bissau | $ 0.08 |
| +592 | Guyana | $ 0.1 |
| +509 | Haiti | $ 0.09 |
| +504 | Honduras | $ 0.04 |
| +852 | Hong Kong | $ 0.05 |
| +36 | Hungary | $ 0.07 |
| +354 | Iceland | $ 0.07 |
| +91 | India | $ 0.07 |
| +62 | Indonesia | $ 0.28 |
| +98 | Iran | $ 0.2 |
| +964 | Iraq | $ 0.23 |
| +353 | Ireland | $ 0.06 |
| +972 | Israel | $ 0.11 |
| +39 | Italy | $ 0.05 |
| +81 | Japan | $ 0.06 |
| +962 | Jordan | $ 0.25 |
| +254 | Kenya | $ 0.25 |
| +686 | Kiribati | $ 0.07 |
| +850 | North Korea | $ 0.02 |
| +82 | South Korea | $ 0.02 |
| +965 | Kuwait | $ 0.2 |
| +996 | Kyrgyzstan | $ 0.25 |
| +856 | Laos | $ 0.17 |
| +371 | Latvia | $ 0.04 |
| +961 | Lebanon | $ 0.21 |
| +266 | Lesotho | $ 0.11 |
| +231 | Liberia | $ 0.08 |
| +218 | Libya | $ 0.24 |
| +423 | Liechtenstein | $ 0.04 |
| +370 | Lithuania | $ 0.04 |
| +352 | Luxembourg | $ 0.09 |
| +853 | Macao | $ 0.03 |
| +389 | Macedonia | $ 0.03 |
| +261 | Madagascar | $ 0.12 |
| +265 | Malawi | $ 0.09 |
| +60 | Malaysia | $ 0.18 |
| +960 | Maldives | $ 0.17 |
| +223 | Mali | $ 0.13 |
| +356 | Malta | $ 0.05 |
| +692 | Marshall Islands | $ 0.03 |
| +596 | Martinique | $ 0.09 |
| +222 | Mauritania | $ 0.17 |
| +52 | Mexico | $ 0.07 |
| +691 | Micronesia | $ 0.03 |
| +373 | Moldova | $ 0.07 |
| +377 | Monaco | $ 0.09 |
| +976 | Mongolia | $ 0.11 |
| +212 | Morocco | $ 0.2 |
| +258 | Mozambique | $ 0.1 |
| +95 | Myanmar | $ 0.15 |
| +264 | Namibia | $ 0.05 |
| +674 | Nauru | $ 0.07 |
| +977 | Nepal | $ 0.24 |
| +31 | Netherlands | $ 0.1 |
| +687 | New Caledonia | $ 0.08 |
| +64 | New Zealand | $ 0.07 |
| +505 | Nicaragua | $ 0.09 |
| +227 | Niger | $ 0.1 |
| +234 | Nigeria | $ 0.35 |
| +683 | Niue | $ 0.04 |
| +672 | Norfolk Islands | $ 0.05 |
| +1670 | Northern Mariana Islands | $ 0.09 |
| +47 | Norway | $ 0.05 |
| +968 | Oman | $ 0.16 |
| +680 | Palau | $ 0.03 |
| +507 | Panama | $ 0.1 |
| +675 | Papua New Guinea | $ 0.16 |
| +595 | Paraguay | $ 0.08 |
| +51 | Peru | $ 0.03 |
| +63 | Philippines | $ 0.18 |
| +48 | Poland | $ 0.02 |
| +351 | Portugal | $ 0.03 |
| +974 | Qatar | $ 0.19 |
| +262 | Reunion | $ 0.06 |
| +40 | Romania | $ 0.06 |
| +7 | Russia, Kazakhstan, Uzbekistan, Turkmenistan, and Tajikistan | $ 0.36 |
| +250 | Rwanda | $ 0.11 |
| +378 | San Marino | $ 0.05 |
| +239 | Sao Tome and Principe | $ 0.09 |
| +966 | Saudi Arabia | $ 0.15 |
| +221 | Senegal | $ 0.22 |
| +381 | Serbia | $ 0.12 |
| +248 | Seychelles | $ 0.05 |
| +232 | Sierra Leone | $ 0.16 |
| +65 | Singapore | $ 0.05 |
| +421 | Slovak Republic | $ 0.06 |
| +386 | Slovenia | $ 0.1 |
| +677 | Solomon Islands | $ 0.07 |
| +252 | Somalia | $ 0.15 |
| +27 | South Africa | $ 0.03 |
| +34 | Spain | $ 0.05 |
| +94 | Sri Lanka | $ 0.32 |
| +290 | St. Helena | $ 0.05 |
| +249 | Sudan | $ 0.25 |
| +597 | Suriname | $ 0.09 |
| +268 | Swaziland | $ 0.11 |
| +46 | Sweden | $ 0.06 |
| +41 | Switzerland | $ 0.04 |
| +963 | Syria | $ 0.24 |
| +886 | Taiwan | $ 0.23 |
| +66 | Thailand | $ 0.02 |
| +228 | Togo | $ 0.13 |
| +676 | Tonga | $ 0.04 |
| +216 | Tunisia | $ 0.1 |
| +90 | Turkey | $ 0.01 |
| +688 | Tuvalu | $ 0.11 |
| +256 | Uganda | $ 0.13 |
| +380 | Ukraine | $ 0.14 |
| +971 | United Arab Emirates | $ 0.1 |
| +44 | United Kingdom | $ 0.05 |
| +598 | Uruguay | $ 0.06 |
| +678 | Vanuatu | $ 0.11 |
| +58 | Venezuela | $ 0.08 |
| +84 | Vietnam | $ 0.12 |
| +967 | Yemen | $ 0.18 |
| +260 | Zambia | $ 0.14 |
| +255 | Zanzibar | $ 0.11 |
| +263 | Zimbabwe | $ 0.11 |

View File

@@ -4,6 +4,10 @@ title: Phone (SMS) login
description: Enhance security with phone and SMS authentication in Appwrite. Discover how to add multi-factor authentication via SMS, verify phone numbers, and protect user accounts. description: Enhance security with phone and SMS authentication in Appwrite. Discover how to add multi-factor authentication via SMS, verify phone numbers, and protect user accounts.
--- ---
{% info title="Note" %}
The first 10 SMS messages each month are free. Thereafter OTPs are billed per message, with rates varying by country. See the [phone OTP rates](/docs/advanced/platform/phone-otp#rates) for more information.
{% /info %}
Phone authentication lets users create accounts using their phone numbers and log in through SMS messages. Phone authentication lets users create accounts using their phone numbers and log in through SMS messages.
Create and use [mock phone numbers](/docs/products/auth/security#mock-phone-numbers) to initiate a phone authentication process without an actual phone number. Create and use [mock phone numbers](/docs/products/auth/security#mock-phone-numbers) to initiate a phone authentication process without an actual phone number.

View File

@@ -3,11 +3,11 @@
import { Tabs } from '$lib/UI'; import { Tabs } from '$lib/UI';
import { visible } from '$lib/actions/visible'; import { visible } from '$lib/actions/visible';
import { isHeaderHidden } from '$lib/layouts/Main.svelte'; import { isHeaderHidden } from '$lib/layouts/Main.svelte';
import { classNames } from '$lib/utils/classnames';
import { getScrollDir } from '$lib/utils/getScrollDir'; import { getScrollDir } from '$lib/utils/getScrollDir';
import { createAccordion, melt } from '@melt-ui/svelte'; import { createAccordion, melt } from '@melt-ui/svelte';
import { writable } from 'svelte/store'; import { writable } from 'svelte/store';
import { fly } from 'svelte/transition'; import { fly } from 'svelte/transition';
import { classNames } from '$lib/utils/classnames';
type Table = { type Table = {
title: string; title: string;
@@ -163,6 +163,14 @@
scale: '$3 per 1,000 users', scale: '$3 per 1,000 users',
enterprise: 'Custom' enterprise: 'Custom'
}, },
{
title: 'Phone OTP',
free: '10 SMS / month',
pro: '<a href="/docs/advanced/platform/phone-otp#rates" class="underline">View rates</a>',
scale: '<a href="/docs/advanced/platform/phone-otp#rates" class="underline">View rates</a>',
enterprise:
'<a href="/docs/advanced/platform/phone-otp#rates" class="underline">View rates</a>'
},
{ {
title: 'Teams', title: 'Teams',
free: '100 per project', free: '100 per project',
@@ -276,7 +284,7 @@
scale: '1,000 GB-hour / month', scale: '1,000 GB-hour / month',
enterprise: 'Custom' enterprise: 'Custom'
}, },
{ {
title: 'Additional GB-hours', title: 'Additional GB-hours',
free: '-', free: '-',
pro: '$0.09 per GB-hour', pro: '$0.09 per GB-hour',

View File

@@ -37,11 +37,11 @@
}, },
{ {
question: "What's included in the Appwrite for Startups program?", question: "What's included in the Appwrite for Startups program?",
answer: 'Startups joining the program get access to everything Appwrite Scale offers. This includes Cloud credits, unlimited team members, and premium email support. In addition, we provide you with special swag, and you get a program manager and a private Discord channel. Read more about it in our <a class="web-link underline" href="/blog/post/announcing-appwrite-startups-program">announcement</a>.' answer: 'Startups joining the program get access to everything Appwrite Scale offers. This includes Cloud credits, unlimited team members, and premium email support. In addition, we provide you with special swag, and you get a program manager and a private Slack channel. Read more about it in our <a class="web-link underline" href="/blog/post/announcing-appwrite-startups-program">announcement</a>.'
}, },
{ {
question: 'What kind of support do we get?', question: 'What kind of support do we get?',
answer: 'When building with Appwrite, you have access to one of the most active communities that can help you when you have questions. As part of the Startup program, we also provide you with a private Discord channel where you get access to our support team, and you will have a dedicated program manager for non-technical questions.' answer: 'When building with Appwrite, you have access to one of the most active communities that can help you when you have questions. As part of the Startup program, we also provide you with a private Slack channel where you get access to our support team, and you will have a dedicated program manager for non-technical questions.'
}, },
{ {
question: question:

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB