Getting Started
Get up and running with GitCMS in minutes. Choose your path based on your role.
Choose Your Path
I want to create content
Use the Admin Panel to manage content visually without touching code.
I want to build an application
Use the Client SDK to fetch content from GitHub in your projects.
Prerequisites
For Content Creators (Admin Panel)
- A GitHub account
- A GitHub repository (public or private)
- Basic understanding of content structure
That's it! No installation or technical setup required.
For Developers (Client SDK)
- Node.js 18 or higher
- Basic understanding of JavaScript/TypeScript
- A project to integrate GitCMS into
Quick Overview
Admin Panel Workflow
- Sign in with GitHub OAuth
- Connect your repository
- Define content schemas
- Create and manage content
- Publish to GitHub
Client SDK Workflow
- Install
@git-cms/client - Configure with repository
- Query content with filters
- Display in your application
Installation
Admin Panel
No installation needed! Just visit:
Client SDK
Install via npm:
npm install @git-cms/clientOr with other package managers:
npm install @git-cms/clientyarn add @git-cms/clientpnpm add @git-cms/clientFirst Steps
As a Content Creator
Visit the Admin Panel
- Go to gitcms-admin.bestplayer.dev
- Click "Sign in with GitHub"
Connect Your Repository
- Select an existing repository or create a new one
- Choose the branch (usually
main) - Click "Connect"
Create Your First Schema
- Navigate to "Schemas"
- Click "Create New Schema"
- Define fields (title, content, etc.)
- Save schema
Create Content
- Navigate to "Content"
- Click "Create New"
- Select your schema
- Fill in the form
- Publish!
As a Developer
Install the SDK
bashnpm install @git-cms/clientInitialize GitCMS
typescriptimport { GitCMS } from '@git-cms/client'; const cms = new GitCMS({ repository: 'username/my-blog', });Fetch Content
typescriptconst posts = await cms .from('posts') .where('metadata.status', '==', 'published') .get();Display Content
typescriptposts.forEach(post => { console.log(post.data.title); });
Example Projects
Blog Website
Use GitCMS to power a blog:
// Fetch recent posts
const posts = await cms
.from('posts')
.where('metadata.status', '==', 'published')
.orderBy('metadata.publishedAt', 'desc')
.limit(10)
.get();
// Display posts
posts.forEach(post => {
console.log(`${post.data.title} - ${post.metadata.publishedAt}`);
});Portfolio Site
Manage projects with GitCMS:
// Fetch featured projects
const projects = await cms
.from('projects')
.where('featured', true)
.orderBy('order', 'asc')
.get();Documentation Site
Keep docs organized:
// Fetch docs by category
const guides = await cms
.from('docs')
.where('category', '==', 'guides')
.orderBy('order', 'asc')
.get();Repository Structure
After setup, your repository will look like this:
your-repository/
├── .gitcms/
│ ├── config.json # GitCMS configuration
│ └── schemas/ # Content type definitions
│ ├── blog-post.json
│ └── project.json
├── content/ # Your content files
│ ├── posts/
│ │ ├── my-first-post.md
│ │ └── another-post.json
│ └── projects/
│ └── awesome-project.json
└── media/ # Uploaded media files
├── images/
└── videos/Configuration Files
.gitcms/config.json
Basic GitCMS configuration:
{
"version": "1.0",
"contentPath": "content",
"mediaPath": "media",
"schemasPath": ".gitcms/schemas"
}Schema Example
Define content structure:
{
"id": "blog-post",
"name": "Blog Post",
"description": "Blog article with rich content",
"fields": [
{
"name": "title",
"type": "string",
"required": true
},
{
"name": "content",
"type": "markdown",
"required": true
},
{
"name": "publishedAt",
"type": "datetime"
}
]
}Next Steps
Now that you have a basic understanding:
For Content Creators
Learn how to use the Admin Panel effectively
For Developers
Learn how to integrate GitCMS into your apps
Need Help?
- Documentation: Browse guides in the sidebar
- GitHub Issues: Report bugs
- Discussions: Ask questions
What's Next?
Choose your learning path: