Skip to content

Commit 312ee3a

Browse files
committed
chore: Merge with latest main
1 parent ee4ccaf commit 312ee3a

File tree

13 files changed

+78
-66
lines changed

13 files changed

+78
-66
lines changed

app/components/FooterMain.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const { data: products } = await useAsyncData(() => queryCollection('products').
33
</script>
44

55
<template>
6-
<div class="bg-[#251938] pb-32">
6+
<div class="bg-[#251938]">
77
<div class="flex items-center justify-center py-8">
88
<Logo />
99
</div>

app/components/Hero/HeroProduct.vue

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,14 @@ defineProps<{
2222
{{ product.longDescription }}
2323
</Text>
2424

25-
<NuxtLink :to="`${product.link}/docs`" class="btn btn-xl bg-primary-content text-neutral hover:bg-primary-content/80">
26-
Get Started
27-
</NuxtLink>
25+
<div class="flex gap-4">
26+
<NuxtLink v-if="product.link" :to="product.link" class="btn btn-lg bg-primary-content text-neutral hover:bg-primary-content/80">
27+
Get Started
28+
</NuxtLink>
29+
<NuxtLink v-if="product.meta.docLink" :to="product.meta.docLink" class="btn btn-lg bg-neutral">
30+
Documentation
31+
</NuxtLink>
32+
</div>
2833
</Flex>
2934

3035
<Flex class="relative flex-1">

app/components/content/ProseCode.vue

Lines changed: 0 additions & 3 deletions
This file was deleted.

app/pages/auth/index.vue

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,13 @@ useSeoMeta({
7474
</Titles>
7575
<Flex row items-center class="mb-12 gap-6">
7676
<img
77-
src="https://imagedelivery.net/9JPgw8SmnowT-UlbCrbUxw/30aef796-4df0-421c-a129-053a06d6f400/publichd"
78-
alt="Customize your Login page theme"
79-
class="rounded-xl border-12 border-solid border-white/10 shadow-xl mt-8"
77+
src="https://imagedelivery.net/9JPgw8SmnowT-UlbCrbUxw/6db9ed55-a009-428b-aa38-8bf7697bac00/public"
78+
alt="A login page"
79+
/>
80+
<img
81+
src="https://imagedelivery.net/9JPgw8SmnowT-UlbCrbUxw/1a3bae7c-1a14-4f62-575f-de527fad4e00/public"
82+
alt="The theme editor"
83+
class="rounded-xl"
8084
/>
8185
</Flex>
8286

@@ -86,7 +90,7 @@ useSeoMeta({
8690
class="mt-36 mb-6"
8791
/>
8892
<Flex row items-center class="mb-12 gap-6">
89-
<img src="https://imagedelivery.net/9JPgw8SmnowT-UlbCrbUxw/71ddf09c-4fad-4f64-edb4-1de12e610c00/publichd"
93+
<img src="https://imagedelivery.net/9JPgw8SmnowT-UlbCrbUxw/6e3999af-7414-4352-4453-5bd8f5d78100/public"
9094
alt="Feathers Dashboard" class="rounded-xl border-12 border-solid border-white/10 shadow-xl mt-8">
9195
</Flex>
9296

content.config.schema.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export const productSchema = z.object({
1414
meta: z.object({
1515
iconImage: z.optional(z.string()),
1616
birdImage: z.string(),
17+
docLink: z.optional(z.string()),
1718
planetImage: z.string(),
1819
menuDescription: z.string()
1920
})

content/auth/docs/data/index.md

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,49 @@
1-
# Data sync
1+
# Automerge
2+
3+
[Automerge](https://automerge.org) is a conflict-free replicated data type (CRDT) that is used to synchronize data between devices. Each feathers.dev application has an Automerge document that is can be used to store data that is synchronize in real-time between users. The `@feathersdev/automerge` package contains the Automerge integration for feathers.dev applications.
4+
5+
## Usage
6+
7+
```ts
8+
import { createAutomerge, DocHandle } from '@feathersdev/automerge'
9+
import { auth } from './auth.js'
10+
11+
/**
12+
* The Feathers Automerge client. Use it to retrieve the document
13+
* for your application with `automerge.find()`.
14+
*/
15+
export const automerge = createAutomerge(auth)
16+
17+
/**
18+
* Add types for any data you want to store for your application
19+
*/
20+
export interface AppData {
21+
counter: number
22+
}
23+
24+
/**
25+
* The document handle type for the application
26+
*/
27+
export type AppDocumentHandle = DocHandle<AppData>
28+
29+
/**
30+
* Load the document for the application
31+
*/
32+
export async function loadAppDocument(): Promise<AppDocumentHandle> {
33+
return automerge.find<AppData>()
34+
}
35+
```
36+
37+
## Package managers
38+
39+
Automerge is a Webassembly module and the package manager needs to be configured to handle it. Here is an example for Vite:
40+
41+
```ts
42+
import { defineConfig } from 'vite'
43+
import wasm from 'vite-plugin-wasm'
44+
45+
// https://vitejs.dev/config/
46+
export default defineConfig({
47+
plugins: [wasm()],
48+
})
49+
```

content/auth/docs/index.md

Lines changed: 7 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -5,50 +5,18 @@ outline: deep
55

66
# Feathers Auth
77

8-
Feathers Auth adds secure and scalable user authentication to any web application. It works with any frontend framework and with NodeJS, Cloudflare Workers, Deno or Bun and even on websites with no server at all.
9-
10-
## How it works
11-
12-
While Feathers Auth looks similar to traditional identity providers by letting users log in through a login page, it works a little different under the hood. Instead of oAuth flows and shared secrets, it uses cryptographic keys that are securely stored on each device and links them to a user identity.
13-
14-
The only thing needed to verify a user identity is the public application identifier. It is self contained and requires no backend, secrets or additional server requests. It even works offline.
8+
Feathers Auth adds secure and scalable user authentication to any web application. It works with any frontend framework and with NodeJS, Cloudflare Workers, Deno or Bun and even on websites with no backend at all. It also comes with an offline-first data synchronization features that lets you create real-time web applications without a server.
159

1610
## Setting up
1711

18-
Go to [app.feathers.dev](https://app.feathers.dev) and sign up for an account. Create an organization and an application. Then, on your new application page, click the link for the web framework or server platform you want to integrate.
19-
20-
### Example
21-
22-
To create a fully working example application with a React, Vue or Svelte frontend and any of the supported backend platforms run:
12+
To get started, go to [app.feathers.dev](https://app.feathers.dev) and sign up for an account. Create an organization and an application. Then, on your new application page, click the link for the web framework or server platform you want to integrate. You can also edit the theme of your login page to match your brand.
2313

24-
```sh
25-
npx @featherscloud/cli example
26-
```
14+
Here is the login page for our offline-first chat application:
2715

28-
### Integration
16+
<img src="/img/feathers-chat-login.png" alt="Feathers Chat login" width="60%" />
2917

30-
To integrate Cloud auth into an existing application run
31-
32-
```sh
33-
npx @featherscloud/cli integrate
34-
```
35-
36-
### Without the CLI
37-
38-
If you don't like using the CLI tool, you can also sign up at [app.feathers.dev](https://app.feathers.dev), create an organization and application and then use the code examples in this documentation.
39-
40-
## What's next?
41-
42-
Feathers Auth comes in two parts:
18+
## How it works
4319

44-
1. The client that is integrated into your web application and is used to manage user identities, login page redirects and getting a valid access token to make requests to the backend. General integration details for any framework can be found on the [client page](./client/index.md) and there are also examples how this integration can be used with
45-
- [React](./client/react.md)
46-
- [VueJS](./client/vue.md)
47-
- [Svelte](./client/svelte.md)
48-
2. The backend platform integration that verifies the access token in requests from the web application. General information can be found in the [platforms page](./platforms/index.md) and a complete example for each platform at
49-
- [NodeJS](./platforms/nodejs.md)
50-
- [Deno](./platforms/deno.md)
51-
- [Bun](./platforms/bun.md)
52-
- [Cloudflare Workers](./platforms/cloudflare.md)
20+
While Feathers Auth looks similar to traditional identity providers by letting users log in through a login page, it works a little different under the hood. Instead of oAuth flows and shared secrets, it uses cryptographic keys that are securely stored on each device and links them to a user identity.
5321

54-
Also have a look at the [pricing page](./pricing.md) and [API documentation](./api.md).
22+
The only thing needed to verify a user identity is the public application identifier. It is self contained and requires no backend, secrets or additional server requests. It even works offline.

content/auth/docs/pricing.md

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
<script setup lang="ts">
2-
import CTAButton from '../components/CTAButton.vue'
3-
import Pricing from '../components/Pricing.vue'
4-
</script>
5-
61
# Pricing
72

83
Cloud Auth is billed on a tokens-per-month basis. A token is normally issued per user and valid for the next day.

content/auth/docs/server/bun.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
The [Bun JavaScript runtime](https://bun.sh/) can run a web standard HTTP server with Cloud Auth like this.
44

55
```sh
6-
npm create feathersdev@latest server --platform bun --app-id "<your-app-id>"
6+
npm create feathersdev@latest server -- --platform bun --app-id "<your-app-id>"
77
```
88

99
## Verifier

content/menus/docs-auth.json

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,6 @@
1010
"title": "Setting up",
1111
"path": "/auth/docs/"
1212
},
13-
{
14-
"title": "Overview",
15-
"path": "/auth/docs/guide"
16-
},
1713
{
1814
"title": "React",
1915
"path": "/auth/docs/guide/react"
@@ -38,7 +34,7 @@
3834
"iconClasses": "text-neutral-content text-lg",
3935
"children": [
4036
{
41-
"title": "Overview",
37+
"title": "Automerge",
4238
"path": "/auth/docs/data"
4339
}
4440
]
@@ -48,10 +44,6 @@
4844
"icon": "lucide:server",
4945
"iconClasses": "text-secondary text-lg",
5046
"children": [
51-
{
52-
"title": "Overview",
53-
"path": "/auth/docs/server"
54-
},
5547
{
5648
"title": "Node.js",
5749
"path": "/auth/docs/server/nodejs"

0 commit comments

Comments
 (0)