Configuration
Configure the GitCMS Client SDK for your use case.
GitCMSConfig
typescript
interface GitCMSConfig {
repository: string; // Required: 'owner/repo'
branch?: string; // Optional: default 'main'
token?: string; // Optional: for private repos
apiEndpoint?: string; // Optional: for media proxying
transport?: 'public' | 'authenticated'; // Optional: force mode
}Basic Configuration
Public Repository
typescript
const cms = new GitCMS({
repository: 'username/blog',
});Private Repository
For private repositories, you need a GitHub Personal Access Token:
typescript
const cms = new GitCMS({
repository: 'username/private-blog',
token: process.env.GITHUB_TOKEN, // Server-side only!
});How to Get a GitHub Token 📚
Need a token? Follow our complete GitHub Token guide for step-by-step instructions on creating a secure token with the right permissions.
Quick version:
- GitHub Settings → Developer settings → Fine-grained tokens
- Generate new token with Contents: Read and write
- Store in environment variables
Security Warning
Never expose tokens in client-side code! Only use tokens in server-side code, API routes, or build-time scripts.
Custom Branch
typescript
const cms = new GitCMS({
repository: 'username/blog',
branch: 'production',
});Transport Modes
GitCMS automatically selects the transport mode based on your config.
Public Mode
- No token required
- 60 requests/hour per IP
- Best for: Public repos, client-side apps
typescript
const cms = new GitCMS({
repository: 'username/blog',
// No token = public mode
});Authenticated Mode
- Token required
- 5,000 requests/hour
- Best for: Private repos, server-side apps
typescript
const cms = new GitCMS({
repository: 'username/blog',
token: process.env.GITHUB_TOKEN,
});Environment Variables
Store sensitive data like GitHub tokens in environment variables:
bash
# .env.local
GITHUB_TOKEN=github_pat_11AAAAAAA0AAAAAAAAAAAA_XXX
GITHUB_REPO=username/my-blogtypescript
const cms = new GitCMS({
repository: process.env.GITHUB_REPO!,
token: process.env.GITHUB_TOKEN,
});Token Setup Guide
New to GitHub tokens? Check our GitHub Token Guide for:
- Step-by-step token creation
- Security best practices
- Troubleshooting common issues
- Platform-specific setup (Vercel, Netlify, etc.)
Rate Limit Monitoring
typescript
const rateLimit = await cms.getRateLimit();
if (rateLimit) {
console.log(`Remaining: ${rateLimit.remaining}/${rateLimit.limit}`);
console.log(`Resets at: ${rateLimit.reset}`);
}Transport Mode Check
typescript
console.log(cms.getTransportMode()); // 'public' | 'authenticated'
console.log(cms.isPublicMode()); // true | falseNext Steps
Continue Learning
- Basic Queries - Fetch content
- Security - Best practices