Skip to content

Commit 785bac2

Browse files
authored
Merge branch 'main' into docs-react-native
2 parents 0b4fa21 + c866300 commit 785bac2

File tree

23 files changed

+293
-13
lines changed

23 files changed

+293
-13
lines changed

src/lib/components/FooterNav.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,15 @@
3838
{ label: 'Messaging', href: '/products/messaging' },
3939
{ label: 'Storage', href: '/products/storage' },
4040
{ label: 'Realtime', href: '/docs/apis/realtime' },
41-
{ label: 'The Appwrite Network', href: '/docs/products/network' }
41+
{ label: 'Network', href: '/docs/products/network' }
4242
],
4343
Learn: [
44+
{ label: 'Blog', href: '/blog' },
4445
{ label: 'Docs', href: '/docs' },
4546
{ label: 'Integrations', href: '/integrations' },
4647
{ label: 'Community', href: '/community' },
4748
{ label: 'Init', href: '/init' },
4849
{ label: 'Threads', href: '/threads' },
49-
{ label: 'Blog', href: '/blog' },
5050
{ label: 'Changelog', href: '/changelog' },
5151
{
5252
label: 'Roadmap',
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
layout: author
3+
name: Emma Carpagnano
4+
slug: emma
5+
role: People Operations
6+
bio: Helping people succeed at Appwrite
7+
avatar: /images/avatars/emma.jpg
8+
github: https://github.com/emmacarpagnano1
9+
linkedin: https://www.linkedin.com/in/emmacarpagnano/
10+
---
11+
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
layout: post
3+
title: So you want to apply to Appwrite? Here’s what you need to know
4+
description: How you can showcase your skills and personality to stand out from the crowd in Appwrite's hiring process.
5+
date: 2025-04-28
6+
cover: /images/blog/apply-appwrite-how/cover.png
7+
timeToRead: 5
8+
author: emma
9+
category: culture
10+
featured: false
11+
callToAction: true
12+
---
13+
14+
At Appwrite, we’re building more than open-source backend tools, we’re building a people-first, innovation-driven company that thrives on collaboration, creativity, and community. Every job application we receive is a potential new chapter in our story, and we want to give you the best chance of joining the team.
15+
16+
We get it: applying for jobs is tough. Whether you're shooting your shot at one company or juggling ten applications at once, we appreciate your time and effort. That said, we want to help you stand out, for the right reasons.
17+
18+
Here are some pointers to keep in mind when applying to Appwrite.
19+
20+
# Show us your work
21+
22+
Include everything relevant to the role: GitHub repos, websites, portfolios, articles, whatever shows your skill, creativity, and experience. We’re not just hiring based on a resume; we want to see what you’ve built or contributed to.
23+
24+
# Use AI (but make it *you*)
25+
26+
We believe AI is an incredible tool, and yes, it’s fine to use it to help structure your application. But AI is only a tool. It should *start* with you and *end* with you. Copy-pasting a ChatGPT answer doesn’t show us your voice, and trust us, it’s easy to spot. Innovation and originality matter here. Think of AI as your co-pilot, not your ghostwriter.
27+
28+
# Put effort into the application form
29+
30+
We know application forms can feel tedious. But at Appwrite, we *don't* ask filler questions. Every single one has been crafted with purpose. We're not trying to trip you up or test your ability to write a five-paragraph essay, instead, we're giving you space to tell us who you are, how you think, and why this role excites you. Think of the application form as your first collaboration with Appwrite. It’s a chance to show us how you show up, and if that aligns with the way we build together.
31+
32+
# Do your research
33+
34+
Learn about Appwrite’s [open-source philosophy](https://github.com/appwrite), check out our [documentation](/docs), and explore our [community](/discord). This isn't about name-dropping features, it’s about showing you care enough to understand what we’re building and how you can be a part of it.
35+
36+
# Align with our values
37+
38+
We are people-first. We care deeply about our community, our team, and our impact. Innovation isn't just about cool tech, it’s about challenging norms, asking better questions, and supporting each other along the way. If you connect with that, let us know. We're listening.
39+
40+
# Be yourself
41+
42+
Whether you're a career-switcher, self-taught, or traditionally trained, we value diverse paths. Tell us what makes you *you*. There’s no one-size-fits-all here, we’re looking for talent, heart, and hunger to grow.
43+
44+
# Before you hit submit
45+
46+
We're grateful for the interest we receive with every job opening and we take each application seriously. Behind every application is a person, and behind Appwrite is a team of people committed to building something impactful, together.
47+
48+
We work hard, support one another, and stay focused on delivering real value. We don't just chase trends; we create tools that enable others to build with purpose. That takes dedication, creativity, and people who want to do meaningful work in an environment that respects and challenges them.
49+
50+
When you apply, don’t aim for perfection, aim for authenticity. Be thoughtful. Be curious. Be you.
51+
52+
So if you're ready to bring your ideas, energy, and hard work, [check out our open roles](https://www.appwrite.careers/). We can’t wait to hear from you.

src/routes/contact-us/enterprise/+page.svelte

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,9 @@
217217
>
218218
<input
219219
required
220+
pattern="^(https:\/\/www\.|https:\/\/)?([a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+)[a-zA-Z0-9\-\._~:\/\?#[\]@!\$&'\(\)\*\+,;=.]*$"
220221
class="web-input-text w-full"
221-
type="url"
222+
type="text"
222223
placeholder="https://appwrite.io"
223224
id="companyWebsite"
224225
bind:value={companyWebsite}

src/routes/docs/tutorials/android/step-7/+page.markdoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ fun IdeasScreen(
106106
Column(modifier = Modifier.padding(16.dp)) {
107107
Text(text = idea.data["title"]?.toString() ?: "", fontWeight = FontWeight(700))
108108
Text(text = idea.data["description"]?.toString() ?: "")
109-
if (user?.id === idea.data["userId"])
109+
if (user?.id == idea.data["userId"])
110110
Button(onClick = { onRemove(idea.id) }) {
111111
Text("Remove")
112112
}
@@ -216,4 +216,4 @@ private fun AppContent(accountService: AccountService, ideasService: IdeaService
216216
}
217217
}
218218
}
219-
```
219+
```
Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
---
2+
layout: integration
3+
title: Appwrite Authentication Kit
4+
description: Seamlessly integrate secure user authentication into your FlutterFlow apps—without writing complex code.
5+
date: 2024-03-01
6+
featured: true
7+
isPartner: true
8+
isNew: true
9+
cover: /images/integrations/flutterflow-auth-kit/cover.png
10+
category: auth
11+
product:
12+
avatar: '/images/integrations/avatars/flutterflow.png'
13+
vendor: FlutterFlow
14+
description: 'Appwrite is a secure, open-source backend server for web, mobile, and Flutter developers.'
15+
platform:
16+
- 'Self-hosted'
17+
- 'Cloud'
18+
images:
19+
- /images/integrations/flutterflow-auth-kit/cover.png
20+
- /images/integrations/flutterflow-auth-kit/featured.png
21+
- /images/integrations/flutterflow-auth-kit/auth-login-overview.png
22+
- /images/integrations/flutterflow-auth-kit/login-pointers.png
23+
- /images/integrations/flutterflow-auth-kit/dashboard-pointers.png
24+
---
25+
26+
FlutterFlow is a powerful visual builder that lets you create beautiful Flutter apps without writing much code. It's perfect for both beginners and experienced developers who want to build apps quickly. With its drag-and-drop interface and pre-built components, you can focus on creating great user experiences.
27+
28+
# What you’ll build
29+
30+
As you start creating your FlutterFlow app, you might want to add user accounts for things like social media features or task management. To help you with this, we've made it super easy to implement secure authentication using our official [Authentication library](https://marketplace.flutterflow.io/item/h1gn6StcXy6imjg7Ykr2). This guide will walk you through everything you need to know to get up and running with Appwrite authentication in your FlutterFlow project.
31+
32+
By the end of this guide, you’ll have a fully functional authentication system with:
33+
34+
- Email/password sign-up and login.
35+
- Secure session management.
36+
- User profile handling.
37+
- Error handling with user feedback.
38+
- Protected routes for authenticated users.
39+
40+
Want to see the final result first? Check out our [Appwrite Flutterflow Demo App](https://app.flutterflow.io/project/appwrite-auth-yxmd9b) to experience all these features in action! Then follow along to build your own custom version.
41+
42+
![Welcome screen](/images/integrations/flutterflow-auth-kit/welcomescreen.png)
43+
44+
# Before you start
45+
46+
Here’s what you’ll need to have ready:
47+
- [Appwrite account](https://cloud.appwrite.io/console/register).
48+
- [FlutterFlow account](https://app.flutterflow.io/create-account).
49+
- [FlutterFlow Marketplace account](https://marketplace.flutterflow.io/login) (must use the same email as your FlutterFlow account).
50+
- Basic understanding of FlutterFlow’s interface.
51+
52+
## Step 1: Setting up your Appwrite project
53+
54+
Let’s start by setting up your Appwrite project (you can use a new or an existing one):
55+
56+
1. Head over to the [Appwrite Console](https://cloud.appwrite.io/).
57+
2. Select your project (or create a new one).
58+
3. Under **Add a platform**, add a **Flutter** platform.
59+
4. In the platform setup, choose the platforms you want to support under Flutter App - Web, Android, and/or iOS - and enter the required values as shown below:
60+
61+
62+
| Platform | Required Info |
63+
|----------|----------------|
64+
| Web | Hostnames: `localhost`, `*.web.app`, `*.run.app` (Used for FlutterFlow Web Testing) |
65+
| Android | Package Name (e.g. `com.company.appname`) |
66+
| iOS | Bundle ID (e.g. `com.company.appname`) |
67+
68+
5. Go to **Settings > Overview** to copy the following values:
69+
- **API Endpoint**
70+
- **Project ID**
71+
72+
📌 You’ll need these in the next step to configure the authentication library.
73+
74+
75+
## Step 2: Adding the authentication library
76+
77+
The Authentication library provides essential core functionality:
78+
79+
- Pre-configured Custom Actions for authentication.
80+
- App States for session management.
81+
- Built-in Error Handling.
82+
- User Session Management.
83+
- Custom Data Types for type-safe responses.
84+
85+
### Here’s how to add it to your project:
86+
87+
1. Visit the [FlutterFlow Marketplace](https://marketplace.flutterflow.io/).
88+
2. Search for “Appwrite Authentication Kit” or visit [Appwrite Authentication Kit](https://marketplace.flutterflow.io/item/h1gn6StcXy6imjg7Ykr2).
89+
3. Click “Add” to add it to your marketplace account.
90+
4. In your FlutterFlow project:
91+
92+
- Navigate to `Project Settings > Project Dependencies`.
93+
- Find “Appwrite Authentication Kit” under FlutterFlow Libraries.
94+
- Click “Add Library”.
95+
96+
![Screenshot of login](/images/integrations/flutterflow-auth-kit/screenshot.png)
97+
98+
### Configure the Authentication Library
99+
100+
Once the library is added, you can configure it without writing any code:
101+
102+
1. Navigate to `Settings > Project Dependencies` in your FlutterFlow project.
103+
2. Under the **Appwrite Authentication Kit** entry, click on **View Details**.
104+
3. Update the environment values directly in the panel that opens:
105+
106+
- API Endpoint: `Your Appwrite Project Endpoint`
107+
- Project ID: `Your Appwrite Project ID`
108+
109+
Note: This view opens automatically the first time a user adds the library - making it super easy to update values right away.
110+
111+
112+
## Step 3: Understanding the components
113+
114+
The library sets up two essential app states:
115+
- `appwriteConfig`: Stores configuration details securely.
116+
- `appwriteUser`: Manages user session information.
117+
118+
Both states are automatically configured with:
119+
120+
- String data type.
121+
- Persistence enabled.
122+
- Authentication flow readiness.
123+
124+
### Custom Data Types:
125+
126+
The library provides two custom data types for type-safe responses:
127+
128+
1. `AppwriteUser`: Represents user data.
129+
- Fields: id, email, name, emailVerified, status.
130+
- Used for: Storing and passing user information.
131+
132+
2. `AppwriteUserResponse`: Standard response format.
133+
- Fields: success, error, errorCode, errorType, formattedError, user.
134+
- Used for: Consistent error handling and success responses.
135+
136+
### Authentication actions:
137+
138+
The library provides five essential custom actions:
139+
140+
1. `initialize`
141+
- Purpose: Sets up your Appwrite configuration.
142+
- Returns: `AppwriteUserResponse` with initialization status.
143+
- Must be called before any other authentication action.
144+
145+
2. `signUpWithEmailAndPassword`
146+
- Parameters: email, password.
147+
- Returns: `AppwriteUserResponse` with user data.
148+
- Handles: Account creation and session setup.
149+
150+
3. `signInWithEmail`
151+
- Parameters: email, password.
152+
- Returns: `AppwriteUserResponse` with session data.
153+
- Manages: User login process.
154+
155+
4. `signOut`
156+
- No parameters required.
157+
- Returns: `AppwriteUserResponse` with success status.
158+
- Handles: Complete session cleanup.
159+
160+
5. `getCurrentUser`
161+
- No parameters required.
162+
- Returns: `AppwriteUserResponse` with current user data.
163+
- Perfect for: Authentication state checks.
164+
165+
### Understanding action flows:
166+
167+
Each authentication action follows this consistent pattern:
168+
169+
1. Action execution.
170+
2. Response handling using `AppwriteUserResponse`.
171+
3. Success/failure conditions based on `response.success`.
172+
4. Error handling using `response.formattedError`.
173+
174+
![Flow example](/images/integrations/flutterflow-auth-kit/flow.png)
175+
176+
177+
### Example: Sign Up flow
178+
179+
1. Use the `signUpWithEmailAndPassword` action.
180+
2. Check `signUpResult.success`.
181+
3. Success? → Dashboard.
182+
4. Failure? → Show `signUpResult.formattedError`.
183+
184+
You can use `response.error` for internal logging and `response.formattedError` to display user-friendly messages. Similarly, you can implement flow patterns for other authentication actions (`signInWithEmail`, `signOut`, `getCurrentUser`), following the similar structure of checking results and handling success/failure scenarios appropriately.
185+
186+
## See it in action
187+
188+
Check out our [Appwrite FlutterFlow Demo App](https://app.flutterflow.io/project/appwrite-auth-yxmd9b) to explore the complete auth flow in action - from sign-up to session management.
189+
190+
191+
## Troubleshooting common issues
192+
193+
1. **Library Not Found**
194+
- Verify marketplace account email matches FlutterFlow account.
195+
- Check if library is properly added in Project Dependencies.
196+
197+
2. **Authentication Failures**
198+
- Confirm `initialize` action is called first.
199+
- Verify endpoint and projectId values.
200+
- Check Appwrite console for platform settings.
201+
202+
3. **Session Management Issues**
203+
- Ensure app states are properly configured.
204+
- Verify persistence settings.
205+
206+
This completes our guide on setting up Appwrite authentication in your FlutterFlow app. You now have a solid foundation for managing user accounts and secure sessions.
207+
208+
Now that you have the basics in place, you can enhance your app by implementing more advanced authentication features using Appwrite. If you run into any issues or have questions, the [Appwrite community on Discord](https://appwrite.io/discord) and the [FlutterFlow Community](https://community.flutterflow.io/) are always ready to help. Don't hesitate to reach out!
209+
210+
## More resources
211+
212+
If you would like to learn more about Appwrite and FlutterFlow, we have some resources that you should visit:
213+
214+
- [Appwrite Flutterflow Demo App](https://app.flutterflow.io/project/appwrite-auth-yxmd9b)
215+
- [Appwrite Documentation](https://appwrite.io/docs)
216+
- [FlutterFlow Marketplace](https://marketplace.flutterflow.io/item/h1gn6StcXy6imjg7Ykr2)

src/routes/integrations/stripe-subscriptions/+page.markdoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: integration
33
title: Subscriptions with Stripe
44
description: Integrate Stripe subscriptions with Appwrite to accept and manage recurring payments from your customers.
55
date: 2024-07-30
6-
featured: true
6+
featured: false
77
isPartner: true
88
isNew: false
99
cover: /images/integrations/stripe-subscriptions/cover.png

src/routes/integrations/technology-partner/+page.svelte

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,9 @@
239239
>
240240
<input
241241
required
242+
pattern="^(https:\/\/www\.|https:\/\/)?([a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+)[a-zA-Z0-9\-\._~:\/\?#[\]@!\$&'\(\)\*\+,;=.]*$"
242243
class="web-input-text"
243-
type="url"
244+
type="text"
244245
placeholder="https://appwrite.io"
245246
id="companyWebsite"
246247
bind:value={companyWebsite}

src/routes/pricing/+page.svelte

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -319,11 +319,6 @@
319319
class="text-body text-primary mb-2 flex items-center gap-3 font-medium"
320320
>
321321
Enterprises
322-
<div
323-
class="web-inline-tag is-pink text-caption px-2! py-1! font-normal"
324-
>
325-
Coming soon
326-
</div>
327322
</h6>
328323
<p class="text-body text-secondary font-medium">
329324
Large scale projects seeking greater performance, collaboration and

src/routes/privacy/+page.markdoc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,10 @@ We use log files. We use such information to analyze trends, administer the Webs
411411

412412
- **Sentry** - Sentry is a monitoring software and a performance monitoring software. Sentry helps diagnose, fix, and optimize the performance of the Website. Sentry's ability to use and share information collected by Sentry is regulated by their terms of service, available at [Sentry Terms of Service](https://sentry.io/terms/), and their Privacy Policy available at [Sentry Privacy Policy](https://sentry.io/privacy/).
413413
- **Mixpanel** - Mixpanel is a website that collects information about use of our console. It collects information such as how often users visit this console, what pages they visit when they do so, but not PII. We use the information we get from Mixpanel to maintain and improve the Website and our products. Mixpanel’s ability to use and share information about your visits is restricted by the Terms of Service, available at [Mixpanel Terms of Use](https://mixpanel.com/legal/terms-of-use) and the Mixpanel Privacy Policy, available at [Mixpanel Privacy Policy](https://mixpanel.com/legal/privacy-policy).
414-
- We reserve the right to remove or add new analytic tools.
414+
- **ZoomInfo** - ZoomInfo is a data enrichment tool. We use ZoomInfo to associate domain-level account information with general business metadata (such as company name or industry) to support internal reporting and account management. ZoomInfo's ability to use and share information collected by ZoomInfo is regulated by their license terms and conditions, available at [ZoomInfo License Terms and Conditions](https://www.zoominfo.com/legal/ltc), and their Privacy Policy available at [ZoomInfo Privacy Policy](https://www.zoominfo.com/legal/privacy-policy).
415+
- **Reo.Dev** - Reo.Dev is an event tracking tool used to collect anonymized usage metrics from our self-hosted console environments. This includes information such as login events and general usage patterns. The data helps us maintain system reliability and inform product decisions. Reo.Dev’s ability to use and share information collected by Reo.Dev is regulated by the Terms of Service, available at [Reo.Dev Terms and Conditions](https://www.reo.dev/terms-of-service) and the Reo.Dev Privacy Policy, available at [Reo.Dev Privacy Policy](https://www.reo.dev/privacy-policy).
416+
417+
We reserve the right to remove or add new analytic tools.
415418
{% /count_section %}
416419

417420
{% count_section %}

0 commit comments

Comments
 (0)