Skip to content

Commit 8b91510

Browse files
authored
Merge branch 'main' into docs-hipaa-page
2 parents 2d572cc + 822979a commit 8b91510

File tree

53 files changed

+1670
-18
lines changed

Some content is hidden

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

53 files changed

+1670
-18
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/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)

src/routes/blog/post/csr-ssg-ssr/+page.markdoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ And the great thing is, if you're using platforms like Appwrite Sites and hybrid
139139
So if you’re just starting out, don’t stress about choosing the “perfect” rendering mode. Start with the defaults of your framework, and learn when to override them based on what your app needs.
140140

141141
# More resources
142-
- [Appwrite Sites docs](/docs/producst/sites)
143-
- [Appwrite Sites prodcuts page](/producst/sites)
142+
- [Appwrite Sites docs](/docs/products/sites)
143+
- [Appwrite Sites prodcuts page](/products/sites)
144144
- [How to host SSR web apps on Appwrite Sites](blog/post/host-ssr-web-apps-sites)
145145
- [SSR vs CSR with Next.js](/blog/post/csr-vs-ssr-with-nextjs)
146146
- [Appwrite SSR Authentication](https://www.youtube.com/watch?v=7LN05c-ov_0)

src/routes/blog/post/open-source-netlify-alternative/+page.markdoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ Appwrite Sites is built for teams that want their frontends to do more, and for
211211

212212
# More resources
213213

214-
- [Appwrite Sites docs](/docs/producst/sites)
214+
- [Appwrite Sites docs](/docs/products/sites)
215215
- [Appwrite compared to Vercel](/blog/post/open-source-vercel-alternative)
216216
- [Appwrite Sites product tour](https://youtu.be/VtDe6hDw91k)
217217
- [Appwrite Sites video announcement](https://youtu.be/0cERQxFjTW4)

0 commit comments

Comments
 (0)