mirror of
https://github.com/LukeHagar/website.git
synced 2025-12-06 04:22:07 +00:00
Merge branch 'main' of https://github.com/appwrite/website into feat-music-generation-with-huggingface
This commit is contained in:
4
pnpm-lock.yaml
generated
4
pnpm-lock.yaml
generated
@@ -3473,7 +3473,7 @@ packages:
|
||||
|
||||
/fsevents@2.3.2:
|
||||
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
|
||||
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
||||
engines: {node: ^8.16.0 || ^10.6.0 || >=12.0.3}
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
@@ -3481,7 +3481,7 @@ packages:
|
||||
|
||||
/fsevents@2.3.3:
|
||||
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
|
||||
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
||||
engines: {node: ^8.16.0 || ^10.6.0 || >=12.0.3}
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
{bio}
|
||||
</p>
|
||||
{/if}
|
||||
<ul class="u-flex u-main-center u-gap-8">
|
||||
<ul class="u-flex u-main-center u-gap-8 u-margin-block-start-16">
|
||||
{#if github}
|
||||
<li>
|
||||
<a
|
||||
|
||||
@@ -96,9 +96,10 @@
|
||||
<img
|
||||
class="web-author-image"
|
||||
src={authorData.avatar}
|
||||
alt={authorData.name}
|
||||
loading="lazy"
|
||||
width="44"
|
||||
height="44"
|
||||
alt=""
|
||||
/>
|
||||
{/if}
|
||||
<div class="u-flex-vertical">
|
||||
@@ -116,7 +117,7 @@
|
||||
class="web-icon-button"
|
||||
aria-label="Author twitter"
|
||||
target="_blank" rel="noopener noreferrer"
|
||||
|
||||
|
||||
>
|
||||
<span class="web-icon-x" aria-hidden="true" />
|
||||
</a>
|
||||
@@ -129,7 +130,7 @@
|
||||
class="web-icon-button"
|
||||
aria-label="Author LinkedIn"
|
||||
target="_blank" rel="noopener noreferrer"
|
||||
|
||||
|
||||
>
|
||||
<span class="web-icon-linkedin" aria-hidden="true" />
|
||||
</a>
|
||||
@@ -142,7 +143,7 @@
|
||||
class="web-icon-button"
|
||||
aria-label="Author GitHub"
|
||||
target="_blank" rel="noopener noreferrer"
|
||||
|
||||
|
||||
>
|
||||
<span class="web-icon-github" aria-hidden="true" />
|
||||
</a>
|
||||
|
||||
@@ -76,13 +76,13 @@
|
||||
<div class="web-big-padding-section-level-2">
|
||||
<section class="web-container web-u-padding-block-end-0">
|
||||
<a
|
||||
href="/blog/post/introducing-appwrite-react-native-sdk"
|
||||
href="/blog/post/appwrite-1.5-now-available-on-cloud"
|
||||
class="web-hero-banner-button web-u-margin-block-end-24"
|
||||
>
|
||||
<span class="web-icon-star" aria-hidden="true" />
|
||||
<span class="web-caption-500">New</span>
|
||||
<div class="web-hero-banner-button-sep" />
|
||||
<span class="web-caption-400 web-u-trim-1">Introducing Appwrite's React Native SDK</span>
|
||||
<span class="web-caption-400 web-u-trim-1">Appwrite 1.5 is now available on Cloud</span>
|
||||
<span class="web-icon-arrow-right" aria-hidden="true" />
|
||||
</a>
|
||||
<div class="web-hero is-horizontal">
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
{@const author = data.authors.find((author) => author.slug === featured.author)}
|
||||
<article class="web-feature-article u-margin-block-start-48">
|
||||
<a href={featured.href} class="web-feature-article-image">
|
||||
<img src={featured.cover} class="web-image-ratio-4/3" alt="cover" />
|
||||
<img src={featured.cover} class="web-image-ratio-4/3" loading="lazy" alt="cover" />
|
||||
</a>
|
||||
<div class="web-feature-article-content">
|
||||
<header class="web-feature-article-header">
|
||||
@@ -118,9 +118,10 @@
|
||||
<img
|
||||
class="web-author-image"
|
||||
src={author?.avatar}
|
||||
alt={author?.name}
|
||||
loading="lazy"
|
||||
width="24"
|
||||
height="24"
|
||||
alt=""
|
||||
/>
|
||||
<div class="web-author-info">
|
||||
<a href={author?.href} class="web-sub-body-400 web-link"
|
||||
|
||||
@@ -7,7 +7,7 @@ cover: /images/blog/a-recap-of-init/the-recap.png
|
||||
timeToRead: 12
|
||||
author: laura-du-ry
|
||||
category: OSS
|
||||
featured: true
|
||||
featured: false
|
||||
---
|
||||
|
||||
Init has come to an end, and we’re happy how all of you showed up and made it an amazing week filled with product announcements, events, content, celebrations, a release, and most of all, community fun!
|
||||
|
||||
@@ -0,0 +1,295 @@
|
||||
---
|
||||
layout: post
|
||||
title: Appwrite 1.5 is now available on Cloud
|
||||
description: This release was highly anticipated by the community, and we're very happy to finally share the great news.
|
||||
date: 2024-04-29
|
||||
cover: /images/blog/appwrite-1.5-now-available-on-cloud/cloud15.png
|
||||
timeToRead: 8
|
||||
author: eldad-fux
|
||||
category: product
|
||||
featured: true
|
||||
---
|
||||
|
||||
After announcing many new products and features during [Init](https://appwrite.io/init) as part of the 1.5 release, we saw great excitement within the community to get started with the newly presented Appwrite 1.5. Although already available on self-hosted, the new Appwrite products and features were yet to be released to Cloud. Today, we are excited to say the wait is finally over as we announce the release of Appwrite 1.5 to the Cloud.
|
||||
|
||||
To refresh your mind, here is an overview of all products and features released to Cloud and how you can get started.
|
||||
|
||||
# Messaging
|
||||
|
||||
With just a few lines of backend code, you can now set up a full-functioning messaging service for your application that covers three significant communication channels under one unified API using Cloud. You can send SMS, email, and push notifications through popular third-party providers like [Twilio](https://appwrite.io/blog/post/simplify-messaging-twilio), APNS, Firebase Cloud Messaging, Vonage, Sendgrid, and Mailgun.
|
||||
|
||||
## Highlights
|
||||
|
||||
- Unified platform for SMS, email, and push notifications.
|
||||
- Integration with leading third-party messaging services.
|
||||
- Simplified backend code for messaging services.
|
||||
- A fully functional Messaging Console for organizing messages, recipients, and providers.
|
||||
|
||||
## Emails
|
||||
|
||||
With Appwrite Messaging you can send custom email messages to your app's users. Appwrite supports [Mailgun](https://appwrite.io/docs/products/messaging/mailgun/) and [Sendgrid](https://appwrite.io/docs/products/messaging/sendgrid/) as SMTP providers. You must configure one of them as a provider before you can get started.
|
||||
|
||||
Once you have finished the setup, you can send emails using a Server SDK. To send an email immediately, you can call the `createEmail` endpoint with the schedule left empty.
|
||||
|
||||
Here is what this would look like using Swift.
|
||||
|
||||
```swift
|
||||
import Appwrite
|
||||
|
||||
let client = Client()
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("5df5acd0d48c2") // Your project ID
|
||||
.setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
|
||||
|
||||
let messaging = Messaging(client)
|
||||
|
||||
let message = try await messaging.createEmail(
|
||||
messageId: ID.unique(),
|
||||
subject: "April's Newsletter",
|
||||
content: newsletterContent,
|
||||
topics: ["news-letter"]
|
||||
draft: xfalse,
|
||||
html: xtrue,
|
||||
scheduledAt: "2024-04-29T20:55:41+0000"
|
||||
)
|
||||
```
|
||||
|
||||
Learn how to get started with [email in our documentation](https://appwrite.io/docs/products/messaging/send-email-messages).
|
||||
|
||||
## SMS
|
||||
|
||||
To send SMS messages to you users you will need to add SMPT provider. Appwrite supports [Twilio](https://appwrite.io/docs/products/messaging/twilio/), [MSG91](https://appwrite.io/docs/products/messaging/msg91/), [Telesign](https://appwrite.io/docs/products/messaging/telesign/), [TextMagic](https://appwrite.io/docs/products/messaging/textmagic/), and [Vonage](https://appwrite.io/docs/products/messaging/vonage/).
|
||||
|
||||
You can send SMS messages using a Server SDK. To send SMS messages immediately, you can call the `createSMS` endpoint without passing either the draft or `scheduled` parameters.
|
||||
|
||||
```swift
|
||||
import Appwrite
|
||||
|
||||
let client = Client()
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("5df5acd0d48c2") // Your project ID
|
||||
.setKey("919c2d18fb5d4...a2ae413da83346ad2") // Your secret API key
|
||||
|
||||
let messaging = Messaging(client)
|
||||
|
||||
let message = try await messaging.createSMS(
|
||||
messageId: ID.unique(),
|
||||
content: "Don't forget your Wednesday meeting at 10am!",
|
||||
users: ["413da83346a"]
|
||||
)
|
||||
```
|
||||
|
||||
Learn how to get started with [SMS in our documentation](https://appwrite.io/docs/products/messaging/send-sms-messages).
|
||||
|
||||
## Push notifications
|
||||
|
||||
If you're building a mobile app, note that push notifications must be sent through third-party providers, like Apple Push Notification service and Firebase Cloud Messaging. The push notification APIs for Apple and Android devices can only be accessed through these services.
|
||||
|
||||
You must configure these services before you can send your first push notification.
|
||||
|
||||
To send with APNS, you must first register for remote notifications in your app delegate's application using the (_:didFinishLaunchingWithOptions:) method.
|
||||
|
||||
```swift
|
||||
func application(
|
||||
_ application: UIApplication,
|
||||
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
|
||||
) -> Bool {
|
||||
// Register for remote notifications
|
||||
UNUserNotificationCenter.current().delegate = self
|
||||
|
||||
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
|
||||
UNUserNotificationCenter.current().requestAuthorization(
|
||||
options: authOptions,
|
||||
completionHandler: { granted, error in
|
||||
DispatchQueue.main.async {
|
||||
if granted {
|
||||
application.registerForRemoteNotifications()
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
return true
|
||||
}
|
||||
```
|
||||
|
||||
Learn how to set up push notifications for both Apple and Android in our docs.
|
||||
|
||||
{% cards %}
|
||||
{% cards_item href="/docs/products/messaging/apns" title="APNS" icon="icon-apple" %}
|
||||
Configure APNs for push notification to Apple devices.
|
||||
{% /cards_item %}
|
||||
{% cards_item href="/docs/products/messaging/fcm" title="FCM" icon="web-icon-firebase" %}
|
||||
Configure FCM for push notification to Android and Apple devices.
|
||||
{% /cards_item %}
|
||||
{% /cards %}
|
||||
|
||||
Read the [Messaging announcement](https://appwrite.io/blog/post/announcing-appwrite-messaging) for a full overview of capabilities.
|
||||
|
||||
# Improved support for Server-Side Rendering (SSR)
|
||||
|
||||
Appwrite Cloud 1.5 brings enhanced support for SSR authentication patterns, optimizing the platform for use with frameworks like [NextJS](https://appwrite.io/docs/tutorials/nextjs-ssr-auth/step-1), [SvelteKit](https://appwrite.io/docs/tutorials/sveltekit-ssr-auth/step-1), and [Nuxt](https://appwrite.io/docs/tutorials/nuxt-ssr-auth/step-1). This update introduces official methods for generating and accessing sessions server-side, allowing for seamless session cookies management and authorized requests, thus bridging the gap between client and server-side rendering.
|
||||
|
||||
## Highlights
|
||||
|
||||
- Enhanced SSR authentication support.
|
||||
- Improved session management for SSR frameworks.
|
||||
- Official methods for session generation and access.
|
||||
|
||||
The big change is that Appwrite now allows you to generate and access sessions server side to set session cookies and use these sessions to authorize future requests.
|
||||
|
||||
```tsx
|
||||
const session = account.createEmailPasswordSession(email, password)
|
||||
console.log(session.secret) // Output: 'eyJpZCI...sdfahfkjjy'
|
||||
```
|
||||
|
||||
Using the new `setSession` method, we can now retrieve a session secret from our cookies and authorize users to perform authenticated request to our server.
|
||||
|
||||
```tsx
|
||||
client.setSession(session.secret)
|
||||
const currentUser = await account.get()
|
||||
```
|
||||
|
||||
Read the [SSR announcement](https://appwrite.io/blog/post/introducing-support-for-server-side-rendering) to get a full overview of capabilities or visit our documentation to get started.
|
||||
|
||||
# Two-Factor Authentication (2FA)
|
||||
|
||||
Security takes a front seat with the addition of Two-Factor Authentication (2FA). This new feature enables an additional layer of security by requiring a second form of authentication. You can easily implement 2FA using Appwrite's straightforward methods for challenge creation and solution, offering users the option to authenticate via phone, email, or TOTP with authenticator apps.
|
||||
|
||||
## Highlights
|
||||
|
||||
- Enhanced security with Two-Factor Authentication.
|
||||
- Easy implementation of 2FA challenges.
|
||||
- Support for multiple authentication methods, including phone, email, and TOTP.
|
||||
- Can be used in conjunction with any existing authentication method you have implemented using Appwrite Auth.
|
||||
|
||||
## Enabling 2FA
|
||||
|
||||
To use 2FA, it needs to be enabled on a user's account. This can be achieved by calling account.updateMFA().
|
||||
|
||||
```js
|
||||
import { Client, Account } from "appwrite";
|
||||
|
||||
// Init SDK
|
||||
const client = new Client();
|
||||
|
||||
client
|
||||
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
|
||||
.setProject('<YOUR_PROJECT_ID>'); // Your project ID
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
// Include any account creation/management steps
|
||||
|
||||
const mfa = await account.updateMFA(true); // Enables 2FA
|
||||
```
|
||||
|
||||
Read the [2FA announcement](https://appwrite.io/blog/post/announcing-two-factor-authentication) for a full overview of capabilities, or visit our [documentation](https://appwrite.io/docs/products/auth/mfa) to get started.
|
||||
|
||||
# New Database operators
|
||||
|
||||
New Database operators `contains` and `or`, providing greater control and flexibility for database queries. These operators allow for partial text matches, array element matching, and logical OR queries, significantly enhancing the capability to handle complex data retrieval and manipulation tasks.
|
||||
|
||||
## Highlights
|
||||
|
||||
- New `contains` and `or` database operators.
|
||||
- Enhanced query flexibility and control.
|
||||
- Support for complex data retrieval and manipulation.
|
||||
|
||||
## Adding operators
|
||||
|
||||
The contains operator is a great addition to the existing text search operators such as startsWith & endsWith, and can be used in combination with these two.
|
||||
|
||||
```js
|
||||
db.listDocuments(
|
||||
'<DATABASE_ID>',
|
||||
'<COLLECTION_ID>',
|
||||
[
|
||||
Query.contains('content', ['happy', 'love']),
|
||||
]
|
||||
)
|
||||
```
|
||||
|
||||
To use the OR operator pass Query.or([...]) to the queries array and provide at least two queries within the nested array.
|
||||
|
||||
```js
|
||||
db.listDocuments(
|
||||
'<DATABASE_ID>',
|
||||
'<COLLECTION_ID>',
|
||||
[
|
||||
Query.or([
|
||||
Query.contains('name','ivy'),
|
||||
Query.greaterThan('age',30)
|
||||
])
|
||||
]
|
||||
)
|
||||
```
|
||||
|
||||
Read the [Database operators announcement](https://appwrite.io/blog/post/introducing-new-database-operators) for a full overview of capabilities, or visit our [documentation](https://appwrite.io/docs/products/databases/queries) to get started.
|
||||
|
||||
# Enum SDK Support
|
||||
|
||||
Enum SDK support expands the versatility and usability of Appwrite's SDKs across different programming scenarios.
|
||||
|
||||
## Highlights
|
||||
|
||||
- Enum support improves type safety and code readability.
|
||||
|
||||
## Enums and OAuth
|
||||
|
||||
One of the most common examples of SDK Enums is OAuth providers. To log in with Apple, you must pass the Apple string as the provider. With enums, you'll be able to pass OAuthProvider.Apple instead.
|
||||
|
||||
```js
|
||||
import { Client, Account, OAuthProvider } from "appwrite";
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint('https://cloud.appwrite.io/v1')
|
||||
.setProject('<PROJECT_ID>');
|
||||
|
||||
const account = new Account(client);
|
||||
|
||||
account.createOAuth2Session(OAuthProvider.Apple);
|
||||
```
|
||||
|
||||
Read the [Enum SDK support](https://appwrite.io/blog/post/introducing-enum-sdk-support) announcements for a full overview of capabilities, and visit our [Enum](https://appwrite.io/docs/sdks#enums) documentation to get started.
|
||||
|
||||
# Custom token login
|
||||
|
||||
One feature that was not announced during Init but was recently released is custom token login. Tokens are short-lived secrets created by an [Appwrite Server SDK](https://appwrite.io/docs/sdks#server) that can be exchanged for a session by a [Client SDK](https://appwrite.io/docs/sdks#client) to log in users. You may already be familiar with tokens if you checked out [Magic URL login](https://appwrite.io/docs/products/auth/magic-url), [Email OTP login](https://appwrite.io/docs/products/auth/email-otp), or [Phone (SMS) login](https://appwrite.io/docs/products/auth/phone-sms).
|
||||
|
||||
Custom token allows you to use a [Server SDK](https://appwrite.io/docs/sdks#server) to generate tokens for your own auth implementations. This allows you to code your own authentication methods using Appwrite Functions or your own backend. You could implement username and password sign-in, captcha-protected authentication, phone call auth, and much more. Custom tokens also allow you to integrate Appwrite with external authentication providers such as Auth0, TypingDNA, or any provider trusted by your users.
|
||||
|
||||
## Creating your custom token
|
||||
|
||||
Once you have prepared your own login flow in an Appwrite Function or a server integration, you can use the [Create token](https://appwrite.io/docs/references/1.5.x/server-nodejs/users#createToken) endpoint of the [Users API](https://appwrite.io/docs/products/auth/users) to generate a token.
|
||||
|
||||
```swift
|
||||
// Server-side code
|
||||
let users = Users(client)
|
||||
|
||||
let token = try await users.createToken("[USER_ID]")
|
||||
let secret = token.secret
|
||||
```
|
||||
|
||||
Then, pass this token to the client through email, magic links, texts, or other methods so they can login on their client app.
|
||||
|
||||
```swift
|
||||
// Client-side code
|
||||
let account = Account(client);
|
||||
|
||||
let session = try await account.createSession(
|
||||
userId: "[USER_ID]",
|
||||
secret: "[SECRET]");
|
||||
```
|
||||
|
||||
Visit our [documentation](https://appwrite.io/docs/products/auth/custom-token) to learn more.
|
||||
|
||||
# Get started with Appwrite 1.5 on Cloud
|
||||
|
||||
This release brings you more flexibility, security, and safety when building with the Cloud. With the introduction of Messaging, we deliver a highly requested product and fulfill developer needs. As we continue to evolve Appwrite, we strive to deliver the best backend for your product, no matter your needs. We thank you for your support and look forward to building the future together.
|
||||
|
||||
To get started, visit our documentation, YouTube channel, or get support on Discord.
|
||||
|
||||
- [Documentation](https://appwrite.io/docs)
|
||||
- [Discord](https://appwrite.io/discord)
|
||||
- [YouTube](https://www.youtube.com/channel/UCtBJ1v69gm8NgbCju_03Fiw)
|
||||
132
src/routes/blog/post/state-of-audio-processing/+page.markdoc
Normal file
132
src/routes/blog/post/state-of-audio-processing/+page.markdoc
Normal file
@@ -0,0 +1,132 @@
|
||||
---
|
||||
layout: post
|
||||
title: State of audio processing
|
||||
description: An overview of the latest developments in audio processing with AI and their impact on various industries.
|
||||
date: 2024-03-27
|
||||
cover: /images/blog/state-of-audio-processing/cover.png
|
||||
timeToRead: 15
|
||||
category: product
|
||||
featured: false
|
||||
draft: true
|
||||
---
|
||||
|
||||
Audio processing is a rapidly advancing field within artificial intelligence where algorithms are designed to interpret and manipulate audio signals. From the early days of basic sound synthesis to today's voice assistants and automatic music generation, AI in audio processing has undergone significant development. Let's explore the history of this field and the key concepts and innovations that have shaped it.
|
||||
|
||||
# A (not so) brief history of AI in audio processing
|
||||
|
||||
AI in audio processing began in the mid-20th century with work on sound synthesis methods. [Max Mathews at Bell Labs in the 1950s](https://en.wikipedia.org/wiki/Max_Mathews) laid the groundwork for digital audio synthesis.
|
||||
|
||||
In the late 1970s, the potential of AI in understanding and changing audio started to be explored. Early projects like the ['Talking Typewriter' by Kurzweil and Shrobe in 1978](https://ieeexplore.ieee.org/document/1454357) demonstrated the possibilities of speech synthesis.
|
||||
|
||||
The 1990s saw the introduction of machine learning techniques like hidden Markov models (HMMs) for speech recognition. [Rabiner's 1989 paper "A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition"](https://ieeexplore.ieee.org/document/18626) was influential. HMMs had limitations, requiring substantial manual work and struggling with complex speech patterns.
|
||||
|
||||
# The deep learning revolution
|
||||
|
||||
A major breakthrough in audio processing came with deep learning in the 2010s. Convolutional neural networks (CNNs) and recurrent neural networks (RNNs), particularly Long Short-Term Memory (LSTM) networks, revolutionized speech recognition.
|
||||
|
||||
The 2014 paper ["Deep Speech: Scaling up end-to-end speech recognition" by Hannun et al.](https://arxiv.org/abs/1412.5567) showed the power of CNNs in learning from raw audio data, improving speech recognition performance. LSTMs, introduced by [Hochreiter and Schmidhuber in 1997](https://www.bioinf.jku.at/publications/older/2604.pdf), proved effective in handling temporal dependencies in audio.
|
||||
|
||||
These techniques enhanced speech recognition and enabled audio generation. Models like [WaveNet from DeepMind in 2016](https://arxiv.org/abs/1609.03499) generated lifelike speech and music by learning from large audio datasets.
|
||||
|
||||
# Key concepts in modern audio processing
|
||||
|
||||
## Fourier transforms and spectral analysis
|
||||
|
||||
When you have a recording of a sound, it's a mix of many different frequencies (pitches) playing together. Fourier transforms are a way to separate these frequencies so you can see how much of each frequency is present in the sound.
|
||||
|
||||
This is useful because:
|
||||
|
||||
- You can see which notes are being played by different instruments
|
||||
- You can remove frequencies you don't want, like noise or certain instruments
|
||||
- You can change the volume of specific frequencies to alter the balance of the sound
|
||||
|
||||
Here's a simple code example:
|
||||
|
||||
```python
|
||||
import numpy as np
|
||||
|
||||
# Make a simple sound wave
|
||||
t = np.linspace(0, 1, 500)
|
||||
f = 10 # Frequency in Hz
|
||||
y = np.sin(2*np.pi*f*t)
|
||||
|
||||
# Apply Fourier transform
|
||||
Y = np.fft.fft(y)
|
||||
|
||||
# Plot the frequency content
|
||||
import matplotlib.pyplot as plt
|
||||
plt.plot(np.abs(Y))
|
||||
plt.show()
|
||||
```
|
||||
|
||||
This code makes a simple sound wave, applies a Fourier transform to it, and plots the amount of each frequency present in the sound.
|
||||
|
||||

|
||||
|
||||
## Deep neural networks
|
||||
|
||||
Deep neural networks (DNNs) are a way to make computers learn to recognize patterns in data, like recognizing different instruments in a piece of music. They work by passing the data through several layers that gradually pick out more and more complex features.
|
||||
|
||||
For example, to train a DNN to recognize musical instruments:
|
||||
|
||||
1. You give it many recordings of each instrument
|
||||
2. The DNN learns patterns unique to each instrument
|
||||
3. After training, the DNN can recognize the instrument in new recordings it hasn't heard before
|
||||
|
||||
Here's a simple DNN in code:
|
||||
|
||||
```python
|
||||
import tensorflow as tf
|
||||
|
||||
model = tf.keras.Sequential([
|
||||
tf.keras.layers.Dense(64, activation='relu', input_shape=(500,)),
|
||||
tf.keras.layers.Dense(64, activation='relu'),
|
||||
tf.keras.layers.Dense(10, activation='softmax')
|
||||
])
|
||||
|
||||
model.compile(optimizer='adam',
|
||||
loss='categorical_crossentropy',
|
||||
metrics=['accuracy'])
|
||||
|
||||
model.fit(train_data, train_labels, epochs=10, batch_size=32)
|
||||
```
|
||||
|
||||
This code makes a simple DNN. It expects 500 input features (which could be the frequency content of a sound clip). It has two layers that process the data, and an output layer that predicts which of 10 possible instruments the sound is.
|
||||
|
||||
The model is trained on labeled data (recordings where we know what instrument is playing) using the `fit()` function. After training, it can predict the instrument for new recordings.
|
||||
|
||||
DNNs are useful in audio for things like:
|
||||
|
||||
- Converting speech to text
|
||||
- Identifying the genre of a piece of music
|
||||
- Detecting emotions in speech
|
||||
- Removing background noise from recordings
|
||||
|
||||
The ability of DNNs to learn complex patterns makes them very useful for modern audio processing tasks.
|
||||
|
||||
## Automatic speech recognition (ASR)
|
||||
|
||||
ASR systems convert spoken words into written text. They're incredibly useful for dictating messages, giving voice commands, or automatically transcribing meetings or lectures. ASR has improved dramatically thanks to deep learning, which allows these systems to learn patterns from vast amounts of speech data.
|
||||
|
||||
One of the best ASR systems is DeepSpeech, developed by Mozilla. It uses a deep neural network architecture called a recurrent neural network (RNN), which is particularly good at handling sequential data like speech. DeepSpeech 2, released in 2017, achieved a word error rate of just 5.5% on a standard benchmark, which was a significant milestone. Google's recent Conformer model has pushed the state of the art even further.
|
||||
|
||||
## Sound generation and music composition
|
||||
|
||||
Generative AI models can create new sounds and music by learning patterns from existing audio data. This opens up exciting possibilities for music creation, sound design, and personalized audio content.
|
||||
|
||||
[WaveNet, developed by DeepMind in 2016](https://arxiv.org/abs/1609.03499), was a breakthrough in audio generation. It can generate realistic speech and musical sounds by predicting the next sample in an audio waveform based on the samples that came before it. [Google's Tacotron 2](https://arxiv.org/abs/1712.05884) built upon WaveNet to create high-quality synthetic speech that's nearly indistinguishable from human speech.
|
||||
|
||||
For music composition, [OpenAI's MuseNet](https://openai.com/blog/musenet) and [Jukebox](https://arxiv.org/abs/2005.00341) models are important developments. MuseNet can generate 4-minute musical compositions with 10 different instruments, while Jukebox can generate music in the style of popular genres and artists. These models demonstrate the potential for AI to be a powerful tool for musicians and composers.
|
||||
|
||||
# Get started with audio processing in Appwrite
|
||||
|
||||
Appwrite provides a platform to build your own audio processing applications. With our AI function templates and tutorials, you can quickly get started with voice recognition, music generation, and more.
|
||||
|
||||
{% cards %}
|
||||
{% cards_item href="/docs/products/ai/tutorials/speech-recognition" title="Speech recongition" %}
|
||||
Efficiently convert speech to text
|
||||
{% /cards_item %}
|
||||
{% cards_item href="/docs/products/ai/tutorials/text-to-speech" title="Text to speech" %}
|
||||
Generate music from a text prompt
|
||||
{% /cards_item %}
|
||||
{% /cards %}
|
||||
@@ -8,7 +8,6 @@ timeToRead: 15
|
||||
author: bradley-schofield
|
||||
category: product
|
||||
featured: false
|
||||
draft: true
|
||||
---
|
||||
|
||||
# Introduction
|
||||
|
||||
14
src/routes/changelog/(entries)/2024-04-29.markdoc
Normal file
14
src/routes/changelog/(entries)/2024-04-29.markdoc
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
layout: changelog
|
||||
title: Appwrite 1.5 is now available on Cloud
|
||||
date: 2024-04-29
|
||||
cover: /images/changelog/2024-04-22.png
|
||||
---
|
||||
|
||||
After announcing many new products and features during Init as part of the 1.5 release, we saw great excitement within the community to get started with the newly presented Appwrite 1.5. Although already available on self-hosted, the new Appwrite products and features were yet to be released to Cloud.
|
||||
|
||||
Today, we are excited to say the wait is finally over as we announce the release of Appwrite 1.5 to the Cloud.
|
||||
|
||||
{% arrow_link href="/blog/post/appwrite-1.5-now-available-on-cloud" %}
|
||||
Read the announcement to learn more
|
||||
{% /arrow_link %}
|
||||
@@ -103,6 +103,10 @@
|
||||
{
|
||||
label: 'LangChain',
|
||||
href: '/docs/products/ai/integrations/langchain'
|
||||
},
|
||||
{
|
||||
label: 'fal.ai',
|
||||
href: '/docs/products/ai/integrations/fal-ai'
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
217
src/routes/docs/products/ai/integrations/fal-ai/+page.markdoc
Normal file
217
src/routes/docs/products/ai/integrations/fal-ai/+page.markdoc
Normal file
@@ -0,0 +1,217 @@
|
||||
---
|
||||
layout: article
|
||||
title: Integrating fal.ai
|
||||
description: Learn how to integrate fal.ai into your Appwrite project.
|
||||
difficulty: intermediate
|
||||
readtime: 15
|
||||
---
|
||||
|
||||
fal.ai is an AI inference platform with popular models such as Stable Diffusion XL, ControlNet, Whisper available as ready-to-use APIs so that you can easily integrate them into your applications.
|
||||
|
||||
This tutorial will guide you through the process of setting up the fal.ai API to generate an image using the SDXL model and integrating it into your Appwrite project.
|
||||
|
||||
# Prerequisites {% #prerequisites %}
|
||||
|
||||
- An Appwrite Project
|
||||
- A [fal.ai API Key](https://fal.ai/docs/authentication/key-based)
|
||||
|
||||
{% section #step-1 step=1 title="Create new function" %}
|
||||
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.
|
||||
|
||||
{% only_dark %}
|
||||

|
||||
{% /only_dark %}
|
||||
|
||||
{% only_light %}
|
||||

|
||||
{% /only_light %}
|
||||
|
||||
1. In the Appwrite Console's sidebar, click **Functions**.
|
||||
1. Click **Create function**.
|
||||
1. Under **Connect Git repository**, select your provider.
|
||||
1. After connecting to GitHub, under **Quick start**, select the **Node.js** starter template.
|
||||
1. In the **Variables** step, add the `FAL_API_KEY`, generate it [here](https://fal.ai/docs/authentication/key-based).
|
||||
1. Follow the step-by-step wizard and create the function.
|
||||
{% /section %}
|
||||
|
||||
{% section #step-2 step=2 title="Add fal.ai SDK" %}
|
||||
Once the function is created, clone the function and open it in your development environment.
|
||||
|
||||
Once you have the repository open, you can install the fal.ai SDK by running the following command in your terminal:
|
||||
|
||||
```bash
|
||||
npm install @fal-ai/serverless-client
|
||||
```
|
||||
{% /section %}
|
||||
|
||||
{% section #step-3 step=3 title="Create utility function" %}
|
||||
In this example, the function will be able to accept both `GET` and `POST` requests.
|
||||
|
||||
For the `GET` request, return a static HTML page. It will use AlpineJS to make a `POST` request to the function.
|
||||
The `POST` request will use the fal.ai SDK to make a request to the fal.ai API.
|
||||
|
||||
Write the code to return a static HTML page. Create a new `src/utils.js` file with the following code:
|
||||
|
||||
```js
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import fs from 'fs';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
const staticFolder = path.join(__dirname, '../static');
|
||||
|
||||
export function getStaticFile(fileName) {
|
||||
return fs.readFileSync(path.join(staticFolder, fileName)).toString();
|
||||
}
|
||||
```
|
||||
{% /section %}
|
||||
|
||||
{% section #step-4 step=4 title="Handle GET request" %}
|
||||
Write our `GET` request handler in the `src/main.js` file. This handler will return the static HTML page.
|
||||
|
||||
```js
|
||||
import { getStaticFile } from './utils.js';
|
||||
|
||||
export default async ({ req, res, error }) => {
|
||||
if (req.method === 'GET') {
|
||||
return res.send(getStaticFile('index.html'), 200, {
|
||||
'Content-Type': 'text/html; charset=utf-8',
|
||||
});
|
||||
}
|
||||
};
|
||||
```
|
||||
{% /section %}
|
||||
|
||||
{% section #step-5 step=5 title="Create static page" %}
|
||||
Create the static HTML page that the function will serve. Create a new file at `static/index.html` with some HTML boilerplate:
|
||||
|
||||
```html
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
</html>
|
||||
```
|
||||
|
||||
Within the `<html>` tag, add a `<head>` tag with the necessary meta tags, stylesheets, and scripts:
|
||||
|
||||
```html
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>fal.ai Demo</title>
|
||||
|
||||
<script>
|
||||
async function onSubmit(prompt, type) {
|
||||
const response = await fetch('/', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ prompt, type }),
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
});
|
||||
|
||||
const json = await response.json();
|
||||
|
||||
if (!json.ok || json.error) {
|
||||
alert(json.error);
|
||||
}
|
||||
|
||||
return json;
|
||||
}
|
||||
</script>
|
||||
|
||||
<script src="//unpkg.com/alpinejs" defer></script>
|
||||
|
||||
<link rel="stylesheet" href="https://unpkg.com/@appwrite.io/pink" />
|
||||
<link rel="stylesheet" href="https://unpkg.com/@appwrite.io/pink-icons" />
|
||||
</head>
|
||||
```
|
||||
|
||||
And after the `</head>` tag, add our `<body>` tag with the following content:
|
||||
|
||||
```html
|
||||
<body class="theme-dark">
|
||||
<main class="main-content">
|
||||
<div class="top-cover u-padding-block-end-56">
|
||||
<div class="container">
|
||||
<div class="u-flex u-gap-16 u-flex-justify-center u-margin-block-start-16">
|
||||
<h1 class="heading-level-1">fal.ai demo</h1>
|
||||
<code class="u-un-break-text"></code>
|
||||
</div>
|
||||
<p class="body-text-1 u-normal u-margin-block-start-8" style="max-width: 50rem">
|
||||
Use this page to test your implementation with fal.ai. Enter
|
||||
text and receive the model output as a response.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container u-margin-block-start-negative-56"
|
||||
x-data="{ prompt: '', result: { src: '' }, loading: false }">
|
||||
<div class="card u-flex u-gap-24 u-flex-vertical">
|
||||
<div class="u-flex u-cross-center u-gap-8">
|
||||
<div class="input-text-wrapper is-with-end-button u-width-full-line">
|
||||
<input x-model="prompt" type="search" placeholder="Prompt" />
|
||||
<div class="icon-search" aria-hidden="true"></div>
|
||||
</div>
|
||||
<button class="button" x-bind:disabled="loading"
|
||||
x-on:click="async () => { loading = true; result = { src: '' }; try { result = await onSubmit(prompt) } catch(err) { console.error(err); } finally { loading = false; } }">
|
||||
<span class="text">Generate</span>
|
||||
</button>
|
||||
</div>
|
||||
<template x-if="answer.type">
|
||||
<div class="u-flex u-flex-vertical u-gap-12">
|
||||
<div class="u-flex u-flex-vertical u-gap-12 card">
|
||||
<div class="u-flex u-gap-12">
|
||||
<h5 class="eyebrow-heading-2">Result:</h5>
|
||||
</div>
|
||||
<img class="u-max-width-400" x-bind:src="result.src" alt="fal.ai output" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
```
|
||||
|
||||
This HTML form will allow users to input a prompt and generate an image using the fal.ai API. The AlpineJS script handles the form submission and display the result.
|
||||
|
||||
{% /section %}
|
||||
|
||||
{% section #step-6 step=6 title="Handle POST Request" %}
|
||||
Add methods necessary to integrate with fal.ai's API.
|
||||
|
||||
Import the fal.ai SDK at the top of the `main.js` file:
|
||||
|
||||
```js
|
||||
import * as fal from '@fal-ai/serverless-client';
|
||||
```
|
||||
|
||||
Handle the `POST` requests to the function. Initialize the fal.ai SDK at the end of the handler function:
|
||||
|
||||
```js
|
||||
fal.config({ credentials: process.env.FAL_API_KEY });
|
||||
```
|
||||
|
||||
Make the request to generate an image using the SDXL model, and return the result:
|
||||
|
||||
```js
|
||||
const result = await fal.subscribe('fal-ai/fast-sdxl', {
|
||||
input: {
|
||||
prompt: req.body.prompt,
|
||||
},
|
||||
});
|
||||
return res.json({ ok: true, src: result.images[0].url });
|
||||
```
|
||||
|
||||
With the function complete, deploy it to Appwrite by pushing the changes to your repository.
|
||||
|
||||
Additional models can be found in the [fal.ai model catalogue](https://fal.ai/models).
|
||||
|
||||
{% /section %}
|
||||
|
||||
{% section #step-7 step=7 title="Test the function" %}
|
||||
Now that the function is deployed, test it by visiting the function URL in a browser. The UI created earlier will be visible. To test it, write a prompt and click the submit button, after a brief the completion should appear below the input.
|
||||
|
||||

|
||||
{% /section %}
|
||||
@@ -189,7 +189,7 @@ And after the `</head>` tag we're going to add our `<body>` which will contain t
|
||||
</body>
|
||||
```
|
||||
|
||||
All of this together will render a form that will submit your question to the Appwrite Function through a POST request which we'll create next. The Appwrite Function will call Perplexity's API and return the response, which will be displayed on your page using different conditional statements depending on the output media type.
|
||||
All of this together will render a form that will submit your question to the Appwrite Function through a POST request which we'll create next. The Appwrite Function will call Replicate's API and return the response, which will be displayed on your page using different conditional statements depending on the output media type.
|
||||
{% /section %}
|
||||
|
||||
{% section #step-6 step=6 title="Handle POST Request" %}
|
||||
|
||||
@@ -3,17 +3,14 @@ layout: article
|
||||
title: Custom token login
|
||||
description: Limitless authentication flow in Appwrite. Find out how to implement custom authentication flow or connect to 3rd party authentication providers.
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.13`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
Tokens are short-lived secrets created by an [Appwrite Server SDK](/docs/sdks#server) that can be exchanged for session by a [Client SDK](/docs/sdks#client) to log in users. You may already be familiar with tokens if you checked out [Magic URL login](/docs/products/auth/magic-url), [Email OTP login](/docs/products/auth/email-otp) or [Phone (SMS) login](/docs/products/auth/phone-sms).
|
||||
|
||||
Custom token allows you to use [Server SDK](/docs/sdks#server) to generate tokens for your own implementations. This allows you to code your own authentication methods using Appwrite Functions or your own backend. You could implement username and password sign-in, captcha-protected authentication, phone call auth, and much more. Custom tokens also allow you to skip authentication which is useful when you integrate Appwrite with external authenticaion providers such as Auth0, TypingDNA, or any provider trusted by your users.
|
||||
|
||||
# Create custom token {% #create-custom-token %}
|
||||
|
||||
Once you have your server endpoint prepared either in an Appwrite Function or a server integration, you can use the [Create token](/docs/references/1.5.x/server-nodejs/users#createToken) endpoint of the [Users API](/docs/products/auth/users) to generate a token.
|
||||
Once you have your server endpoint prepared either in an Appwrite Function or a server integration, you can use the [Create token](/docs/references/cloud/server-nodejs/users#createToken) endpoint of the [Users API](/docs/products/auth/users) to generate a token.
|
||||
|
||||
{% multicode %}
|
||||
```server-nodejs
|
||||
@@ -161,7 +158,7 @@ If the client doesn't know the user's ID during authentication, we recommend to
|
||||
|
||||
# Login {% #login %}
|
||||
|
||||
Once the client receives a token secret, we can use it to authenticate the user in the application. Use the [Client SDK's](/docs/sdks#client) [Create session endpoint](/docs/references/1.5.x/server-nodejs/account#createSession) to exchange the token secret for a valid session, which logs the user.
|
||||
Once the client receives a token secret, we can use it to authenticate the user in the application. Use the [Client SDK's](/docs/sdks#client) [Create session endpoint](/docs/references/cloud/server-nodejs/account#createSession) to exchange the token secret for a valid session, which logs the user.
|
||||
|
||||
{% multicode %}
|
||||
|
||||
|
||||
@@ -3,10 +3,6 @@ layout: article
|
||||
title: Email OTP
|
||||
description: Seamless sign in with Email OTP authentication in Appwrite. Learn how to provide simple and secure passwordless user accounts.
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
Email OTP (one-time password) authentication lets users create accounts using their email address and log 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 better user experience in some scenarios.
|
||||
|
||||
|
||||
@@ -4,11 +4,6 @@ title: Multi-factor authentication
|
||||
description: Add multiple layers of authentication to your applications powered by Appwrite Authentication.
|
||||
---
|
||||
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
Multi-factor authentication (MFA) greatly increases the security of your apps by adding additional layers of protection.
|
||||
When MFA is enabled, a malicious actor needs to compromise multiple authentication factors to gain unauthorized access.
|
||||
Appwrite Authentication lets you easily implement MFA in your apps, letting you build more securely and quickly.
|
||||
|
||||
@@ -3,11 +3,6 @@ layout: article
|
||||
title: SSR login
|
||||
description: How to implement SSR authentication with Appwrite
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
Server-side rendering (SSR) is fully supported with Appwrite. You can use Appwrite with many SSR-oriented frameworks, such as Next.js, SvelteKit, Nuxt, Gatsby, Remix, and more.
|
||||
|
||||
SSR is a technique where the server renders a web page and sending the fully rendered page to the client's web browser. This is in contrast to client-side rendering (CSR), where the client's web browser renders the page using JavaScript.
|
||||
|
||||
@@ -3,11 +3,6 @@ layout: article
|
||||
title: Tokens
|
||||
description: What are tokens and how to use them in Appwrite
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
Tokens are short-lived secrets created by an [Appwrite Server SDK](/docs/sdks#server) that can be exchanged for session by a [Client SDK](/docs/sdks#client) to log in users.
|
||||
Some auth methods like [Magic URL login](/docs/products/auth/magic-url),
|
||||
[Email OTP login](/docs/products/auth/email-otp), or [Phone (SMS) login](/docs/products/auth/phone-sms) already generate tokens.
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
items: [
|
||||
{
|
||||
label: 'API reference',
|
||||
href: '/docs/references/1.5.x/client-web/messaging'
|
||||
href: '/docs/references/cloud/client-web/messaging'
|
||||
},
|
||||
]
|
||||
},
|
||||
|
||||
@@ -5,11 +5,6 @@ description: Send push notifications, text, or emails to users or groups of user
|
||||
back: /docs
|
||||
---
|
||||
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
Appwrite Messaging helps you communicate with your users through push notifications, emails, and SMS text messages.
|
||||
Sending personalized communication for marketing, updates, and realtime alerts can increase user engagement and retention.
|
||||
You can also use Appwrite Messaging to implement security checks and custom authentication flows.
|
||||
|
||||
@@ -4,11 +4,6 @@ title: Apple Push Notification service
|
||||
description: Send push notifications to apps on Apple devices through Apple Push Notification service (APNs) using Appwrite Messaging.
|
||||
back: /docs/
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
Apple Push Notification service (APNs) lets you send push notifications to Apple devices like macOS, iOS, tvOS, iPadOS, and watchOS devices.
|
||||
APNs is a best-effort service, and will attempt to deliver you messages to your device when it's online and available again.
|
||||
APNs will save the last message for 30 days or less and attempt delivery as soon as it's online.
|
||||
|
||||
@@ -4,11 +4,6 @@ title: Firebase Cloud Messaging
|
||||
description: Send push notifications to Android, Apple, or Web app with Firebase Cloud Messaging (FCM).
|
||||
back: /docs/
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
Firebase Cloud Messaging (FCM) lets you send push notifications to your iOS, Android, and web apps through Appwrite Messaging.
|
||||
Before you can deliver messages, you must connect to a messaging provider.
|
||||
|
||||
|
||||
@@ -4,11 +4,6 @@ title: Mailgun
|
||||
description: Send emails to your Appwrite users using Mailgun and Appwrite Messaging.
|
||||
back: /docs/
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
Mailgun lets you send customized email messages to your users.
|
||||
These emails can be sent immediately or scheduled.
|
||||
You can send emails for purposes like reminders, promotions, announcements, and even custom authentication flows.
|
||||
|
||||
@@ -4,11 +4,6 @@ title: Messages
|
||||
description: Learn about Appwrite messages, the different types of messages, what can be sent in different message types.
|
||||
back: /docs
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
Each time you send or schedule a push notification, email, or SMS text, it's recorded in Appwrite
|
||||
as a **message** is displayed in the **Messages** tab.
|
||||
|
||||
|
||||
@@ -4,11 +4,6 @@ title: MSG91
|
||||
description: Send SMS messages to your Appwrite users using MSG91 and Appwrite Messaging.
|
||||
back: /docs/
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
MSG91 lets you send customized SMS messages to your users.
|
||||
These SMS messages can be sent immediately or scheduled.
|
||||
You can send SMS messages for purposes like reminders, promotions, announcements, and even custom authentication flows.
|
||||
|
||||
@@ -3,11 +3,6 @@ layout: article
|
||||
title: Send email messages
|
||||
description: Send email messages to your users using Appwrite Messaging.
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
You can send custom email messages to your app's users using Appwrite Messaging and a connected SMTP service.
|
||||
This guide takes you through the implementation path of adding email messaging to your app.
|
||||
|
||||
@@ -44,7 +39,7 @@ During development, you can add targets to existing accounts by navigating to **
|
||||

|
||||
{% /only_light %}
|
||||
|
||||
You can also implement forms in your app to collect contact information and add it as a target with the [createTarget](/docs/references/1.5.x/server-nodejs/users#createTarget) endpoint.
|
||||
You can also implement forms in your app to collect contact information and add it as a target with the [createTarget](/docs/references/cloud/server-nodejs/users#createTarget) endpoint.
|
||||
{% multicode %}
|
||||
```server-nodejs
|
||||
const sdk = require('node-appwrite');
|
||||
@@ -281,7 +276,7 @@ To create a topic in the Appwrite Console, navigate to **Messaging** > **Topics*
|
||||

|
||||
{% /only_light %}
|
||||
|
||||
You can also create topics programmatically using an [Appwrite Server SDK](/docs/references/1.5.x/server-nodejs/messaging#createTopic).
|
||||
You can also create topics programmatically using an [Appwrite Server SDK](/docs/references/cloud/server-nodejs/messaging#createTopic).
|
||||
{% multicode %}
|
||||
```server-nodejs
|
||||
const sdk = require('node-appwrite');
|
||||
|
||||
@@ -3,11 +3,6 @@ layout: article
|
||||
title: Send push notification
|
||||
description: Send push notification to your users using Appwrite Messaging.
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
You can send, schedule, and manage push notifications to your apps using Appwrite Messaging.
|
||||
Push notifications can be used to deliver new message notifications, app updates, promotional offers,
|
||||
and other messages straight to your user's devices.
|
||||
|
||||
@@ -3,11 +3,6 @@ layout: article
|
||||
title: Send SMS messages
|
||||
description: Send SMS messages to your users using Appwrite Messaging.
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
You can send custom sms messages to your app's users using Appwrite Messaging and a connected SMTP service.
|
||||
This guide takes you through the implementation path of adding sms messaging to your app.
|
||||
|
||||
@@ -52,7 +47,7 @@ During development, you can add targets to existing accounts by navigating to **
|
||||

|
||||
{% /only_light %}
|
||||
|
||||
You can also implement forms in your app to collect contact information and add it as a target with the [createSubscriber](/docs/references/1.5.x/server-nodejs/messaging#createSubscriber) endpoint.
|
||||
You can also implement forms in your app to collect contact information and add it as a target with the [createSubscriber](/docs/references/cloud/server-nodejs/messaging#createSubscriber) endpoint.
|
||||
|
||||
{% multicode %}
|
||||
```server-nodejs
|
||||
@@ -291,7 +286,7 @@ To create a topic in the Appwrite Console, navigate to **Messaging** > **Topics*
|
||||

|
||||
{% /only_light %}
|
||||
|
||||
You can also create topics programmatically using an [Appwrite Server SDK](/docs/references/1.5.x/server-nodejs/messaging#createTopic).
|
||||
You can also create topics programmatically using an [Appwrite Server SDK](/docs/references/cloud/server-nodejs/messaging#createTopic).
|
||||
{% multicode %}
|
||||
```server-nodejs
|
||||
const sdk = require('node-appwrite');
|
||||
|
||||
@@ -4,11 +4,6 @@ title: Sendgrid
|
||||
description: Send emails to your Appwrite users using Sendgrid and Appwrite Messaging.
|
||||
back: /docs/
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
Sendgrid lets you send customized email messages to your users.
|
||||
These emails can be sent immediately or scheduled.
|
||||
You can send emails for purposes like reminders, promotions, announcements, and even custom authentication flows.
|
||||
|
||||
@@ -4,11 +4,6 @@ title: SMTP
|
||||
description: Send emails to your Appwrite users using SMTP and Appwrite Messaging.
|
||||
back: /docs/
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
If you wish to use a third-party SMTP provider that Appwrite doesn't yet support or host your own SMTP
|
||||
server, you can setup a custom SMTP provider for your project.
|
||||
|
||||
|
||||
@@ -3,11 +3,6 @@ layout: article
|
||||
title: Targets
|
||||
description: Manage avenues of communication by targetting user's device, email, or phone number in your notification and messages.
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
Targets are different ways a user can be reached.
|
||||
For example, a user might have two emails, a phone number as well as a phone and a tablet with your app installed.
|
||||
This means, the user has five different targets that you can deliver messages to.
|
||||
|
||||
@@ -4,11 +4,6 @@ title: Telesign
|
||||
description: Send SMS messages to your Appwrite users using Telesign and Appwrite Messaging.
|
||||
back: /docs/
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
Telesign lets you send customized SMS messages to your users.
|
||||
These SMS messages can be sent immediately or scheduled.
|
||||
You can send SMS messages for purposes like reminders, promotions, announcements, and even custom authentication flows.
|
||||
|
||||
@@ -4,11 +4,6 @@ title: TextMagic
|
||||
description: Send SMS messages to your Appwrite users using TextMagic and Appwrite Messaging.
|
||||
back: /docs/
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
TextMagic lets you send customized SMS messages to your users.
|
||||
These SMS messages can be sent immediately or scheduled.
|
||||
You can send SMS messages for purposes like reminders, promotions, announcements, and even custom authentication flows.
|
||||
|
||||
@@ -3,11 +3,6 @@ layout: article
|
||||
title: Topics
|
||||
description: Allow groups of users to subscribe to a common topic and receive the same notifications.
|
||||
---
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
In Appwrite Messaging, you can use topics to deliver messages to groups of users at once.
|
||||
|
||||
{% only_dark %}
|
||||
|
||||
@@ -5,11 +5,6 @@ description: Send SMS messages to your Appwrite users using Twilio and Appwrite
|
||||
back: /docs/
|
||||
---
|
||||
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
Twilio lets you send customized SMS messages to your users.
|
||||
These SMS messages can be sent immediately or scheduled.
|
||||
You can send SMS messages for purposes like reminders, promotions, announcements, and even custom authentication flows.
|
||||
|
||||
@@ -5,11 +5,6 @@ description: Send SMS messages to your Appwrite users using Vonage and Appwrite
|
||||
back: /docs/
|
||||
---
|
||||
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
Vonage lets you send customized SMS messages to your users.
|
||||
These SMS messages can be sent immediately or scheduled.
|
||||
You can send SMS messages for purposes like reminders, promotions, announcements, and even custom authentication flows.
|
||||
|
||||
@@ -49,7 +49,7 @@ You can skip optional steps.
|
||||
To add the Appwrite SDK for Android as a dependency, add the following to your app-level **build.gradle.kts** file inside the **dependencies** block.
|
||||
|
||||
```kotlin
|
||||
implementation("io.appwrite:sdk-for-android:4.0.1")
|
||||
implementation("io.appwrite:sdk-for-android:5.1.0")
|
||||
```
|
||||
|
||||
In order to allow creating OAuth sessions, the following activity needs to be added inside the `<application>` tag, along side the existing `<activity>` tags in your [AndroidManifest.xml](https://github.com/appwrite/playground-for-flutter/blob/master/android/app/src/main/AndroidManifest.xml).
|
||||
|
||||
@@ -54,7 +54,7 @@ cd my-app
|
||||
Install the JavaScript Appwrite SDK.
|
||||
|
||||
```sh
|
||||
npm install appwrite@13.0.2
|
||||
npm install appwrite@14.0.1
|
||||
```
|
||||
{% /section %}
|
||||
{% section #step-4 step=4 title="Import Appwrite" %}
|
||||
|
||||
@@ -52,7 +52,7 @@ To add the Appwrite SDK for Apple as a dependency, open the **File** menu and cl
|
||||
|
||||
In the **Package URL** search box, enter https://github.com/appwrite/sdk-for-apple.
|
||||
|
||||
Once the SDK is found, use `4.0.0` as version, select **Up to Next Major Version** as your **Dependency Rule** and click **Add Package**.
|
||||
Once the SDK is found, use `5.0.0` as version, select **Up to Next Major Version** as your **Dependency Rule** and click **Add Package**.
|
||||
|
||||
When dependency resolution is complete, click **Add Package** again to add the SDK package to your target.
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ After entering the project directory, remove the `lib/` and `test/` directories.
|
||||
Install the Dart Appwrite SDK.
|
||||
|
||||
```sh
|
||||
dart pub add dart_appwrite 10.0.0
|
||||
dart pub add dart_appwrite 11.0.2
|
||||
```
|
||||
{% /section %}
|
||||
{% section #step-4 step=4 title="Import Appwrite" %}
|
||||
|
||||
@@ -55,7 +55,7 @@ Install the Deno Appwrite SDK by importing it `deno.land/x` at the top of your f
|
||||
|
||||
```
|
||||
// import all as sdk
|
||||
import * as sdk from "https://deno.land/x/appwrite@9.1.0/mod.ts";
|
||||
import * as sdk from "https://deno.land/x/appwrite@10.0.1/mod.ts";
|
||||
|
||||
// import only what you need
|
||||
import { Client, ... other imports } from "https://deno.land/x/appwrite/mod.ts";
|
||||
|
||||
@@ -59,7 +59,7 @@ cd MyApp
|
||||
Install the .NET Appwrite SDK.
|
||||
|
||||
```sh
|
||||
dotnet add package Appwrite --version 0.7.1
|
||||
dotnet add package Appwrite --version 0.8.1
|
||||
```
|
||||
{% /section %}
|
||||
{% section #step-4 step=4 title="Import Appwrite" %}
|
||||
|
||||
@@ -158,7 +158,7 @@ You can skip optional steps.
|
||||
Install the Appwrite SDK for Flutter.
|
||||
|
||||
```sh
|
||||
flutter pub add appwrite:11.0.1
|
||||
flutter pub add appwrite:12.0.3
|
||||
```
|
||||
|
||||
{% /section %}
|
||||
|
||||
@@ -64,7 +64,7 @@ Open your `build.gradle.kts` file and implement the following dependency.
|
||||
```groovy
|
||||
dependencies {
|
||||
... other dependencies
|
||||
implementation("io.appwrite:sdk-for-kotlin:4.1.0")
|
||||
implementation("io.appwrite:sdk-for-kotlin:5.0.1")
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ npx create-next-app@latest && cd my-app
|
||||
Install the JavaScript Appwrite SDK.
|
||||
|
||||
```sh
|
||||
npm install appwrite@13.0.2
|
||||
npm install appwrite@14.0.1
|
||||
```
|
||||
{% /section %}
|
||||
{% section #step-4 step=4 title="Define Appwrite service" %}
|
||||
|
||||
@@ -46,7 +46,7 @@ npx nuxi@latest init my-app && cd my app
|
||||
Install the JavaScript Appwrite SDK.
|
||||
|
||||
```sh
|
||||
npm install appwrite@13.0.2
|
||||
npm install appwrite@14.0.1
|
||||
```
|
||||
{% /section %}
|
||||
{% section #step-4 step=4 title="Import Appwrite" %}
|
||||
|
||||
@@ -54,7 +54,7 @@ composer init
|
||||
Install the PHP Appwrite SDK.
|
||||
|
||||
```sh
|
||||
composer require appwrite/appwrite:10.1.0
|
||||
composer require appwrite/appwrite:11.0.1
|
||||
```
|
||||
{% /section %}
|
||||
{% section #step-4 step=4 title="Import Appwrite" %}
|
||||
|
||||
@@ -44,7 +44,7 @@ npm create vite@latest my-app -- --template react && cd my-app
|
||||
Install the JavaScript Appwrite SDK.
|
||||
|
||||
```sh
|
||||
npm install appwrite@13.0.2
|
||||
npm install appwrite@14.0.1
|
||||
```
|
||||
{% /section %}
|
||||
{% section #step-4 step=4 title="Import Appwrite" %}
|
||||
|
||||
@@ -51,7 +51,7 @@ bundle init
|
||||
{% /section %}
|
||||
{% section #step-3 step=3 title="Install Appwrite" %}
|
||||
|
||||
Install the Ruby Appwrite SDK. Make sure to lock your SDK to version `10.1.2` to avoid breaking changes.
|
||||
Install the Ruby Appwrite SDK. Make sure to lock your SDK to version `10.0.0` to avoid breaking changes.
|
||||
|
||||
```sh
|
||||
bundle add appwrite
|
||||
|
||||
@@ -47,7 +47,7 @@ npm create vite@latest my-app -- --template solid && cd my-app
|
||||
Install the JavaScript Appwrite SDK.
|
||||
|
||||
```sh
|
||||
npm install appwrite@13.0.2
|
||||
npm install appwrite@14.0.1
|
||||
```
|
||||
{% /section %}
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ npm create svelte@next my-app && cd my-app && npm install
|
||||
Install the JavaScript Appwrite SDK.
|
||||
|
||||
```sh
|
||||
npm install appwrite@13.0.2
|
||||
npm install appwrite@14.0.1
|
||||
```
|
||||
{% /section %}
|
||||
{% section #step-4 step=4 title="Import Appwrite" %}
|
||||
|
||||
@@ -63,7 +63,7 @@ Follow the wizard and open your new project.
|
||||
|
||||
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 `4.0.0` with rule **Up to Next Major Version**.
|
||||
Specify version as `5.0.1` with rule **Up to Next Major Version**.
|
||||
|
||||
{% /section %}
|
||||
{% section #step-4 step=4 title="Import Appwrite" %}
|
||||
|
||||
@@ -44,7 +44,7 @@ npm init vue@latest my-app && cd my-app
|
||||
Install the JavaScript Appwrite SDK.
|
||||
|
||||
```sh
|
||||
npm install appwrite@13.0.2
|
||||
npm install appwrite@14.0.1
|
||||
```
|
||||
{% /section %}
|
||||
{% section #step-4 step=4 title="Import Appwrite" %}
|
||||
|
||||
@@ -36,13 +36,13 @@ You can skip optional steps.
|
||||
{% section #step-2 step=2 title="Create project" %}
|
||||
You can install the Appwrite Web SDK using a package manager.
|
||||
```sh
|
||||
npm install appwrite@13.0.2
|
||||
npm install appwrite@14.0.1
|
||||
```
|
||||
|
||||
You can also add the Appwrite Web SDK using CDN with a script tag.
|
||||
|
||||
```html
|
||||
<script src="https://cdn.jsdelivr.net/npm/appwrite@13.0.1"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/appwrite@14.0.1"></script>
|
||||
```
|
||||
{% /section %}
|
||||
{% section #step-3 step=3 title="Import Appwrite" %}
|
||||
|
||||
@@ -18,7 +18,7 @@ export const entries: EntryGenerator = () => {
|
||||
|
||||
export const load: PageServerLoad = async ({ params }) => {
|
||||
const { platform, service } = params;
|
||||
const version = params.version === 'cloud' ? '1.4.x' : params.version;
|
||||
const version = params.version === 'cloud' ? '1.5.x' : params.version;
|
||||
if (!versions.includes(version)) error(404, 'Invalid version');
|
||||
if (!services.includes(service as Service)) error(404, 'Invalid service');
|
||||
if (!platforms.includes(platform as Platform)) error(404, 'Invalid platform');
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
The Account service allows you to authenticate and manage a user account. You can use the account service to update user information, retrieve the user sessions across different devices, and fetch the user security logs with his or her recent activity.
|
||||
|
||||
Register new user accounts with the [Create Account](/docs/references/cloud/client-web/account#create), [Create Magic URL session](/docs/references/1.5.x/client-web/account#createMagicURLToken), or [Create Phone session](/docs/references/1.5.x/client-web/account#createPhoneToken) endpoint. You can authenticate the user account by using multiple sign-in methods available. Once the user is authenticated, a new session object will be created to allow the user to access his or her private data and settings.
|
||||
Register new user accounts with the [Create Account](/docs/references/cloud/client-web/account#create), [Create Magic URL session](/docs/references/cloud/client-web/account#createMagicURLToken), or [Create Phone session](/docs/references/cloud/client-web/account#createPhoneToken) endpoint. You can authenticate the user account by using multiple sign-in methods available. Once the user is authenticated, a new session object will be created to allow the user to access his or her private data and settings.
|
||||
|
||||
This service also exposes an endpoint to save and read the [user preferences](/docs/references/cloud/client-web/account#updatePrefs) as a key-value object. This feature is handy if you want to allow extra customization in your app. Common usage for this feature may include saving the user's preferred locale, timezone, or custom app theme.
|
||||
|
||||
@@ -19,7 +19,7 @@ type Example = {
|
||||
}
|
||||
|
||||
export const load: PageServerLoad = async ({ params }) => {
|
||||
const version = params.version === 'cloud' ? '1.4.x' : params.version;
|
||||
const version = params.version === 'cloud' ? '1.5.x' : params.version;
|
||||
const api = await getApi(version, 'console-web');
|
||||
const schema = getSchema(params.model, api);
|
||||
const props = Object.entries(schema.properties ?? {});
|
||||
|
||||
@@ -20,25 +20,25 @@ Client libraries for integrating with Appwrite to build client-based application
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/javascript.svg" alt="Javascript logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/javascript.svg" alt="Javascript logo" size="m" /%}{% /only_light %}
|
||||
* Web SDK `13.0.1`
|
||||
* Web SDK `14.0.1`
|
||||
* [appwrite/sdk-for-web](https://github.com/appwrite/sdk-for-web)
|
||||
*
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/flutter.svg" alt="Flutter logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/flutter.svg" alt="Flutter logo" size="m" /%}{% /only_light %}
|
||||
* Flutter SDK `11.0.0`
|
||||
* Flutter SDK `12.0.3`
|
||||
* [appwrite/sdk-for-flutter](https://github.com/appwrite/sdk-for-flutter)
|
||||
*
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/apple.svg" alt="Apple logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/apple.svg" alt="Apple logo" size="m" /%}{% /only_light %}
|
||||
* Apple SDK `4.0.0`
|
||||
* Apple SDK `5.0.0`
|
||||
* [appwrite/sdk-for-apple](https://github.com/appwrite/sdk-for-apple)
|
||||
*
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/android.svg" alt="Android logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/android.svg" alt="Android logo" size="m" /%}{% /only_light %}
|
||||
* Android SDK `4.0.0`
|
||||
* Android SDK `5.1.0`
|
||||
* [appwrite/sdk-for-android](https://github.com/appwrite/sdk-for-android)
|
||||
*
|
||||
---
|
||||
@@ -61,55 +61,55 @@ Server libraries for integrating with Appwrite to build server side integrations
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/nodejs.svg" alt="Node.js logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/nodejs.svg" alt="Node.js logo" size="m" /%}{% /only_light %}
|
||||
* Node.js SDK `11.0.0`
|
||||
* Node.js SDK `12.0.1`
|
||||
* [appwrite/sdk-for-node](https://github.com/appwrite/sdk-for-node)
|
||||
*
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/dart.svg" alt="Dart logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/dart.svg" alt="Dart logo" size="m" /%}{% /only_light %}
|
||||
* Dart SDK `10.0.0`
|
||||
* Dart SDK `11.0.2`
|
||||
* [appwrite/sdk-for-dart](https://github.com/appwrite/sdk-for-dart)
|
||||
*
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/python.svg" alt="Python logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/python.svg" alt="Python logo" size="m" /%}{% /only_light %}
|
||||
* Python SDK `4.0.0`
|
||||
* Python SDK `5.0.2`
|
||||
* [appwrite/sdk-for-python](https://github.com/appwrite/sdk-for-python)
|
||||
*
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/php.svg" alt="PHP logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/php.svg" alt="PHP logo" size="m" /%}{% /only_light %}
|
||||
* PHP SDK `10.0.0`
|
||||
* PHP SDK `11.0.1`
|
||||
* [appwrite/sdk-for-php](https://github.com/appwrite/sdk-for-php)
|
||||
*
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/ruby.svg" alt="Ruby logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/ruby.svg" alt="Ruby logo" size="m" /%}{% /only_light %}
|
||||
* Ruby SDK `10.0.0`
|
||||
* Ruby SDK `11.0.1`
|
||||
* [appwrite/sdk-for-ruby](https://github.com/appwrite/sdk-for-ruby)
|
||||
*
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/dotnet.svg" alt=".NET logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/dotnet.svg" alt=".NET logo" size="m" /%}{% /only_light %}
|
||||
* .NET SDK `0.6.0`
|
||||
* .NET SDK `0.8.1`
|
||||
* [appwrite/sdk-for-dotnet](https://github.com/appwrite/sdk-for-dotnet)
|
||||
* `beta`
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/deno.svg" alt="Deno logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/deno.svg" alt="Deno logo" size="m" /%}{% /only_light %}
|
||||
* Deno SDK `9.1.0`
|
||||
* Deno SDK `10.0.1`
|
||||
* [appwrite/sdk-for-deno](https://github.com/appwrite/sdk-for-deno)
|
||||
*
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/kotlin.svg" alt="Kotlin logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/kotlin.svg" alt="Kotlin logo" size="m" /%}{% /only_light %}
|
||||
* Kotlin SDK `4.1.0`
|
||||
* Kotlin SDK `5.0.1`
|
||||
* [appwrite/sdk-for-kotlin](https://github.com/appwrite/sdk-for-kotlin)
|
||||
*
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/swift.svg" alt="Swift logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/swift.svg" alt="Swift logo" size="m" /%}{% /only_light %}
|
||||
* Swift SDK `4.0.0`
|
||||
* Swift SDK `5.0.1`
|
||||
* [appwrite/sdk-for-swift](https://github.com/appwrite/sdk-for-swift)
|
||||
*
|
||||
{% /table %}
|
||||
@@ -274,11 +274,6 @@ Appwrite IDs combine a timestamp prefix based on microseconds and a random UID s
|
||||
## Enums {% #enums %}
|
||||
Appwrite has enumeration classes for predefined strings used different parameters used for the Appwrite APIs.
|
||||
|
||||
{% info title="Unreleased on Cloud" %}
|
||||
This feature is not yet released on Cloud, which is on Appwrite `1.4.x`.
|
||||
This is a feature available in Appwrite `1.5.x` and will be available on Appwrite Cloud later.
|
||||
{% /info %}
|
||||
|
||||
These enums are available for authenticator type, name, OAuth provider,
|
||||
password hash types, browsers, authentication factors, index types, credit cards,
|
||||
image gravity, image format, relationship types, SMTP encryption, Function runtime,
|
||||
@@ -294,22 +289,22 @@ You can discover the available enums in each SDK at the source.
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/javascript.svg" alt="Javascript logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/javascript.svg" alt="Javascript logo" size="m" /%}{% /only_light %}
|
||||
* Web SDK `13.0.1`
|
||||
* Web SDK `14.0.1`
|
||||
* [appwrite/sdk-for-web](https://github.com/appwrite/sdk-for-web/tree/dev/src/enums)
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/flutter.svg" alt="Flutter logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/flutter.svg" alt="Flutter logo" size="m" /%}{% /only_light %}
|
||||
* Flutter SDK `11.0.1`
|
||||
* Flutter SDK `12.0.3`
|
||||
* [appwrite/sdk-for-flutter](https://github.com/appwrite/sdk-for-flutter/tree/dev/lib/src/enums)
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/apple.svg" alt="Apple logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/apple.svg" alt="Apple logo" size="m" /%}{% /only_light %}
|
||||
* Apple SDK `4.0.0`
|
||||
* Apple SDK `5.0.0`
|
||||
* [appwrite/sdk-for-apple](https://github.com/appwrite/sdk-for-apple/tree/dev/Sources/AppwriteEnums)
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/android.svg" alt="Android logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/android.svg" alt="Android logo" size="m" /%}{% /only_light %}
|
||||
* Android SDK `4.0.0`
|
||||
* Android SDK `5.1.0`
|
||||
* [appwrite/sdk-for-android](https://github.com/appwrite/sdk-for-android/tree/dev/library/src/main/java/io/appwrite/enums)
|
||||
{% /table %}
|
||||
{% /tabsitem %}
|
||||
@@ -324,7 +319,7 @@ You can discover the available enums in each SDK at the source.
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/nodejs.svg" alt="Node.js logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/nodejs.svg" alt="Node.js logo" size="m" /%}{% /only_light %}
|
||||
* Node.js SDK `11.0.0`
|
||||
* Node.js SDK `12.0.1`
|
||||
* [appwrite/sdk-for-node](https://github.com/appwrite/sdk-for-node/tree/dev/lib/enums)
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/dart.svg" alt="Dart logo" size="m" /%}{% /only_dark %}
|
||||
@@ -334,37 +329,37 @@ You can discover the available enums in each SDK at the source.
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/python.svg" alt="Python logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/python.svg" alt="Python logo" size="m" /%}{% /only_light %}
|
||||
* Python SDK `4.0.0`
|
||||
* Python SDK `5.0.2`
|
||||
* [appwrite/sdk-for-python](https://github.com/appwrite/sdk-for-python/tree/dev/appwrite/enums)
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/php.svg" alt="PHP logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/php.svg" alt="PHP logo" size="m" /%}{% /only_light %}
|
||||
* PHP SDK `10.0.0`
|
||||
* PHP SDK `11.0.1`
|
||||
* [appwrite/sdk-for-php](https://github.com/appwrite/sdk-for-php/tree/dev/src/Appwrite/Enums)
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/ruby.svg" alt="Ruby logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/ruby.svg" alt="Ruby logo" size="m" /%}{% /only_light %}
|
||||
* Ruby SDK `10.0.0`
|
||||
* Ruby SDK `11.0.1`
|
||||
* [appwrite/sdk-for-ruby](https://github.com/appwrite/sdk-for-ruby/tree/dev/lib/appwrite/enums)
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/dotnet.svg" alt=".NET logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/dotnet.svg" alt=".NET logo" size="m" /%}{% /only_light %}
|
||||
* .NET SDK `0.6.0`
|
||||
* .NET SDK `0.8.1`
|
||||
* [appwrite/sdk-for-dotnet](https://github.com/appwrite/sdk-for-dotnet/tree/dev/src/Appwrite/Enums)
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/deno.svg" alt="Deno logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/deno.svg" alt="Deno logo" size="m" /%}{% /only_light %}
|
||||
* Deno SDK `9.0.0`
|
||||
* Deno SDK `10.0.1`
|
||||
* [appwrite/sdk-for-deno](https://github.com/appwrite/sdk-for-deno/tree/dev/src/enums)
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/kotlin.svg" alt="Kotlin logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/kotlin.svg" alt="Kotlin logo" size="m" /%}{% /only_light %}
|
||||
* Kotlin SDK `4.0.0`
|
||||
* Kotlin SDK `5.0.1`
|
||||
* [appwrite/sdk-for-kotlin](https://github.com/appwrite/sdk-for-kotlin/tree/dev/src/main/kotlin/io/appwrite/enums)
|
||||
---
|
||||
* {% only_dark %}{% icon_image src="/images/platforms/dark/swift.svg" alt="Swift logo" size="m" /%}{% /only_dark %}
|
||||
{% only_light %}{% icon_image src="/images/platforms/swift.svg" alt="Swift logo" size="m" /%}{% /only_light %}
|
||||
* Swift SDK `4.0.0`
|
||||
* Swift SDK `5.0.1`
|
||||
* [appwrite/sdk-for-swift](https://github.com/appwrite/sdk-for-swift/tree/dev/Sources/AppwriteEnums)
|
||||
{% /table %}
|
||||
{% /tabsitem %}
|
||||
|
||||
@@ -16,7 +16,7 @@ Install the Android Appwrite SDK.
|
||||
Add the following to your dependencies in the `app/build.gradle` file:
|
||||
|
||||
```groovy
|
||||
implementation("io.appwrite:sdk-for-android:4.0.1")
|
||||
implementation("io.appwrite:sdk-for-android:5.1.0")
|
||||
```
|
||||
|
||||
In case you need to create OAuth 2 sessions in the future, the following activity needs to be added inside the `<application>` tag, along side the existing `<activity>` tags in your [AndroidManifest.xml](https://developer.android.com/guide/topics/manifest/manifest-intro).
|
||||
|
||||
@@ -20,7 +20,7 @@ Once the project is created, change your current working directory and install t
|
||||
|
||||
```sh
|
||||
cd ideas-tracker
|
||||
npm install appwrite@13.0.2
|
||||
npm install appwrite@14.0.1
|
||||
npm install "@appwrite.io/pink"
|
||||
```
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ npm create vite@latest --template react ideas-tracker && cd ideas-tracker
|
||||
Install the JavaScript Appwrite SDK.
|
||||
|
||||
```sh
|
||||
npm install appwrite@13.0.2
|
||||
npm install appwrite@14.0.1
|
||||
```
|
||||
|
||||
You can start the development server to watch your app update in the browser as you make changes.
|
||||
|
||||
@@ -48,5 +48,5 @@ npm install
|
||||
Appwrite provides a Web SDK that can be used in your Svelte apps. You can use Appwrite by installing the Web SDK as an NPM package.
|
||||
|
||||
```sh
|
||||
npm install appwrite@13.0.2
|
||||
npm install appwrite@14.0.1
|
||||
```
|
||||
@@ -20,7 +20,7 @@ npm install
|
||||
Install the JavaScript Appwrite SDK.
|
||||
|
||||
```sh
|
||||
npm install appwrite@13.0.2
|
||||
npm install appwrite@14.0.1
|
||||
```
|
||||
|
||||
You can start the development server to watch your app update in the browser as you make changes.
|
||||
|
||||
@@ -18,7 +18,7 @@ npm create vite@latest --template vue ideas-tracker && cd ideas-tracker
|
||||
Install the JavaScript Appwrite SDK.
|
||||
|
||||
```sh
|
||||
npm install appwrite@13.0.2
|
||||
npm install appwrite@14.0.1
|
||||
```
|
||||
|
||||
You can start the development server to watch your app update in the browser as you make changes.
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 860 KiB |
BIN
static/images/blog/state-of-audio-processing/cover.png
Normal file
BIN
static/images/blog/state-of-audio-processing/cover.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 MiB |
BIN
static/images/blog/state-of-audio-processing/fourier.png
Normal file
BIN
static/images/blog/state-of-audio-processing/fourier.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 68 KiB |
BIN
static/images/changelog/2024-04-22.png
Normal file
BIN
static/images/changelog/2024-04-22.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 860 KiB |
BIN
static/images/docs/ai/integrations/fal-ai/demo.png
Normal file
BIN
static/images/docs/ai/integrations/fal-ai/demo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 876 KiB |
Reference in New Issue
Block a user