diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml
new file mode 100644
index 000000000..6926b0c50
--- /dev/null
+++ b/.github/workflows/copilot-setup-steps.yml
@@ -0,0 +1,28 @@
+name: Copilot Setup Steps
+
+# Automatically run the setup steps when they are changed to allow for easy validation, and
+# allow manual testing through the repository's "Actions" tab
+on:
+ workflow_dispatch:
+ push:
+ paths:
+ - .github/workflows/copilot-setup-steps.yml
+ pull_request:
+ paths:
+ - .github/workflows/copilot-setup-steps.yml
+
+jobs:
+ copilot-setup-steps:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ steps:
+ - uses: actions/checkout@v5
+ - name: Use Node.js
+ uses: actions/setup-node@v6
+ with:
+ node-version: 20
+ - name: Install pnpm
+ uses: pnpm/action-setup@v4
+ - name: Install dependencies
+ run: pnpm install --frozen-lockfile
diff --git a/src/lib/components/apiEndpoint.svelte b/src/lib/components/apiEndpoint.svelte
new file mode 100644
index 000000000..33e70341d
--- /dev/null
+++ b/src/lib/components/apiEndpoint.svelte
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+ API endpoint
+
+
+
diff --git a/src/lib/components/copy.svelte b/src/lib/components/copy.svelte
index c178913c7..d9a619e01 100644
--- a/src/lib/components/copy.svelte
+++ b/src/lib/components/copy.svelte
@@ -57,6 +57,7 @@
disabled={tooltipDisabled}
portal={tooltipPortal}
delay={tooltipDelay}
+ maxWidth="500px"
placement={tooltipPlacement}>
{#key value}
-
+
import { Copy } from '.';
import { sdk } from '$lib/stores/sdk';
- import { Layout, Tag } from '@appwrite.io/pink-svelte';
+ import { Icon, Tag } from '@appwrite.io/pink-svelte';
+ import { IconDuplicate } from '@appwrite.io/pink-icons-svelte';
import { Flag, type Models } from '@appwrite.io/console';
- import { truncateText } from '$lib/components/id.svelte';
import { isValueOfStringEnum } from '$lib/helpers/types';
import { getProjectEndpoint } from '$lib/helpers/project';
@@ -21,28 +21,28 @@
{#if region}
-
-
-
- {#if flagSrc}
-
- {/if}
-
-
- {region?.name}
-
-
+
+
+
+ API endpoint
+ {#if flagSrc}
+
+ {/if}
{/if}
+
+
diff --git a/src/routes/(console)/project-[region]-[project]/overview/(components)/create.svelte b/src/routes/(console)/project-[region]-[project]/overview/(components)/create.svelte
index 0df14759c..84e6a7809 100644
--- a/src/routes/(console)/project-[region]-[project]/overview/(components)/create.svelte
+++ b/src/routes/(console)/project-[region]-[project]/overview/(components)/create.svelte
@@ -15,6 +15,7 @@
import { writable } from 'svelte/store';
import Scopes from '../api-keys/scopes.svelte';
import { page } from '$app/state';
+ import { copy } from '$lib/helpers/copy';
const projectId = page.params.project;
@@ -28,7 +29,7 @@
async function create() {
try {
- const { $id } = await sdk.forConsole.projects.createKey({
+ const { $id, secret } = await sdk.forConsole.projects.createKey({
projectId,
name,
scopes,
@@ -45,7 +46,21 @@
);
addNotification({
message: `API key has been created`,
- type: 'success'
+ type: 'success',
+ buttons: [
+ {
+ name: 'Copy API key',
+ method: async () => {
+ await copy(secret);
+ }
+ },
+ {
+ name: 'Copy endpoint',
+ method: async () => {
+ await copy(sdk.forConsole.client.config.endpoint);
+ }
+ }
+ ]
});
} catch (error) {
addNotification({
diff --git a/src/routes/(console)/project-[region]-[project]/overview/api-keys/[key]/header.svelte b/src/routes/(console)/project-[region]-[project]/overview/api-keys/[key]/header.svelte
index 0b4b527d6..984700097 100644
--- a/src/routes/(console)/project-[region]-[project]/overview/api-keys/[key]/header.svelte
+++ b/src/routes/(console)/project-[region]-[project]/overview/api-keys/[key]/header.svelte
@@ -3,6 +3,10 @@
import { page } from '$app/state';
import { Cover, CoverTitle } from '$lib/layout';
import { key } from './store';
+ import { RegionEndpoint, Copy } from '$lib/components';
+ import { Layout, Tag, Icon } from '@appwrite.io/pink-svelte';
+ import { IconDuplicate } from '@appwrite.io/pink-icons-svelte';
+ import { projectRegion } from '../../../store';
const projectId = page.params.project;
@@ -12,5 +16,26 @@
{$key?.name}
+
+ {#if $key?.secret}
+
+
+
+ API secret
+
+
+ {/if}
+ {#if $projectRegion}
+
+ {/if}
+
+
+
diff --git a/src/routes/(console)/project-[region]-[project]/overview/assets/platform-sdk-dark.png b/src/routes/(console)/project-[region]-[project]/overview/assets/platform-sdk-dark.png
new file mode 100644
index 000000000..e778c55b9
Binary files /dev/null and b/src/routes/(console)/project-[region]-[project]/overview/assets/platform-sdk-dark.png differ
diff --git a/src/routes/(console)/project-[region]-[project]/overview/assets/platform-sdk.jpg b/src/routes/(console)/project-[region]-[project]/overview/assets/platform-sdk.jpg
new file mode 100644
index 000000000..b891d6a12
Binary files /dev/null and b/src/routes/(console)/project-[region]-[project]/overview/assets/platform-sdk.jpg differ
diff --git a/src/routes/(console)/project-[region]-[project]/overview/header.svelte b/src/routes/(console)/project-[region]-[project]/overview/header.svelte
index 8a412281c..ff2107397 100644
--- a/src/routes/(console)/project-[region]-[project]/overview/header.svelte
+++ b/src/routes/(console)/project-[region]-[project]/overview/header.svelte
@@ -2,19 +2,24 @@
import { page } from '$app/state';
import { Id, RegionEndpoint } from '$lib/components';
import { Cover } from '$lib/layout';
- import { project, projectRegion } from '../store';
+ import { projectRegion } from '../store';
import { hasOnboardingDismissed, setHasOnboardingDismissed } from '$lib/helpers/onboarding';
import { goto } from '$app/navigation';
- import { base } from '$app/paths';
+ import { resolve } from '$app/paths';
import { Layout, Button, Typography } from '@appwrite.io/pink-svelte';
import { user } from '$lib/stores/user';
import { isSmallViewport } from '$lib/stores/viewport';
import { trackEvent } from '$lib/actions/analytics';
function dismissOnboarding() {
- setHasOnboardingDismissed($project.$id, $user);
+ setHasOnboardingDismissed(page.params.project, $user);
trackEvent('onboarding_hub_platform_dismiss');
- goto(`${base}/project-${$project.region}-${$project.$id}/overview/platforms`);
+ goto(
+ resolve('/(console)/project-[region]-[project]/overview/platforms', {
+ region: page.params.region,
+ project: page.params.project
+ })
+ );
}
@@ -24,12 +29,15 @@
- {$project?.name}
+ {page.data.project?.name}
- {$project.$id}
-
+ {page.params.project}
+ {#if $projectRegion}
+
+ {/if}
@@ -53,7 +61,7 @@
>Follow a few quick steps to get started with Appwrite
-
+
{
openPlatformWizard(0, platformMap.get('Web'));
@@ -341,17 +339,34 @@
-
- Or connect
- server side
-
-
+ or
+
+
+
+
+
+
+ Create API key
+ Connect your server or backend to Appwrite
+
+
+
+
+
+
+
+