Fulling provides a sandboxed environment with Claude Code and PostgreSQL — everything you need to vibe code full-stack apps.
Fulling automatically sets up the following for your project, ready in a minute:
- Next.js environment with shadcn/ui
- Dedicated PostgreSQL (pre-configured)
- Claude Code (pre-configured)
- A live domain
-
Dev environment - Next.js + shadcn/ui + Claude Code CLI, all pre-configured. Environment variables are set up, so you can start coding immediately.
-
Database - Each project gets its own PostgreSQL instance via KubeBlocks. Connection string is injected as
DATABASE_URL. -
Live domains - HTTPS subdomains with SSL, mapped to ports 3000/5000/8080. Your app is accessible the moment you run it.
-
Web terminal - Built-in ttyd terminal. Chat with Claude Code, run commands, see output—all in your browser.
-
Config awareness - Set up OAuth or payment configs in the UI. Claude Code can read these and implement the features for you.
-
GitHub sync - Connect your repo. Push, pull, version control—works like you'd expect.
-
One-click deploy - Deploy from sandbox to production Kubernetes. No YAML wrangling required.
- Framework: Next.js 16.0.10 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS v4
- UI Components: Shadcn/UI
- State Management: React Hooks
- Runtime: Node.js
- API: Next.js API Routes
- Database ORM: Prisma
- Authentication: NextAuth v5 with GitHub OAuth
- Container Orchestration: Kubernetes
- Database: PostgreSQL (via KubeBlocks)
- Web Terminal: ttyd
- Container Image: fullstack-web-runtime (Custom Docker image with development tools)
- Node.js 20.x or higher
- PostgreSQL database
- Kubernetes cluster with KubeBlocks installed
- GitHub OAuth application credentials
- Clone the repository:
git clone https://github.com/FullAgent/fulling.git
cd fulling- Install dependencies:
pnpm install- Set up environment variables:
Create .env.local file:
# Database
DATABASE_URL="postgresql://user:password@localhost:5432/fullstackagent"
# NextAuth
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-nextauth-secret"
AUTH_TRUST_HOST=""
# GitHub OAuth (replace with your actual values)
GITHUB_CLIENT_ID=""
GITHUB_CLIENT_SECRET=""
# Sealos OAuth
SEALOS_JWT_SECRET=""
# job
DATABASE_LOCK_DURATION_SECONDS=""
MAX_DATABASES_PER_RECONCILE=""
SANDBOX_LOCK_DURATION_SECONDS=""
MAX_SANDBOXES_PER_RECONCILE=""
# k8s resource
RUNTIME_IMAGE=""
# aiproxy
AIPROXY_ENDPOINT=""
ANTHROPIC_BASE_URL=""
# Log
LOG_LEVEL="info"
# login
ENABLE_SEALOS_AUTH=""- Initialize database:
npx prisma generate
npx prisma db push- Run the development server:
pnpm run devOpen http://localhost:3000 to access the application.
prisma/schema.prisma
The platform creates the following Kubernetes resources for each project:
-
Database Cluster (KubeBlocks):
- PostgreSQL 14.8.0
- 3Gi storage
- Auto-generated credentials
-
Sandbox Deployment:
- Custom fullstack-web-runtime image
- Claude Code CLI pre-installed
- Web terminal (ttyd) on port 7681
- Application ports: 3000, 5000, 8080
-
Services & Ingress:
- Internal service for pod networking
- HTTPS ingress with SSL termination
- WebSocket support for terminal
Default resource allocation per sandbox:
- CPU: 200m limit, 20m request
- Memory: 256Mi limit, 25Mi request
- Storage: 3Gi for database
fulling/
├── app/ # Next.js App Router pages
│ ├── api/ # API routes
│ ├── projects/ # Project management pages
│ └── layout.tsx # Root layout
├── components/ # React components
│ ├── ui/ # Shadcn/UI components
│ └── ... # Feature components
├── lib/ # Core libraries
│ ├── auth.ts # NextAuth configuration
│ ├── db.ts # Prisma client
│ ├── kubernetes.ts # Kubernetes service
│ └── github.ts # GitHub integration
├── prisma/ # Database schema
├── yaml/ # Kubernetes templates
└── public/ # Static assets
- Manages all Kubernetes operations
- Creates databases and sandboxes
- Handles pod lifecycle management
- GitHub OAuth integration
- Session management
- User authorization
- Prisma ORM configuration
- Connection pooling
- Authentication: GitHub OAuth ensures only authorized users can access the platform
- Isolation: Each sandbox runs in its own Kubernetes namespace
- Secrets Management: Sensitive data stored in Kubernetes secrets
- Network Policies: Sandboxes isolated from each other
- Resource Limits: Prevents resource exhaustion attacks
See Contributing Guidelines for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests:
npm test - Submit a pull request
MIT License - see LICENSE.
- GitHub: @fanux
- Issues: GitHub Issues

