From e9ea8e9ee63f7f7f0e00b8b9c49597871759ee17 Mon Sep 17 00:00:00 2001 From: SlaVKsVolks Date: Mon, 11 May 2026 00:12:16 -0300 Subject: [PATCH 1/2] fix: support Veo 3.1 video models --- .../server/src/providers/VertexAIProvider.ts | 2 ++ .../supported-models/video/vertex-ai.test.ts | 24 +++++++++++++++++++ .../src/supported-models/video/vertex-ai.ts | 24 +++++++++++++++---- .../src/app/api/generate-video/validation.ts | 2 ++ .../src/app/api/generate-video/vertex.ts | 3 ++- .../src/components/video-generator.tsx | 4 +++- .../next-video-template/src/lib/types.ts | 2 ++ 7 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 packages/sdk/ts/src/supported-models/video/vertex-ai.test.ts diff --git a/packages/app/server/src/providers/VertexAIProvider.ts b/packages/app/server/src/providers/VertexAIProvider.ts index f7165b341..e36579b98 100644 --- a/packages/app/server/src/providers/VertexAIProvider.ts +++ b/packages/app/server/src/providers/VertexAIProvider.ts @@ -19,6 +19,8 @@ import { env } from '../env'; // Constants export const PROXY_PASSTHROUGH_ONLY_MODEL = 'PROXY_PLACEHOLDER_VERTEX_AI'; const VEO3_MODELS = [ + 'veo-3.1-fast-generate-preview', + 'veo-3.1-generate-preview', 'veo-3.0-fast-generate-preview', 'veo-3.0-generate-preview', ]; diff --git a/packages/sdk/ts/src/supported-models/video/vertex-ai.test.ts b/packages/sdk/ts/src/supported-models/video/vertex-ai.test.ts new file mode 100644 index 000000000..1bcf844b6 --- /dev/null +++ b/packages/sdk/ts/src/supported-models/video/vertex-ai.test.ts @@ -0,0 +1,24 @@ +import { describe, expect, it } from 'vitest'; + +import { VertexAIVideoModels } from './vertex-ai'; + +describe('VertexAIVideoModels', () => { + it('includes Veo 3.1 preview models with pricing metadata', () => { + expect(VertexAIVideoModels).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + cost_per_second_with_audio: 0.15, + cost_per_second_without_audio: 0.1, + model_id: 'veo-3.1-fast-generate-preview', + provider: 'VertexAI', + }), + expect.objectContaining({ + cost_per_second_with_audio: 0.4, + cost_per_second_without_audio: 0.2, + model_id: 'veo-3.1-generate-preview', + provider: 'VertexAI', + }), + ]), + ); + }); +}); diff --git a/packages/sdk/ts/src/supported-models/video/vertex-ai.ts b/packages/sdk/ts/src/supported-models/video/vertex-ai.ts index 82a9d6191..8186bce04 100644 --- a/packages/sdk/ts/src/supported-models/video/vertex-ai.ts +++ b/packages/sdk/ts/src/supported-models/video/vertex-ai.ts @@ -1,26 +1,40 @@ import type { SupportedVideoModel } from '../types'; export type VertexAIVideoModel = + | 'veo-3.1-fast-generate-preview' + | 'veo-3.1-generate-preview' | 'veo-3.0-fast-generate-preview' | 'veo-3.0-generate-preview'; /** * Vertex AI video models with official pricing information * Based on: https://cloud.google.com/vertex-ai/generative-ai/pricing * - * Veo 3: $0.40/second with audio, $0.20/second video only - * Veo 3 Fast: $0.15/second with audio, $0.10/second video only + * Veo 3 / 3.1: $0.40/second with audio, $0.20/second video only + * Veo 3 / 3.1 Fast: $0.15/second with audio, $0.10/second video only */ export const VertexAIVideoModels: SupportedVideoModel[] = [ + { + model_id: 'veo-3.1-fast-generate-preview', + cost_per_second_with_audio: 0.15, + cost_per_second_without_audio: 0.1, + provider: 'VertexAI', + }, + { + model_id: 'veo-3.1-generate-preview', + cost_per_second_with_audio: 0.4, + cost_per_second_without_audio: 0.2, + provider: 'VertexAI', + }, { model_id: 'veo-3.0-fast-generate-preview', cost_per_second_with_audio: 0.15, - cost_per_second_without_audio: 0.1, // Fixed: was 0.1, now 0.10 for clarity + cost_per_second_without_audio: 0.1, provider: 'VertexAI', }, { model_id: 'veo-3.0-generate-preview', - cost_per_second_with_audio: 0.4, // Fixed: was 0.4, now 0.40 for clarity - cost_per_second_without_audio: 0.2, // Fixed: was 0.2, now 0.20 for clarity + cost_per_second_with_audio: 0.4, + cost_per_second_without_audio: 0.2, provider: 'VertexAI', }, ]; diff --git a/templates/next-video-template/src/app/api/generate-video/validation.ts b/templates/next-video-template/src/app/api/generate-video/validation.ts index 669dfd410..16639b8d6 100644 --- a/templates/next-video-template/src/app/api/generate-video/validation.ts +++ b/templates/next-video-template/src/app/api/generate-video/validation.ts @@ -35,6 +35,8 @@ export function validateGenerateVideoRequest(body: unknown): ValidationResult { } const validModels: VideoModelOption[] = [ + 'veo-3.1-fast-generate-preview', + 'veo-3.1-generate-preview', 'veo-3.0-fast-generate-preview', 'veo-3.0-generate-preview', ]; diff --git a/templates/next-video-template/src/app/api/generate-video/vertex.ts b/templates/next-video-template/src/app/api/generate-video/vertex.ts index 66d1d4e8d..5d102de2c 100644 --- a/templates/next-video-template/src/app/api/generate-video/vertex.ts +++ b/templates/next-video-template/src/app/api/generate-video/vertex.ts @@ -4,6 +4,7 @@ import { getEchoToken } from '@/echo'; import { ERROR_MESSAGES } from '@/lib/constants'; +import type { VideoModelOption } from '@/lib/types'; import { GenerateVideosOperation, GenerateVideosParameters, @@ -14,7 +15,7 @@ import { */ export async function handleGeminiGenerate( prompt: string, - model: 'veo-3.0-fast-generate-preview' | 'veo-3.0-generate-preview', + model: VideoModelOption, durationSeconds: number = 4, generateAudio: boolean = false, image?: string, // Base64 encoded image or data URL (first frame) diff --git a/templates/next-video-template/src/components/video-generator.tsx b/templates/next-video-template/src/components/video-generator.tsx index 1d942d1bb..e9f3a2b8c 100644 --- a/templates/next-video-template/src/components/video-generator.tsx +++ b/templates/next-video-template/src/components/video-generator.tsx @@ -42,6 +42,8 @@ import { FileInputManager } from './FileInputManager'; import { VideoHistory } from './video-history'; const models: VideoModelConfig[] = [ + { id: 'veo-3.1-fast-generate-preview', name: 'Veo 3.1 Fast' }, + { id: 'veo-3.1-generate-preview', name: 'Veo 3.1' }, { id: 'veo-3.0-fast-generate-preview', name: 'Veo 3 Fast' }, { id: 'veo-3.0-generate-preview', name: 'Veo 3' }, ]; @@ -57,7 +59,7 @@ const models: VideoModelConfig[] = [ */ export default function VideoGenerator() { const [model, setModel] = useState( - 'veo-3.0-fast-generate-preview' + 'veo-3.1-fast-generate-preview' ); const [durationSeconds, setDurationSeconds] = useState<4 | 6 | 8>(4); const [generateAudio, setGenerateAudio] = useState(false); diff --git a/templates/next-video-template/src/lib/types.ts b/templates/next-video-template/src/lib/types.ts index d8e429c97..63ff3cabe 100644 --- a/templates/next-video-template/src/lib/types.ts +++ b/templates/next-video-template/src/lib/types.ts @@ -14,6 +14,8 @@ export type ModelOption = 'openai' | 'gemini'; * Available AI models for video generation */ export type VideoModelOption = + | 'veo-3.1-fast-generate-preview' + | 'veo-3.1-generate-preview' | 'veo-3.0-fast-generate-preview' | 'veo-3.0-generate-preview'; From d329c2ec951b3fee919f8cc1115a914dd3da1688 Mon Sep 17 00:00:00 2001 From: SlaVKsVolks Date: Tue, 4 Aug 2026 10:58:23 -0300 Subject: [PATCH 2/2] chore: sync local changes --- README.md | 5 +++++ packages/app/control/README.md | 13 +++++++++++++ packages/app/server/README.md | 13 +++++++++++++ packages/app/server/src/__tests__/README.md | 6 ++++++ packages/sdk/aix402/README.md | 6 ++++++ packages/sdk/auth-js-provider/README.md | 7 +++++++ packages/sdk/component-registry/README.md | 7 +++++++ packages/sdk/examples/next-402-chat/README.md | 7 +++++++ packages/sdk/examples/next/README.md | 7 +++++++ packages/sdk/examples/vite/README.md | 7 +++++++ packages/sdk/next/README.md | 7 +++++++ packages/sdk/react/README.md | 7 +++++++ packages/sdk/ts/README.md | 7 +++++++ packages/sdk/ts/src/__tests__/README.md | 7 +++++++ packages/tests/integration/README.md | 7 +++++++ templates/README.md | 6 ++++++ templates/assistant-ui/README.md | 7 +++++++ templates/authjs/README.md | 7 +++++++ templates/echo-cli/README.md | 7 +++++++ templates/next-chat/README.md | 7 +++++++ templates/next-image/README.md | 7 +++++++ templates/next-video-template/README.md | 7 +++++++ templates/next/README.md | 7 +++++++ templates/nextjs-api-key-template/README.md | 7 +++++++ templates/react-chat/README.md | 7 +++++++ templates/react-image/README.md | 7 +++++++ templates/react/README.md | 7 +++++++ 27 files changed, 196 insertions(+) diff --git a/README.md b/README.md index 54d3f0c7b..089d57459 100644 --- a/README.md +++ b/README.md @@ -125,3 +125,8 @@ Fill out `packages/app/control/.env` and `packages/app/server/.env`. Then... - `pnpm i` - `pnpm dev` + +## Navigation + +- [Back to `REPOS`](../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../README.md) diff --git a/packages/app/control/README.md b/packages/app/control/README.md index 99d3dce93..7bfbaee72 100644 --- a/packages/app/control/README.md +++ b/packages/app/control/README.md @@ -157,3 +157,16 @@ pnpm start ## License This project is licensed under the MIT License. + +## Navigation + +- [Back to `packages/app`](../../README.md) +- [Back to `echo`](../../../README.md) +- [Back to `REPOS`](../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../README.md) +## Navigation + +- [Back to `packages/app`](../../README.md) +- [Back to `echo`](../../../README.md) +- [Back to `REPOS`](../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../README.md) diff --git a/packages/app/server/README.md b/packages/app/server/README.md index 54d1888bd..f2f70cbdb 100644 --- a/packages/app/server/README.md +++ b/packages/app/server/README.md @@ -79,3 +79,16 @@ CMD ["pnpm", "start"] ## Error Handling If the generated Prisma client is not found, the server will throw a descriptive error message asking you to run `pnpm run copy-prisma`. + +## Navigation + +- [Back to `packages/app`](../../README.md) +- [Back to `echo`](../../../README.md) +- [Back to `REPOS`](../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../README.md) +## Navigation + +- [Back to `packages/app`](../../README.md) +- [Back to `echo`](../../../README.md) +- [Back to `REPOS`](../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../README.md) diff --git a/packages/app/server/src/__tests__/README.md b/packages/app/server/src/__tests__/README.md index 0f9e160b2..b806432a4 100644 --- a/packages/app/server/src/__tests__/README.md +++ b/packages/app/server/src/__tests__/README.md @@ -200,3 +200,9 @@ The test suite can be extended to cover: 3. Rate limiting behavior 4. Concurrent request handling 5. Performance testing +## Navigation + +- [Back to `packages/app/server/src`](../../../README.md) +- [Back to `echo`](../../../../README.md) +- [Back to `REPOS`](../../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../../README.md) diff --git a/packages/sdk/aix402/README.md b/packages/sdk/aix402/README.md index cf8f98f95..107000971 100644 --- a/packages/sdk/aix402/README.md +++ b/packages/sdk/aix402/README.md @@ -53,3 +53,9 @@ const result = streamText({ messages: [{ role: 'user', content: 'Hello!' }], }); ``` +## Navigation + +- [Back to `packages/sdk`](../../README.md) +- [Back to `echo`](../../../README.md) +- [Back to `REPOS`](../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../README.md) diff --git a/packages/sdk/auth-js-provider/README.md b/packages/sdk/auth-js-provider/README.md index 42b9117ee..9400b119c 100644 --- a/packages/sdk/auth-js-provider/README.md +++ b/packages/sdk/auth-js-provider/README.md @@ -3,3 +3,10 @@ An Auth.js Provider for the Echo platform that allows you to use Echo as your authentication provider. Not yet published on NPM. + +## Navigation + +- [Back to `packages/sdk`](../../README.md) +- [Back to `echo`](../../../README.md) +- [Back to `REPOS`](../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../README.md) diff --git a/packages/sdk/component-registry/README.md b/packages/sdk/component-registry/README.md index 4308025e6..58a789d30 100644 --- a/packages/sdk/component-registry/README.md +++ b/packages/sdk/component-registry/README.md @@ -21,3 +21,10 @@ This is a template for creating a custom registry using Next.js. ## Documentation Visit the [shadcn documentation](https://ui.shadcn.com/docs/registry) to view the full documentation. + +## Navigation + +- [Back to `packages/sdk`](../../README.md) +- [Back to `echo`](../../../README.md) +- [Back to `REPOS`](../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../README.md) diff --git a/packages/sdk/examples/next-402-chat/README.md b/packages/sdk/examples/next-402-chat/README.md index 9a80bd7ce..4b67dea4a 100644 --- a/packages/sdk/examples/next-402-chat/README.md +++ b/packages/sdk/examples/next-402-chat/README.md @@ -229,3 +229,10 @@ Make sure to update your Echo app configuration with your production domain. --- Built with ❤️ using [Echo](https://echo.merit.systems) - The simplest way to build AI applications with built-in billing and user management. + +## Navigation + +- [Back to `packages/sdk/examples`](../../../README.md) +- [Back to `echo`](../../../../README.md) +- [Back to `REPOS`](../../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../../README.md) diff --git a/packages/sdk/examples/next/README.md b/packages/sdk/examples/next/README.md index e215bc4cc..329cbcbc4 100644 --- a/packages/sdk/examples/next/README.md +++ b/packages/sdk/examples/next/README.md @@ -34,3 +34,10 @@ You can check out [the Next.js GitHub repository](https://github.com/vercel/next The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. + +## Navigation + +- [Back to `packages/sdk/examples`](../../../README.md) +- [Back to `echo`](../../../../README.md) +- [Back to `REPOS`](../../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../../README.md) diff --git a/packages/sdk/examples/vite/README.md b/packages/sdk/examples/vite/README.md index c0a57e2ef..969ea504c 100644 --- a/packages/sdk/examples/vite/README.md +++ b/packages/sdk/examples/vite/README.md @@ -25,3 +25,10 @@ The entire app is in `src/App.tsx` - just 70 lines of code demonstrating: 4. Using `EchoSignIn` and `EchoTokens` components This shows the complete user journey from sign-up to having a positive balance. + +## Navigation + +- [Back to `packages/sdk/examples`](../../../README.md) +- [Back to `echo`](../../../../README.md) +- [Back to `REPOS`](../../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../../README.md) \ No newline at end of file diff --git a/packages/sdk/next/README.md b/packages/sdk/next/README.md index 4ae991de6..9881d9800 100644 --- a/packages/sdk/next/README.md +++ b/packages/sdk/next/README.md @@ -255,3 +255,10 @@ For complete documentation and examples, visit: - Next.js 15.0.0 or higher - React 18.0.0 or 19.0.0 - Node.js 18 or higher + +## Navigation + +- [Back to `packages/sdk`](../../README.md) +- [Back to `echo`](../../../README.md) +- [Back to `REPOS`](../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../README.md) \ No newline at end of file diff --git a/packages/sdk/react/README.md b/packages/sdk/react/README.md index f018e88c9..2f84e4100 100644 --- a/packages/sdk/react/README.md +++ b/packages/sdk/react/README.md @@ -8,6 +8,13 @@ React SDK for Echo OAuth2 + PKCE authentication and token management. pnpm install @merit-systems/echo-react-sdk ``` +## Navigation + +- [Back to `packages/sdk`](../../README.md) +- [Back to `echo`](../../../README.md) +- [Back to `REPOS`](../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../README.md) + ## Setup ```tsx diff --git a/packages/sdk/ts/README.md b/packages/sdk/ts/README.md index 4092b9e71..9fcee5e2e 100644 --- a/packages/sdk/ts/README.md +++ b/packages/sdk/ts/README.md @@ -8,6 +8,13 @@ The official TypeScript SDK for the Echo platform, providing easy access to Echo pnpm install @merit-systems/echo-typescript-sdk ``` +## Navigation + +- [Back to `packages/sdk`](../../README.md) +- [Back to `echo`](../../../README.md) +- [Back to `REPOS`](../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../README.md) + ## Programmatic Usage ```typescript diff --git a/packages/sdk/ts/src/__tests__/README.md b/packages/sdk/ts/src/__tests__/README.md index c4244dd8e..c717e8029 100644 --- a/packages/sdk/ts/src/__tests__/README.md +++ b/packages/sdk/ts/src/__tests__/README.md @@ -227,3 +227,10 @@ The test suite is designed for CI/CD environments: - Coverage reporting - Parallel test execution support - Deterministic test results + +## Navigation + +- [Back to `packages/sdk/ts`](../../../README.md) +- [Back to `echo`](../../../../README.md) +- [Back to `REPOS`](../../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../../README.md) \ No newline at end of file diff --git a/packages/tests/integration/README.md b/packages/tests/integration/README.md index ad47c140c..ccb1ed8c5 100644 --- a/packages/tests/integration/README.md +++ b/packages/tests/integration/README.md @@ -80,3 +80,10 @@ Reset only: ```bash pnpm db:reset ``` + +## Navigation + +- [Back to `packages/tests`](../../README.md) +- [Back to `echo`](../../../README.md) +- [Back to `REPOS`](../../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../../README.md) \ No newline at end of file diff --git a/templates/README.md b/templates/README.md index d95c84c8e..74d7392b6 100644 --- a/templates/README.md +++ b/templates/README.md @@ -306,3 +306,9 @@ Some templates (like `nextjs-api-key-template`) may require additional environme --- Built with ❤️ by [Merit Systems](https://merit.systems) + +## Navigation + +- [Back to `echo`](../README.md) +- [Back to `REPOS`](../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../README.md) diff --git a/templates/assistant-ui/README.md b/templates/assistant-ui/README.md index e4515006d..0dbf80475 100644 --- a/templates/assistant-ui/README.md +++ b/templates/assistant-ui/README.md @@ -87,3 +87,10 @@ const runtime = useChatRuntime({ ## API Route The API route at `/api/chat` uses the new `streamText` function from AI SDK v5 to handle chat completions. + +## Navigation + +- [Back to `templates`](../README.md) +- [Back to `echo`](../../README.md) +- [Back to `REPOS`](../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../README.md) \ No newline at end of file diff --git a/templates/authjs/README.md b/templates/authjs/README.md index 159b442d3..79b452476 100644 --- a/templates/authjs/README.md +++ b/templates/authjs/README.md @@ -46,3 +46,10 @@ You can check out [the Next.js GitHub repository](https://github.com/vercel/next The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. + +## Navigation + +- [Back to `templates`](../README.md) +- [Back to `echo`](../../README.md) +- [Back to `REPOS`](../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../README.md) \ No newline at end of file diff --git a/templates/echo-cli/README.md b/templates/echo-cli/README.md index 49f36cce0..f121c5877 100644 --- a/templates/echo-cli/README.md +++ b/templates/echo-cli/README.md @@ -320,3 +320,10 @@ MIT --- Built with ❤️ by [Merit Systems](https://merit.systems) + +## Navigation + +- [Back to `templates`](../README.md) +- [Back to `echo`](../../README.md) +- [Back to `REPOS`](../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../README.md) \ No newline at end of file diff --git a/templates/next-chat/README.md b/templates/next-chat/README.md index 57c2c453c..f53e4c037 100644 --- a/templates/next-chat/README.md +++ b/templates/next-chat/README.md @@ -243,3 +243,10 @@ Make sure to update your Echo app configuration with your production domain. --- Built with ❤️ using [Echo](https://echo.merit.systems) - The simplest way to build AI applications with built-in billing and user management. + +## Navigation + +- [Back to `templates`](../README.md) +- [Back to `echo`](../../README.md) +- [Back to `REPOS`](../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../README.md) \ No newline at end of file diff --git a/templates/next-image/README.md b/templates/next-image/README.md index 707fe593e..541bd7831 100644 --- a/templates/next-image/README.md +++ b/templates/next-image/README.md @@ -44,3 +44,10 @@ You can check out [the Next.js GitHub repository](https://github.com/vercel/next The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. + +## Navigation + +- [Back to `templates`](../README.md) +- [Back to `echo`](../../README.md) +- [Back to `REPOS`](../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../README.md) \ No newline at end of file diff --git a/templates/next-video-template/README.md b/templates/next-video-template/README.md index a7e0a1b5a..308f96c54 100644 --- a/templates/next-video-template/README.md +++ b/templates/next-video-template/README.md @@ -44,3 +44,10 @@ You can check out [the Next.js GitHub repository](https://github.com/vercel/next The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. + +## Navigation + +- [Back to `templates`](../README.md) +- [Back to `echo`](../../README.md) +- [Back to `REPOS`](../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../README.md) \ No newline at end of file diff --git a/templates/next/README.md b/templates/next/README.md index f27a10be3..ec15060d1 100644 --- a/templates/next/README.md +++ b/templates/next/README.md @@ -46,3 +46,10 @@ You can check out [the Next.js GitHub repository](https://github.com/vercel/next The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. + +## Navigation + +- [Back to `templates`](../README.md) +- [Back to `echo`](../../README.md) +- [Back to `REPOS`](../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../README.md) \ No newline at end of file diff --git a/templates/nextjs-api-key-template/README.md b/templates/nextjs-api-key-template/README.md index 092d9a42a..a589253a9 100644 --- a/templates/nextjs-api-key-template/README.md +++ b/templates/nextjs-api-key-template/README.md @@ -301,3 +301,10 @@ Make sure to update your Echo app configuration with your production domain. --- Built with ❤️ using [Echo](https://echo.merit.systems) - The simplest way to build AI applications with built-in billing and user management. + +## Navigation + +- [Back to `templates`](../README.md) +- [Back to `echo`](../../README.md) +- [Back to `REPOS`](../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../README.md) \ No newline at end of file diff --git a/templates/react-chat/README.md b/templates/react-chat/README.md index ccdb936f5..b343cb16b 100644 --- a/templates/react-chat/README.md +++ b/templates/react-chat/README.md @@ -39,3 +39,10 @@ The entire app is in `src/App.tsx` - just 70 lines of code demonstrating: 4. Using `EchoSignIn` and `EchoTokens` components This shows the complete user journey from sign-up to having a positive balance. + +## Navigation + +- [Back to `templates`](../README.md) +- [Back to `echo`](../../README.md) +- [Back to `REPOS`](../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../README.md) \ No newline at end of file diff --git a/templates/react-image/README.md b/templates/react-image/README.md index 1979d1799..40f64eeef 100644 --- a/templates/react-image/README.md +++ b/templates/react-image/README.md @@ -39,3 +39,10 @@ The entire app is in `src/App.tsx` - just 70 lines of code demonstrating: 4. Using `EchoSignIn` and `EchoTokens` components This shows the complete user journey from sign-up to having a positive balance. + +## Navigation + +- [Back to `templates`](../README.md) +- [Back to `echo`](../../README.md) +- [Back to `REPOS`](../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../README.md) \ No newline at end of file diff --git a/templates/react/README.md b/templates/react/README.md index 8d23f971b..8d61534b2 100644 --- a/templates/react/README.md +++ b/templates/react/README.md @@ -81,3 +81,10 @@ export default tseslint.config([ }, ]); ``` + +## Navigation + +- [Back to `templates`](../README.md) +- [Back to `echo`](../../README.md) +- [Back to `REPOS`](../../../README.md) +- [Back to `AI_REVENUE_SPRINT_100_24H`](../../../../README.md) \ No newline at end of file