Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 31 additions & 1 deletion src/routes/docs/quick-starts/+page.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,37 @@
icon: 'icon-dart',
image: '/images/blog/placeholder.png',
href: 'dart'
}
},
{
title: 'Ruby',
icon: 'icon-ruby',
image: '/images/blog/placeholder.png',
href: 'ruby'
},
{
title: 'Deno',
icon: 'icon-deno',
image: '/images/blog/placeholder.png',
href: 'deno'
},
{
title: 'PHP',
icon: 'icon-php',
image: '/images/blog/placeholder.png',
href: 'php'
},
{
title: 'Kotlin',
icon: 'icon-kotlin',
image: '/images/blog/placeholder.png',
href: 'kotlin'
},
{
title: 'Swift',
icon: 'icon-swift',
image: '/images/blog/placeholder.png',
href: 'swift'
},
]
}
];
Expand Down
4 changes: 2 additions & 2 deletions src/routes/docs/quick-starts/dart/+page.markdoc
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ Then, under **Integrate with your server**, add an **API Key** with the followin
| Database | `databases.write` | Allows API key to create, update, and delete [databases](/docs/products/databases/databases). |
| | `collections.write` | Allows API key to create, update, and delete [collections](/docs/products/databases/collections). |
| | `attributes.write` | Allows API key to create, update, and delete [attributes](/docs/products/databases/collections#attributes). |
| | `documents.read` | Allows API key to create, update, and delete [documents](/docs/products/databases/documents). |
| | `documents.write` | Allows API key to read [documents](/docs/products/databases/documents). |
| | `documents.read` | Allows API key to read [documents](/docs/products/databases/documents). |
| | `documents.write` | Allows API key to create, update, and delete [documents](/docs/products/databases/documents). |

Other scopes are optional.

Expand Down
221 changes: 221 additions & 0 deletions src/routes/docs/quick-starts/deno/+page.markdoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,221 @@
---
layout: article
title: Start with Deno
description: Dive into our step-by-step guide on integrating Appwrite with your Deno server backend application. Get your backend up and running quickly with this tutorial.
difficulty: beginner
readtime: 5
back: /docs/quick-starts
---
Learn how to setup your first Deno project powered by Appwrite.
{% section #step-1 step=1 title="Create project" %}
Head to the [Appwrite Console](https://cloud.appwrite.io/console).

If this is your first time using Appwrite, create an account and create your first project.

{% only_dark %}
![Create project screen](/images/docs/quick-starts/dark/create-project.png)
{% /only_dark %}
{% only_light %}
![Create project screen](/images/docs/quick-starts/create-project.png)
{% /only_light %}

Then, under **Integrate with your server**, add an **API Key** with the following scopes.

{% only_dark %}
![Create project screen](/images/docs/quick-starts/dark/integrate-server.png)
{% /only_dark %}
{% only_light %}
![Create project screen](/images/docs/quick-starts/integrate-server.png)
{% /only_light %}

| Category {% width=120 %} | Required scopes | Purpose |
|-----------|-----------------------|---------|
| Database | `databases.write` | Allows API key to create, update, and delete [databases](/docs/products/databases/databases). |
| | `collections.write` | Allows API key to create, update, and delete [collections](/docs/products/databases/collections). |
| | `attributes.write` | Allows API key to create, update, and delete [attributes](/docs/products/databases/collections#attributes). |
| | `documents.read` | Allows API key to read [documents](/docs/products/databases/documents). |
| | `documents.write` | Allows API key to create, update, and delete [documents](/docs/products/databases/documents). |

Other scopes are optional.

{% /section %}
{% section #step-2 step=2 title="Create Deno project" %}
Create a Deno CLI application.

```sh
mkdir my-app
cd my-app
echo "console.log('Hello, Deno!');" > mod.ts
```

{% /section %}
{% section #step-3 step=3 title="Install Appwrite" %}

Install the Deno Appwrite SDK by importing it `deno.land/x` at the top of your file.

```
// import all as sdk
import * as sdk from "https://deno.land/x/appwrite/mod.ts";

// import only what you need
import { Client, ... other imports } from "https://deno.land/x/appwrite/mod.ts";
```

{% /section %}
{% section #step-4 step=4 title="Import Appwrite" %}

Find your project ID in the **Settings** page. Also, click on the **View API Keys** button to find the API key that was created earlier.

{% only_dark %}
![Project settings screen](/images/docs/quick-starts/dark/project-id.png)
{% /only_dark %}
{% only_light %}
![Project settings screen](/images/docs/quick-starts/project-id.png)
{% /only_light %}

Open `mod.ts` in your IDE and initialize the Appwrite Client. Replace `<YOUR_PROJECT_ID>` with your project ID and `<YOUR_API_KEY>` with your API key.

```ts
import { Client, ID, Databases, Models } from "https://deno.land/x/appwrite/mod.ts";

const client: Client = new Client();

client
.setEndpoint("https://cloud.appwrite.io/v1")
.setProject("<YOUR_PROJECT_ID>")
.setKey("<YOUR_API_KEY>");
```

{% /section %}
{% section #step-5 step=5 title="Initialize database" %}

Once the Appwrite Client is initialized, create a function to configure a todo collection.

```ts
const databases: Databases = new Databases(client);

var todoDatabase: Models.Database;
var todoCollection: Models.Collection;

interface Todo {
title: string;
description: string;
isComplete?: boolean;
}

async function prepareDatabase(): Promise<void> {
todoDatabase = await databases.create(
ID.unique(),
'TodosDB'
);

todoCollection = await databases.createCollection(
todoDatabase.$id,
ID.unique(),
'Todos'
);

await databases.createStringAttribute(
todoDatabase.$id,
todoCollection.$id,
'title',
255,
true
);

await databases.createStringAttribute(
todoDatabase.$id,
todoCollection.$id,
'description',
255, false,
'This is a test description'
);

await databases.createBooleanAttribute(
todoDatabase.$id,
todoCollection.$id,
'isComplete',
true
);
}
```

{% /section %}
{% section #step-6 step=6 title="Add documents" %}
Create a function to add some mock data into your new collection.

```ts
async function seedDatabase(): Promise<void> {
const testTodo1: Todo = {
title: 'Buy apples',
description: 'At least 2KGs',
isComplete: true
};

const testTodo2: Todo = {
title: 'Wash the apples',
isComplete: true
};

const testTodo3: Todo = {
title: 'Cut the apples',
description: 'Don\'t forget to pack them in a box',
isComplete: false
};

await databases.createDocument(
todoDatabase.$id,
todoCollection.$id,
ID.unique(),
testTodo1
);

await databases.createDocument(
todoDatabase.$id,
todoCollection.$id,
ID.unique(),
testTodo2
);

await databases.createDocument(
todoDatabase.$id,
todoCollection.$id,
ID.unique(),
testTodo3
);
}
```

{% /section %}
{% section #step-7 step=7 title="Retrieve documents" %}

Create a function to retrieve the mock todo data and a function to execute the requests in order.
Run the functions to by calling `runAllTasks();`.

```ts
async function getTodos(): Promise<void> {
const todos = await databases.listDocuments(
todoDatabase.$id,
todoCollection.$id
);

todos.documents.forEach((todo: Todo) => {
console.log(`Title: ${todo.title}\nDescription: ${todo.description}\nIs Todo Complete: ${todo.isComplete}\n\n`);
});
}

async function runAllTasks(): Promise<void> {
await prepareDatabase();
await seedDatabase();
await getTodos();
}
runAllTasks();
```

{% /section %}

{% section #step-8 step=8 title="All set" %}

Run your project with `deno mod.ts` and view the response in your console.

{% /section %}
4 changes: 2 additions & 2 deletions src/routes/docs/quick-starts/dotnet/+page.markdoc
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ Then, under **Integrate with your server**, add an **API Key** with the followin
| Database | `databases.write` | Allows API key to create, update, and delete [databases](/docs/products/databases/databases). |
| | `collections.write` | Allows API key to create, update, and delete [collections](/docs/products/databases/collections). |
| | `attributes.write` | Allows API key to create, update, and delete [attributes](/docs/products/databases/collections#attributes). |
| | `documents.read` | Allows API key to create, update, and delete [documents](/docs/products/databases/documents). |
| | `documents.write` | Allows API key to read [documents](/docs/products/databases/documents). |
| | `documents.read` | Allows API key to read [documents](/docs/products/databases/documents). |
| | `documents.write` | Allows API key to create, update, and delete [documents](/docs/products/databases/documents). |

Other scopes are optional.

Expand Down
Loading