Skip to content

Commit 9925f2a

Browse files
authored
Merge branch 'main' into update-functions-screenshot
2 parents 0b58685 + e328bf9 commit 9925f2a

File tree

65 files changed

+1799
-67
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+1799
-67
lines changed

STYLE.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -144,21 +144,21 @@ the tone and voice remains consistent.
144144
- All titles, headings, buttons, and labels should be written in **sentence case**. If you're not sure what sentence case should look like, check [APA's style guide](https://apastyle.apa.org/style-grammar-guidelines/capitalization/sentence-case) or check with ChatGPT and other LLMs which reliably converts titles to sentence case.
145145
- All headings in a docs page begin with `# Heading` then `## Heading` and `### Heading`. Internally, they're converted to H2 to H4 tags.
146146
- All headings should have an ID label, for example `# Cool heading {% #cool-heading %}` the `#cool-heading` ID will be used to generate the table of contents and add links to the heading.
147-
- Prefer verbs over gerunds, for example, say "Create documents" not "Creating documents".
147+
- Prefer verbs to gerunds, for example, say "Create documents" not "Creating documents".
148148

149149
### Extended Markdoc components
150150

151-
Appwrite's documentation uses extended markdown syntax. You can find all of the available partials types in the [CONTENT.md file](./CONTENT.md).
151+
Appwrite's documentation uses extended Markdown syntax. You can find all the available partials types in the [CONTENT.md file](./CONTENT.md).
152152

153153
### Screenshots
154154

155155
- When contributing upload original screenshots. The Appwrite design team will edit the screenshot to be consistent with other screenshots in the docs.
156156
- Screenshots must be 16:9
157-
- Screnshots should be taken in a 1400 x 900 view port on 3x DPR in browser developer tools.
157+
- Screenshots should be taken in a 1400 x 900 view port on 3x DPR in browser developer tools.
158158
- Use generic and sensible organization, project, and resource names. Avoid names like `test`, `demo`, or `sdlkfj`.
159-
- All screenshot should be take from a user named Walter O'Brien. You can change the name of your current user by going to your Appwrite Console and clicking the **top right profile icon** > **Your Account** > **Name**.
159+
- All screenshot should be taken from a user named Walter O'Brien. You can change the name of your current user by going to your Appwrite Console and clicking the **top right profile icon** > **Your Account** > **Name**.
160160
- Screenshots are stored in the `/images/docs/` folder, in a parent folder that is consistent with the path of the docs that reference the image.
161-
- All screenshots must be both dark and light mode, with `/path/` holding the lightmode version and `/path/dark/` holding the dark mode version.
161+
- All screenshots must be both dark and light mode, with `/path/` holding the light-mode version and `/path/dark/` holding the dark mode version.
162162
- Screenshots should be uploaded as un-edited original. Request help from the Appwrite design team to help you edit and refine your photos according to our guidelines.
163163

164164
```md

src/lib/constants.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ export type SearchableCategory = {
6666
};
6767

6868
export const integrationCategoryDescriptions: SearchableCategory[] = [
69+
{
70+
slug: 'mcp',
71+
heading: 'MCP',
72+
description: 'Platforms with Model Context Protocol support'
73+
},
6974
{
7075
slug: 'ai',
7176
heading: 'AI',

src/lib/layouts/Docs.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@
131131
</div>
132132
</section>
133133
<header
134-
class="web-main-header {isReferences ? 'is-reference' : 'is-docs'}"
134+
class="web-main-header hidden lg:block {isReferences ? 'is-reference' : 'is-docs'}"
135135
class:is-transparent={variant !== 'expanded'}
136136
>
137137
<div class="web-main-header-wrapper">

src/lib/layouts/Main.svelte

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,9 @@
196196
</div>
197197
</section>
198198

199-
<header class="web-main-header is-special-padding {resolvedTheme} is-transparent">
199+
<header
200+
class="web-main-header is-special-padding hidden lg:block {resolvedTheme} is-transparent"
201+
>
200202
<div
201203
class="web-main-header-wrapper"
202204
class:is-special-padding={BANNER_KEY.startsWith('init-banner-')}

src/markdoc/nodes/Image.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
{/if}
4343
{:else}
4444
<div class="web-media main">
45-
<img {src} {alt} {title} loading="lazy" class="aspect-video w-full" />
45+
<img {src} {alt} {title} loading="lazy" class="aspect-video w-full object-cover" />
4646
<div class="abs">
4747
<Tooltip closeOnPointerDown>
4848
<Button variant="secondary" class="cursor-pointer" action={trigger}>

src/markdoc/tags/TabsItem.svelte

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@
1111
context.triggers.push({ id, title });
1212
return context;
1313
});
14+
15+
return () => {
16+
ctx.update((context) => {
17+
context.triggers = context.triggers.filter((trigger) => trigger.id !== id);
18+
return context;
19+
});
20+
};
1421
});
1522
</script>
1623

src/routes/(marketing)/(components)/scale.svelte

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,24 @@
2525
children,
2626
stats = [
2727
{
28-
number: 12,
29-
suffix: '+',
30-
description: 'Regions served'
28+
number: 50,
29+
suffix: 'K+',
30+
description: 'GitHub stars'
3131
},
3232
{
33-
number: 1000,
34-
suffix: '+ TB',
35-
description: 'of data served'
33+
number: 300,
34+
suffix: '+',
35+
description: 'PoP locations'
3636
},
3737
{
38-
number: 50,
39-
suffix: 'B',
40-
description: 'requests'
38+
number: 300,
39+
suffix: 'K+',
40+
description: 'developers'
4141
},
4242
{
43-
number: 300,
44-
suffix: 'K',
45-
description: 'projects'
43+
number: 200,
44+
suffix: 'B+',
45+
description: 'monthly database operations'
4646
}
4747
]
4848
}: Props = $props();

src/routes/(marketing)/+page.svelte

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -43,28 +43,6 @@
4343
company: 'K-Collect',
4444
image: '/images/testimonials/ryan-oconner-testimonial.png'
4545
}}
46-
stats={[
47-
{
48-
number: 50,
49-
suffix: 'K+',
50-
description: 'GitHub stars'
51-
},
52-
{
53-
number: 300,
54-
suffix: '+',
55-
description: 'PoP locations'
56-
},
57-
{
58-
number: 300,
59-
suffix: 'K+',
60-
description: 'developers'
61-
},
62-
{
63-
number: 200,
64-
suffix: 'B+',
65-
description: 'monthly database operations'
66-
}
67-
]}
6846
>
6947
The switch to using Appwrite brought
7048
<span class="text-primary">infinite value that I'm still discovering today.</span>

src/routes/blog/post/announcing-appwrite-sites/+page.markdoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ Spin up your first site from the Console or [CLI](/docs/tooling/command-line/sit
9393

9494
# More resources
9595

96-
- [Appwrite Sites docs](/docs/producst/sites)
96+
- [Appwrite Sites docs](/docs/products/sites)
9797
- [Appwrite compared to Vercel](/blog/post/open-source-vercel-alternative)
9898
- [Appwrite Sites product tour](https://youtu.be/VtDe6hDw91k)
9999
- [Appwrite Sites video announcement](https://youtu.be/0cERQxFjTW4)
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
layout: post
3+
title: "Announcing: Document imports from CSV files"
4+
description: Learn how to import documents into your Appwrite collections using a simple CSV file, a new feature built on top of Appwrite's migration APIs.
5+
date: 2025-07-01
6+
# update this cover later, once available!
7+
cover: /images/blog/announcing-csv-imports/cover.png
8+
timeToRead: 5
9+
author: darshan-pandya
10+
category: announcement
11+
featured: false
12+
---
13+
14+
We're introducing a new way to populate your Appwrite databases: **document imports from CSV files**.
15+
16+
Built on top of Appwrite's migration APIs, this feature makes it easy to bring in large datasets, seed collections, or migrate structured data using only a CSV file.
17+
18+
The CSV document import is useful for migrating user data from external systems, importing inventory records, seeding test environments, or onboarding structured content such as FAQs.
19+
20+
# How it works
21+
22+
To get started, create a collection and define its attributes in the Appwrite Console. Your CSV file should follow a standard format:
23+
24+
- The first row must be a header containing attribute names that match your collection
25+
- Each subsequent row represents a document, with values separated by commas
26+
27+
{% info title="Good to know" %}
28+
You can optionally include the `$id` column to assign custom document IDs.
29+
{% /info %}
30+
31+
![Collections screen](/images/blog/announcing-csv-imports/csv-import.png)
32+
33+
All required attributes must be present in the CSV, and Appwrite will validate each row before importing it.
34+
35+
For example, if your collection contains attributes like `title`, `author`, `year`, and `available`, a valid CSV file would look like this:
36+
37+
```text
38+
$id,title,author,year,available
39+
f3k91x8b2q,Harry Potter and the Sorcerer's Stone,J.K. Rowling,1997,true
40+
mz7lq3dp5c,The Fellowship of the Ring,J.R.R. Tolkien,1954,true
41+
x0v4p8ncq2,To Kill a Mockingbird,Harper Lee,1960,false
42+
kq9nmv13ru,The Great Gatsby,F. Scott Fitzgerald,1925,true
43+
p8lw39xsd1,Catch-22,Joseph Heller,1961,true
44+
v42cj0quxp,Pride and Prejudice,Jane Austen,1813,true
45+
```
46+
47+
## Uploading your CSV file
48+
49+
You can upload a new file during import or select an existing one from your project's storage bucket.
50+
The Console provides a guided interface to help you select the CSV and link it to your target collection. Once uploaded, the import process begins immediately.
51+
52+
## Designed for scale
53+
54+
CSV imports are built to scale seamlessly with your data. Whether you're working with a small dataset or importing production-grade records, the system is designed to handle high volumes reliably and efficiently.
55+
56+
The import system performs per-row validation and runs as a background task, allowing it to handle large files efficiently. This ensures reliable performance across a range of scenarios—from lightweight configuration data to large-scale production imports.
57+
58+
## Availability and resources
59+
60+
CSV imports are now available on **Appwrite Cloud** and in the latest self-hosted release.
61+
62+
To learn more, check out the [official documentation](/docs/products/databases/csv-imports).
63+
If you have any questions or feedback, we'd love to hear from you in the [Appwrite Discord community](https://discord.gg/appwrite).
64+
65+
# Further reading
66+
67+
- [Introducing Database Backups](https://appwrite.io/blog/post/introducing-database-backups?doFollow=true)
68+
- [Best database pagination technique](https://appwrite.io/blog/post/best-pagination-technique?doFollow=true)
69+
- [How to plan and execute database migration successfully with the new Appwrite CLI](https://appwrite.io/blog/post/how-to-execute-database-migration-with-appwrite-cli?doFollow=true)

0 commit comments

Comments
 (0)