AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
NebulaKit 사이트 – Cloudflare 기반 독립 플랫폼으로 콘텐츠 관리·인증·AI 채팅·자체 분석·에이전트 준비 출판 제공
The site for NebulaKit, an independent Cloudflare-native platform for content management, authentication, AI chat, first-party analytics, and agent-ready publishing.
개발 도구HTML · TypeScriptGitHub @starspacegroup온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기The marketing site for NebulaKit — a cosmic-grade SvelteKit starter template powered by Cloudflare's full stack. Built on the template itself.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A cosmic-grade SvelteKit starter template powered by Cloudflare's full stack
NebulaKit is a production-ready SvelteKit template with everything you need to build modern web applications. It comes with Cloudflare Workers integration (D1, KV, R2, Queues, Turnstile), a complete theme system, command palette, LLM chat UI, full authentication, and drag-and-drop that works with a mouse, a finger or a keyboard—all built in from day one.
This repository is the site at nebulakit.starspace.group. It was derived from NebulaKit and is no longer a template — see AGENTS.md §5.README 전문 보기 ↗A cosmic-grade SvelteKit starter template powered by Cloudflare's full stack
NebulaKit is a production-ready SvelteKit template with everything you need to build modern web applications. It comes with Cloudflare Workers integration (D1, KV, R2, Queues, Turnstile), a complete theme system, command palette, LLM chat UI, full authentication, and drag-and-drop that works with a mouse, a finger or a keyboard—all built in from day one.
This repository is the site at nebulakit.starspace.group. It was derived from NebulaKit and is no longer a template — see AGENTS.md §5.
.well-known discovery, Markdown content negotiation, and WebMCP tools — all working out of the boxClick the "Use this template" button above to create your own repository, or "Open in a codespace" to start coding instantly in the cloud.
Recommended: Bun (faster installs and scripts in this repo).
# Install dependencies
bun install
# Start development server
bun run dev
# Build for production
bun run build
# Deploy to Cloudflare Pages
bun run deploy
Prefer npm instead? Use the equivalent commands:
npm install
npm run dev
npm run build
npm run deploy
Visit http://localhost:4278 to see your app!
Share your local dev server with the outside world — no account needed for the free mode:
# Free public URL via trycloudflare.com (zero config, zero account)
bun run tunnel
# or: npm run tunnel
# Run dev server + tunnel together in one command
bun run dev:tunnel
The tunnel URL (e.g. https://random-words.trycloudflare.com) is printed to the console as soon as the tunnel is up.
Custom domain (e.g. myapp.yourdomain.com):
http://localhost:4278vite.config.ts → server.allowedHosts (e.g. '.yourdomain.com')TUNNEL_TOKEN=<your-token> bun run tunnel
Prerequisite:
cloudflaredmust be installed.
- macOS:
brew install cloudflared- Linux: https://pkg.cloudflare.com/index.html
- Windows: https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/
What's pre-wired for tunnel use (in vite.config.ts):
allowedHosts includes trycloudflare.com — no Vite 403 rejections on free tunnelsVITE_HMR=true to re-enable for purely local devstaleDepsFix plugin strips stale ?v= hashes so Vite never returns 504s on first load through a tunneloptimizeDeps.include pre-bundles Svelte at startup so the first tunneled page load doesn't trigger a slow on-demand optimizationThe tunnel script lives at scripts/tunnel.js and respects a PORT env var if you change the dev port.
Svelte 5, SvelteKit 2.70, Vite 8, Vitest 4, @sveltejs/adapter-cloudflare 7 and
Node 24 or newer (the same stack as the NebulaKit template, so template code
copies across). The 220 components are still written in Svelte 4 syntax, which
Svelte 5 compiles in legacy mode; there is no need to rewrite them to runes.
Testing notes for the new stack:
createEventDispatcher event in a test with the mount events
option (render(C, { props, events: { change: fn } })), and update props
with rerender. component.$on and component.$set no longer exist.Set-Cookie from Response. Route-handler tests that read
it import tests/helpers/server-response.ts first.NebulaKit follows Test-Driven Development with 90%+ code coverage requirements:
# Run all tests
npm run test
# Run tests in watch mode
npm run test:watch
# Check coverage (must be ≥90%)
npm run test:coverage
# Run E2E tests
npm run test:e2e
# Run all tests (unit + E2E)
npm run test:all
Important: All features and bug fixes require tests written FIRST. See CONTRIBUTING.md for details.
/documentation route in sync with shipped featuresNebulaKit/
├── src/
│ ├── lib/
│ │ ├── components/ # Reusable UI components
│ │ ├── stores/ # Svelte stores (theme, etc.)
│ │ ├── server/ # Server-side utilities
│ │ └── utils/ # Helper functions
│ ├── routes/ # SvelteKit routes
│ │ ├── auth/ # Authentication pages
│ │ ├── chat/ # LLM chat interface
│ │ └── demo/ # Feature demonstrations
│ ├── app.css # Global styles & theme
│ └── app.html # HTML template
├── static/ # Static assets
└── wrangler.toml # Cloudflare configuration
NebulaKit includes a comprehensive theme system with:
/* All colors use CSS variables - never hardcode! */
.button {
background-color: var(--color-primary);
color: var(--color-background);
border-radius: var(--radius-md);
padding: var(--spacing-sm) var(--spacing-md);
}
Validate theme contrast:
npm run validate:contrast
See the Theme System Guide for complete documentation.
Every public page of the template and of this site scores 100 in all four
Lighthouse categories. The home page shows the table and links a full report per
page; the reports are served from static/lighthouse/.
Regenerate them with both apps built and served — this site on 8810 and the template on 8820:
bun run lighthouse
The script audits each page three times and publishes the median run, writes one
HTML report per page, and writes the score table to
src/lib/lighthouse-results.json, which the home page renders. It exits non-zero
if any page drops below 100, so the numbers on the page cannot be edited into
being true. Point it at production instead with
--site <origin> --template <origin>.
The auth routes are not audited. robots.txt disallows /auth/, and Lighthouse
scores a crawl block as an SEO failure — correct for a login form, so the
conflict is left alone rather than scored around.
Built-in auth pages with support for:
Easily extend with @auth/sveltekit for more providers.
The included chat interface is ready to connect to your LLM API:
// In /routes/chat/+page.svelte
async function sendMessage() {
const response = await fetch('/api/chat', {
method: 'POST',
body: JSON.stringify({ message: input })
});
// Handle response
}
const result = await platform.env.DB.prepare('SELECT * FROM users WHERE email = ?')
.bind(email)
.first();
await platform.env.KV.put('key', 'value');
const value = await platform.env.KV.get('key');
await platform.env.BUCKET.put('file.jpg', fileData);
const file = await platform.env.BUCKET.get('file.jpg');
await platform.env.QUEUE.send({ data: 'message' });
<WidgetBoard> gives you a columned board of draggable widgets:
<WidgetBoard bind:widgets {columns} on:change={(e) => save(e.detail.widgets)} />
reorder()), so orders can never collideThe two actions behind it, use:draggable and use:dropzone, work on any
markup, so a sortable list or a nav reorder needs no board at all.
Reference: docs/WIDGET_BOARD.md
NebulaKit is mobile-first with:
MIT License - feel free to use this template for any project!
We welcome contributions! Please read our Contributing Guide first.
Key requirements:
See .github/copilot-instructions.md for detailed development guidelines.
If you find NebulaKit useful, please consider giving it a star on GitHub!