├── .npmrc
├── static
└── favicon.png
├── renovate.json
├── src
├── lib
│ ├── components
│ │ ├── ui
│ │ │ ├── separator
│ │ │ │ ├── index.ts
│ │ │ │ └── separator.svelte
│ │ │ ├── dialog
│ │ │ │ ├── dialog-portal.svelte
│ │ │ │ ├── dialog-header.svelte
│ │ │ │ ├── dialog-title.svelte
│ │ │ │ ├── dialog-description.svelte
│ │ │ │ ├── dialog-footer.svelte
│ │ │ │ ├── dialog-overlay.svelte
│ │ │ │ ├── index.ts
│ │ │ │ └── dialog-content.svelte
│ │ │ ├── alert-dialog
│ │ │ │ ├── alert-dialog-portal.svelte
│ │ │ │ ├── alert-dialog-header.svelte
│ │ │ │ ├── alert-dialog-footer.svelte
│ │ │ │ ├── alert-dialog-description.svelte
│ │ │ │ ├── alert-dialog-title.svelte
│ │ │ │ ├── alert-dialog-action.svelte
│ │ │ │ ├── alert-dialog-cancel.svelte
│ │ │ │ ├── alert-dialog-overlay.svelte
│ │ │ │ ├── alert-dialog-content.svelte
│ │ │ │ └── index.ts
│ │ │ ├── tooltip
│ │ │ │ ├── index.ts
│ │ │ │ └── tooltip-content.svelte
│ │ │ ├── sheet
│ │ │ │ ├── sheet-portal.svelte
│ │ │ │ ├── sheet-header.svelte
│ │ │ │ ├── sheet-title.svelte
│ │ │ │ ├── sheet-description.svelte
│ │ │ │ ├── sheet-footer.svelte
│ │ │ │ ├── sheet-overlay.svelte
│ │ │ │ ├── sheet-content.svelte
│ │ │ │ └── index.ts
│ │ │ ├── icons
│ │ │ │ ├── IconVercel.svelte
│ │ │ │ ├── IconPlus.svelte
│ │ │ │ ├── IconCheck.svelte
│ │ │ │ ├── IconSidebar.svelte
│ │ │ │ ├── IconArrowDown.svelte
│ │ │ │ ├── IconSeparator.svelte
│ │ │ │ ├── IconArrowRight.svelte
│ │ │ │ ├── IconArrowElbow.svelte
│ │ │ │ ├── IconCopy.svelte
│ │ │ │ ├── IconClose.svelte
│ │ │ │ ├── IconStop.svelte
│ │ │ │ ├── IconSpinner.svelte
│ │ │ │ ├── IconUser.svelte
│ │ │ │ ├── IconExternalLink.svelte
│ │ │ │ ├── IconMessage.svelte
│ │ │ │ ├── IconTrash.svelte
│ │ │ │ ├── IconMoon.svelte
│ │ │ │ ├── IconUsers.svelte
│ │ │ │ ├── IconShare.svelte
│ │ │ │ ├── IconRefresh.svelte
│ │ │ │ ├── IconSun.svelte
│ │ │ │ ├── IconSvelteChat.svelte
│ │ │ │ ├── IconGitHub.svelte
│ │ │ │ ├── index.ts
│ │ │ │ └── IconOpenAI.svelte
│ │ │ ├── badge
│ │ │ │ ├── badge.svelte
│ │ │ │ └── index.ts
│ │ │ └── button
│ │ │ │ ├── button.svelte
│ │ │ │ └── index.ts
│ │ ├── SidebarFooter.svelte
│ │ ├── ExternalLink.svelte
│ │ ├── FooterText.svelte
│ │ ├── ChatList.svelte
│ │ ├── ThemeToggle.svelte
│ │ ├── SidebarList.svelte
│ │ ├── Sidebar.svelte
│ │ ├── LoginButton.svelte
│ │ ├── ChatMessage.svelte
│ │ ├── ButtonScrollToBottom.svelte
│ │ ├── Chat.svelte
│ │ ├── ChatMessageActions.svelte
│ │ ├── SidebarItem.svelte
│ │ ├── ClearHistory.svelte
│ │ ├── EmptyScreen.svelte
│ │ ├── ChatPanel.svelte
│ │ ├── PromptForm.svelte
│ │ ├── Header.svelte
│ │ ├── SidebarActions.svelte
│ │ └── UserMenu.svelte
│ ├── kv.ts
│ ├── types.ts
│ ├── theme.ts
│ ├── chat.ts
│ └── utils.ts
├── routes
│ ├── +page.svelte
│ ├── sign-in
│ │ └── +page.svelte
│ ├── chat
│ │ └── [id]
│ │ │ ├── +page.svelte
│ │ │ └── +page.server.ts
│ ├── +layout.server.ts
│ ├── +layout.svelte
│ └── api
│ │ └── chat
│ │ └── +server.ts
├── app.d.ts
├── app.html
├── hooks.server.ts
└── app.postcss
├── vite.config.ts
├── .gitignore
├── .eslintignore
├── .prettierignore
├── .prettierrc
├── components.json
├── postcss.config.cjs
├── .env.example
├── tsconfig.json
├── .eslintrc.cjs
├── svelte.config.js
├── LICENSE
├── tailwind.config.js
├── package.json
└── README.md
/.npmrc:
--------------------------------------------------------------------------------
1 | engine-strict=true
2 | resolution-mode=highest
3 |
--------------------------------------------------------------------------------
/static/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jianyuan/sveltekit-ai-chatbot/HEAD/static/favicon.png
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3 | "extends": [
4 | "config:recommended"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/src/lib/components/ui/separator/index.ts:
--------------------------------------------------------------------------------
1 | import Root from "./separator.svelte";
2 |
3 | export {
4 | Root,
5 | //
6 | Root as Separator
7 | };
8 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { sveltekit } from '@sveltejs/kit/vite';
2 | import { defineConfig } from 'vite';
3 |
4 | export default defineConfig({
5 | plugins: [sveltekit()]
6 | });
7 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /build
4 | /.svelte-kit
5 | /package
6 | .env
7 | .env.*
8 | !.env.example
9 | vite.config.js.timestamp-*
10 | vite.config.ts.timestamp-*
11 |
--------------------------------------------------------------------------------
/src/routes/+page.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
13 | Open source AI chatbot built with
14 |
No chat history
24 |
29 | This is an open source AI chatbot app template built with
30 |
35 | You can start a conversation here or try the following examples: 36 |
37 |7 | An open-source AI chatbot app template built with SvelteKit, the Vercel AI SDK, OpenAI, and Vercel KV. 8 |
9 | 10 |11 | Features · 12 | Model Providers · 13 | Deploy Your Own · 14 | Running locally · 15 | Authors 16 |
17 |