A2A agent protocol interoperability, Agent Cards, and MCP bridging / Protokol agen A2A, Agent Cards, dan integrasi MCP.
日本語の概要は準備中です。原文の説明を表示しています。
Expert guide for deploying SaaS applications with multiple entry points on modern edge and serverless platforms like Vercel and Cloudflare / Panduan ahli untuk mendeploy aplikasi SaaS dengan multiple entry points di platform edge dan serverless modern seperti Vercel dan Cloudflare.
日本語の概要は準備中です。原文の説明を表示しています。
実行スコア 未検証
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
<a name="english"></a>
zero-to-prod-orchestrator (Phase 7 deployment), brainstorming, session-memory-manager.ci-cd-devops-architect (deployment automation), github-actions-expert (cloud actions & OIDC), docker-container-expert (container images for Railway/Fly).cloudflare-workers-expert (Cloudflare Workers, D1, KV, R2), api-gateway-proxy-expert (edge routing & proxies).proactive-background-watcher (deployment health checks), self-healing-cloud-orchestrator (production crash hotfixing).Expert guide for deploying SaaS applications and their multiple entry points (landing page, app, super admin subdomain) on modern edge and serverless platforms. Covers Vercel, Cloudflare Workers & Pages, Railway, Fly.io, and Cloudflare Workers AI for AI-powered edge workloads.
app.domain.com, admin.domain.com).| Platform | Best For | Free Tier | Cold Start |
|---|---|---|---|
| Vercel | Next.js, static, serverless functions | ✅ | ~200ms |
| Cloudflare Workers | Ultra-low latency APIs, edge logic | ✅ (100k req/day) | ~0ms |
| Cloudflare Pages | Static + full-stack (via Workers) | ✅ | ~0ms |
| Railway | Node.js/Go/Python long-running services, Bun | ✅ (5$/mo credit) | None |
| Fly.io | Docker containers, global distribution | ✅ (3 shared VMs) | ~500ms |
| Render | Node.js/Go/Python persistent services | ✅ (spins down) | ~30s |
For SaaS applications, separate deployments for each entry point:
myapp.com → Vercel (Marketing/Landing — Next.js static)
app.myapp.com → Vercel (SaaS App — Next.js dynamic)
admin.myapp.com → Vercel (Super Admin — Next.js, restricted access)
api.myapp.com → Railway/Fly.io (Backend API — long-running)
cdn.myapp.com → Cloudflare R2 (Static assets & user uploads)
// vercel.json
{
"rewrites": [
{ "source": "/(.*)", "destination": "/$1" }
],
"headers": [
{
"source": "/(.*)",
"headers": [
{ "key": "X-Content-Type-Options", "value": "nosniff" },
{ "key": "X-Frame-Options", "value": "DENY" },
{ "key": "Strict-Transport-Security", "value": "max-age=63072000; includeSubDomains; preload" }
]
}
]
}
// middleware.ts — runs at the edge before every request
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
export function middleware(request: NextRequest) {
const hostname = request.headers.get('host') ?? '';
const subdomain = hostname.split('.')[0];
// Route admin subdomain — enforce strict auth check
if (subdomain === 'admin') {
const adminToken = request.cookies.get('admin-session')?.value;
if (!adminToken) {
return NextResponse.redirect(new URL('/login', request.url));
}
}
// Identify tenant from subdomain for multi-tenant apps
if (subdomain !== 'www' && subdomain !== 'app' && subdomain !== 'admin') {
const response = NextResponse.next();
response.headers.set('x-tenant-slug', subdomain);
return response;
}
return NextResponse.next();
}
export const config = {
matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'],
};
// src/index.ts
import { Hono } from 'hono';
import { cors } from 'hono/cors';
import { rateLimit } from '@/middleware/rateLimit';
const app = new Hono<{ Bindings: Env }>();
app.use('*', cors({ origin: ['https://app.myapp.com'] }));
app.use('/api/*', rateLimit(100)); // 100 req/min via KV
app.get('/api/health', (c) => c.json({ status: 'ok', region: c.env.CF_REGION }));
app.get('/api/data', async (c) => {
// Access Cloudflare D1 (SQLite at edge)
const result = await c.env.DB.prepare('SELECT * FROM items LIMIT 20').all();
return c.json(result.results);
});
export default app;
Run AI models directly at Cloudflare's edge — no external API calls needed:
export default {
async fetch(request: Request, env: Env) {
const { text } = await request.json() as { text: string };
// Run Llama 3 or Mistral at the edge
const response = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', {
messages: [
{ role: 'system', content: 'You are a helpful assistant.' },
{ role: 'user', content: text }
],
stream: true,
});
return new Response(response, {
headers: { 'Content-Type': 'text/event-stream' }
});
}
};
Available models on Workers AI:
@cf/meta/llama-3.1-8b-instruct — Fast general-purpose chat@cf/mistral/mistral-7b-instruct-v0.2 — Fast instruction model@cf/baai/bge-small-en-v1.5 — Text embedding (for RAG)@cf/stabilityai/stable-diffusion-xl-base-1.0 — Image generation# Dockerfile for Railway (Bun runtime)
FROM oven/bun:1.2-alpine
WORKDIR /app
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile
COPY . .
EXPOSE 3000
CMD ["bun", "run", "src/server.ts"]
# railway.toml
[build]
builder = "DOCKERFILE"
[deploy]
startCommand = "bun run src/server.ts"
healthcheckPath = "/health"
healthcheckTimeout = 10
restartPolicyType = "ON_FAILURE"
wrangler secret put SECRET_NAME or the dashboard..env files — use .env.example as documentation only.// Vercel: Cache API responses at the edge
export async function GET() {
const data = await fetchData();
return Response.json(data, {
headers: {
'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=300',
}
});
}
// Cloudflare: Use Cache API
const cache = caches.default;
const cached = await cache.match(request);
if (cached) return cached;
<a name="bahasa-indonesia"></a>
zero-to-prod-orchestrator (Deployment Fase 7), brainstorming, session-memory-manager.ci-cd-devops-architect (otomasi deployment), github-actions-expert (aksi cloud & OIDC), docker-container-expert (image kontainer Railway/Fly).cloudflare-workers-expert (Cloudflare Workers, D1, KV, R2), api-gateway-proxy-expert (routing edge & proxy).proactive-background-watcher (pemeriksaan kesehatan deployment), self-healing-cloud-orchestrator (perbaikan otomatis crash produksi).Panduan ahli untuk men-deploy aplikasi SaaS dan multiple entry points-nya (landing page, aplikasi, subdomain super admin) di platform edge dan serverless modern. Mencakup Vercel, Cloudflare Workers & Pages, Railway, Fly.io, dan Cloudflare Workers AI untuk workload AI di edge.
app.domain.com, admin.domain.com).| Platform | Pilihan Terbaik Untuk | Tier Gratis | Cold Start |
|---|---|---|---|
| Vercel | Next.js, situs statis, serverless functions | ✅ | ~200ms |
| Cloudflare Workers | API latensi ultra-rendah, logika edge | ✅ (100k req/hari) | ~0ms |
| Cloudflare Pages | Statis + full-stack (via Workers) | ✅ | ~0ms |
| Railway | Layanan Node.js/Bun/Go/Python long-running | ✅ ($5 kredit/bln) | Nol |
| Fly.io | Kontainer Docker terdistribusi global | ✅ (3 shared VM) | ~500ms |
// middleware.ts
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
export function middleware(request: NextRequest) {
const hostname = request.headers.get('host') ?? '';
const subdomain = hostname.split('.')[0];
// Rute subdomain admin — tegakkan pemeriksaan otentikasi ketat
if (subdomain === 'admin') {
const sesiAdmin = request.cookies.get('admin-session')?.value;
if (!sesiAdmin) {
return NextResponse.redirect(new URL('/masuk', request.url));
}
}
// Identifikasi tenant dari subdomain pada aplikasi multi-tenant
if (subdomain !== 'www' && subdomain !== 'app' && subdomain !== 'admin') {
const response = NextResponse.next();
response.headers.set('x-tenant-slug', subdomain);
return response;
}
return NextResponse.next();
}
export const config = {
matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'],
};
export default {
async fetch(request: Request, env: Env) {
const { teks } = (await request.json()) as { teks: string };
// Jalankan inferensi Llama 3.1 langsung di edge tanpa server eksternal
const response = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', {
messages: [
{ role: 'system', content: 'Anda adalah asisten AI yang akurat.' },
{ role: 'user', content: teks },
],
stream: true,
});
return new Response(response, {
headers: { 'Content-Type': 'text/event-stream' },
});
},
};
FROM oven/bun:1.2-alpine
WORKDIR /app
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile
COPY . .
EXPOSE 3000
CMD ["bun", "run", "src/server.ts"]
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
A2A agent protocol interoperability, Agent Cards, and MCP bridging / Protokol agen A2A, Agent Cards, dan integrasi MCP.
日本語の概要は準備中です。原文の説明を表示しています。
Expert guide for automated and manual Web Accessibility (a11y) testing — axe-core, Pa11y, Playwright a11y, screen reader testing, and WCAG 2.2 Level AA/AAA compliance / Panduan ahli pengujian aksesibilitas web.
日本語の概要は準備中です。原文の説明を表示しています。
Web accessibility testing with axe-core, Playwright, and WCAG 2.2 / Pengujian aksesibilitas web axe-core, Playwright, dan WCAG 2.2.
日本語の概要は準備中です。原文の説明を表示しています。
Expert guide for intelligent model cascading and routing — complexity-scored task routing from Flash/Haiku to Sonnet/Opus/Astra, dynamic escalation with quality gates, 40-60% token cost reduction while maintaining output quality / Panduan ahli untuk kaskade dan routing model cerdas — routing tugas berbasis skor kompleksitas dari Flash/Haiku ke Sonnet/Opus/Astra, eskalasi dinamis dengan gerbang kualitas, pengurangan biaya token 40-60% dengan kualitas output terjaga.
日本語の概要は準備中です。原文の説明を表示しています。
Model cascading & complexity-scored routing (Grok, Gemini, Claude) / Routing kaskade model & scoring kompleksitas (Grok, Gemini, Claude).
日本語の概要は準備中です。原文の説明を表示しています。
Affective computing, emotion AI, and multimodal sentiment analysis / Komputasi afektif, AI emosional, dan analisis sentimen multimodal.
日本語の概要は準備中です。原文の説明を表示しています。