Version: 1.1.0-beta.1 | Updated: February 2026
A powerful, client-side Content Management System (CMS) for managing Markdown/MDX content and images directly on GitHub, Gitea, or Gogs repositories. Built with React 19 and TypeScript, featuring a modern Notion-inspired UI.
| Feature | Description |
|---|---|
| π Multi-Collection | Manage multiple content types (Blog, Docs, Projects) in one workspace |
| π·οΈ Typed Templates | Define schema with String, Date, Boolean, Number, Array, Object |
| π Smart Filtering | Auto-generated filter UI based on your template types |
| π No Backend | Runs entirely in browser, communicates directly with Git APIs |
| π Secure | PAT encrypted with AES-GCM (Web Crypto API), stored in sessionStorage |
| π Multi-Platform | Supports GitHub, Gitea, and Gogs (self-hosted) |
| π i18n Ready | English and Vietnamese support |
| β‘ Optimistic Locking | SHA-check prevents overwriting concurrent changes |
The central hub for content management.
- View Modes: Switch between dense data table or visual card grid.
- Advanced Filtering: Filter by text, date range, tags, booleans, and numbers.
- Smart Sort: Sort by any field defined in your template.
- Quick Actions: Edit frontmatter inline, split-pane Markdown editor, upload/replace files.
Dedicated asset library for managing media files.
- Gallery View: Visual grid with lazy-loaded thumbnails.
- Bulk Upload: Drag & drop multiple images.
- Auto Compression: Client-side optimization (configurable max size/width).
- Public URL: One-click copy for absolute or relative paths.
Define and validate content structure.
- Visual Editor: Define fields and types via dropdown UI.
- Supported Types:
String(Text input)Date(Date picker)Array(Multi-select tags)Boolean(Toggle switch)Number(Numeric input)Object(JSON editor)
- Schema Generation: Auto-generate schema from existing posts.
- Modern browser (Chrome 80+, Firefox 75+, Safari 13.1+)
- Node.js 20.19+ (for local development)
- Git repository on GitHub, Gitea, or Gogs
git clone https://github.com/pageel/pageel-cms.git
cd pageel-cms/core
npm installnpm run devOpen http://localhost:3000 in your browser.
| Provider | Permissions Required |
|---|---|
| GitHub | Contents (Read and Write) |
| Gitea/Gogs | Repo (Read and Write) |
- Select your Git service.
- Enter repository (e.g.,
username/repo). - Paste your access token.
- (Self-hosted) Enter instance URL.
1. Adapter Pattern (IGitService)
Abstracts Git operations for GitHub (GithubAdapter), Gitea (GiteaAdapter), and Gogs (GogsAdapter).
2. Client-Side Encryption
- Personal Access Tokens (PAT) are encrypted using AES-GCM.
- Enrollment key is generated via
crypto.getRandomValues(). - Nothing is ever sent to our servers.
3. State Management
- Zustand for global app state.
- IndexedDB / localStorage for settings and cache.
- URL Query Params for deep linking state.
| Product | Type | Purpose |
|---|---|---|
| Pageel CMS | OSS (MIT) | Git-native CMS for content & media |
| Pageel Workhub | Commercial | Team workspace: workflow, review, permissions |
Pageel CMS focuses on content. For team collaboration features, see Pageel Workhub.
Contributions are welcome! Please see our Contributing Guide for details.
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License. See the LICENSES.md file for details.
Made with βοΈ by Pageel
