https://github.com/steven-ld/powerwiki
PowerWiki โ A modern Git-based Markdown wiki with auto-sync
https://github.com/steven-ld/powerwiki
expressjs feishu-style git-based-wiki knowledge-base lightweight-wiki markdown markdown-wiki nodejs notion-alternative obsidian-alternative open-source-wiki personal-wiki self-hosted self-hosted-wiki wiki-software
Last synced: about 2 months ago
JSON representation
PowerWiki โ A modern Git-based Markdown wiki with auto-sync
- Host: GitHub
- URL: https://github.com/steven-ld/powerwiki
- Owner: steven-ld
- License: mit
- Created: 2025-12-21T06:05:37.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2026-03-05T06:32:44.000Z (3 months ago)
- Last Synced: 2026-03-05T11:33:32.303Z (3 months ago)
- Topics: expressjs, feishu-style, git-based-wiki, knowledge-base, lightweight-wiki, markdown, markdown-wiki, nodejs, notion-alternative, obsidian-alternative, open-source-wiki, personal-wiki, self-hosted, self-hosted-wiki, wiki-software
- Language: JavaScript
- Homepage: https://ga666666.cn
- Size: 330 KB
- Stars: 6
- Watchers: 0
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PowerWiki



A modern Git-based Markdown wiki system with auto-sync, syntax highlighting, and Feishu-style UI.
**๐ Live Demo: [https://powerwiki.ga666666.cn](https://powerwiki.ga666666.cn)**
[English](README.md) โข [ไธญๆ](README_ZH.md) โข [ๆฅๆฌ่ช](docs/README_JA.md) โข [ํ๊ตญ์ด](docs/README_KO.md) โข [Espaรฑol](docs/README_ES.md) โข [Franรงais](docs/README_FR.md) โข [Deutsch](docs/README_DE.md) โข [ะ ัััะบะธะน](docs/README_RU.md)
---
## ๐ก Design Philosophy
PowerWiki was born from deep reflection on "knowledge management" and "technical writing". We believe in:
### 1. Simplicity is Power
No over-engineering, no complex wheels. Markdown + Git is the simplest knowledge management solution proven over a decade. No database, back to file systems, keeping knowledge pure.
### 2. Geeks First
Tailor-made for developers. Syntax highlighting, local image support, Git workflow โ every feature comes from real development scenarios.
### 3. Out of the Box
Zero learning cost to get started. Clone and use, push and update. No complex configuration, no dedicated CMS required.
### 4. Persistence & Portability
Your data always belongs to you. Plain text storage, version control built-in, migrate to any platform anytime.
### 5. Privacy & Security
No registration, no cloud. All data stored in an environment you control.
---
## โจ Features
- **Auto Sync** - Automatically sync from Git repositories
- **Syntax Highlighting** - Code highlighting powered by highlight.js
- **Responsive Design** - Works on all devices
- **Auto TOC** - Automatic table of contents generation
- **Modern UI** - Clean and intuitive interface
- **PDF Support** - Render PDF files as images
- **View Statistics** - Track article views
- **Lightweight** - No database required
- **SEO Optimized** - Full SEO optimization
- **Frontmatter Support** - Parse YAML metadata
- **Local Images** - Support for local images in Markdown
- **Multi-language** - Chinese and English support
- **Docker Ready** - Full Docker support
## ๐ Quick Start
### Prerequisites
- Node.js >= 14.0.0
- Git
### Option 1: Docker (Recommended)
```bash
# Clone the repository
git clone https://github.com/steven-ld/PowerWiki.git
cd PowerWiki
# Create config file
cp config.example.json config.json
# Edit config.json with your Git repository URL
# Start with Docker Compose
docker-compose up -d
```
### Option 2: Node.js
```bash
# Clone the repository
git clone https://github.com/steven-ld/PowerWiki.git
cd PowerWiki
# Install dependencies
npm install
# Create config file
cp config.example.json config.json
# Edit config.json with your Git repository URL
# Start the server
npm start
```
Visit `http://localhost:3150` in your browser.
## โ๏ธ Configuration
Edit `config.json`:
```json
{
"gitRepo": "https://github.com/your-username/your-wiki-repo.git",
"repoBranch": "main",
"port": 3150,
"siteTitle": "My Wiki",
"siteDescription": "Knowledge Base",
"autoSyncInterval": 180000,
"pages": {
"home": "README.md",
"about": "ABOUT.md"
}
}
```
| Option | Description | Default |
|--------|-------------|---------|
| `gitRepo` | Git repository URL | - |
| `repoBranch` | Branch name | `main` |
| `mdPath` | Markdown files subdirectory | `""` |
| `port` | Server port | `3150` |
| `siteTitle` | Site title | `PowerWiki` |
| `siteDescription` | Site description | `Wiki` |
| `autoSyncInterval` | Auto sync interval (ms) | `180000` |
| `sortOrder` | Sort order (`modified` or `name`) | `modified` |
| `pages.home` | Home page file | `""` |
| `pages.about` | About page file | `""` |
## ๐ Environment Variables
PowerWiki supports environment variables for flexible deployment:
```bash
# Configuration file path
CONFIG_PATH=/path/to/your/config.json
# Data storage directory (for stats and logs)
DATA_DIR=/path/to/data/directory
# Git repository cache directory
GIT_CACHE_DIR=/path/to/git/cache
# Language setting (zh-CN or en)
LANG=zh-CN
```
Copy `.env.example` to `.env` and customize as needed.
## ๐ณ Docker Deployment
### Docker Image
**[@sayunchuan](https://github.com/sayunchuan)** provides a Docker image for PowerWiki.
- **Image**: `sayunchuan/powerwiki`
- **Docker Hub**: [sayunchuan/powerwiki](https://hub.docker.com/r/sayunchuan/powerwiki)
- **Tags**: `latest`, `1.4.5`, `20260207`
### Quick Start
```bash
# Simplest way
docker run -d -p 3150:3150 sayunchuan/powerwiki
# With custom config
docker run -d \
--name powerwiki \
-p 3150:3150 \
-v $(pwd)/config.json:/app/config.json:ro \
-v powerwiki_data:/app/data \
-v powerwiki_cache:/app/cache \
sayunchuan/powerwiki
```
### Docker Compose
```yaml
version: '3.8'
services:
powerwiki:
image: sayunchuan/powerwiki:latest
ports:
- "3150:3150"
environment:
- NODE_ENV=production
- LANG=zh-CN
volumes:
- ./config.json:/app/config.json:ro
- powerwiki_data:/app/data
- powerwiki_cache:/app/cache
restart: unless-stopped
volumes:
powerwiki_data:
powerwiki_cache:
```
```bash
# Start services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
```
**Acknowledgment**: Thanks to [@sayunchuan](https://github.com/sayunchuan) for providing the Docker image, making PowerWiki deployment more convenient.
## ๐ Article Organization
PowerWiki supports hierarchical folder structure for organizing articles:
```
your-wiki-repo/
โโโ README.md # Home page
โโโ ABOUT.md # About page
โโโ images/ # Global images (optional)
โโโ Architecture/ # Category folder
โ โโโ images/ # Category images
โ โโโ IoT-Device-Standards.md
โ โโโ TLS-Encryption.md
โ โโโ README.md # Category index
โโโ Projects/ # Another category
โ โโโ images/
โ โโโ URL-Shortener.md
โ โโโ README.md
โโโ Media/
โโโ images/
โโโ WebRTC-Signaling.md
โโโ README.md
```
### Article Frontmatter
Each article can include YAML frontmatter for metadata:
```yaml
---
title: Article Title
description: Article description for SEO
author: Author Name
date: 2026-01-10
updated: 2026-01-10
keywords: keyword1, keyword2, keyword3
tags: [tag1, tag2]
---
```
### Image References
PowerWiki supports referencing local images using relative paths in Markdown. The system automatically converts image paths to accessible API URLs:
```markdown
# Method 1: Using images folder in current directory (recommended)

# Method 2: Using parent directory's images folder

# Method 3: Using absolute path (relative to repo root)

# Method 4: Direct reference (without ./ or ../ prefix)

```
Supported image formats: `PNG`, `JPG/JPEG`, `GIF`, `WEBP`, `SVG`, `ICO`
## ๐ Multi-language Support
PowerWiki supports multiple languages for console output and allows users to customize language packs.
### Supported Languages
- **Chinese Simplified** (`zh-CN`) - Default
- **English** (`en`)
### Usage
```bash
# Start with English
LANG=en npm start
# Start with Chinese
LANG=zh-CN npm start
# Or use npm scripts
npm run start:en
npm run start:zh
```
### Custom Language Packs
PowerWiki uses JSON files for translations and supports adding custom languages.
#### 1. Create Language File
Create a new language file in the `locales/` directory with the format `.json`:
```bash
# Example: Create Japanese language file
cp locales/en.json locales/ja.json
```
#### 2. Edit Language File
Modify `locales/ja.json` and replace English translations with Japanese:
```json
{
"siteTitle": "PowerWiki",
"siteDescription": "Wiki ใทในใใ ",
"nav": {
"home": "ใใผใ ",
"about": "ๆฆ่ฆ"
},
"content": {
"readingTime": "่ชญใฟๅใๆ้",
"words": "่ช",
"toc": "็ฎๆฌก"
},
"actions": {
"copy": "ใณใใผ",
"copied": "ใณใใผๅฎไบ"
},
"stats": {
"views": "้ฒ่ฆงๆฐ"
},
"footer": {
"poweredBy": "Powered by"
}
}
```
#### 3. Update Console Language Options
Modify `src/config/i18n.js` and add your new language to the `SUPPORTED_LANGUAGES` array:
```javascript
const SUPPORTED_LANGUAGES = [
{ code: 'zh-CN', name: 'ไธญๆ', file: 'zh-CN.json' },
{ code: 'en', name: 'English', file: 'en.json' },
{ code: 'ja', name: 'ๆฅๆฌ่ช', file: 'ja.json' }, // Add Japanese
];
```
#### 4. Use Custom Language
```bash
# Start with Japanese
LANG=ja npm start
```
#### Language File Structure Reference
Language files support the following keys (all are optional, missing keys will fall back to English):
| Category | Key | Description |
|----------|-----|-------------|
| Site | `siteTitle` | Website title |
| Site | `siteDescription` | Website description |
| Nav | `nav.home` | Home link text |
| Nav | `nav.about` | About page link text |
| Content | `content.readingTime` | Reading time label |
| Content | `content.words` | Words unit |
| Content | `content.toc` | Table of contents title |
| Actions | `actions.copy` | Copy button |
| Actions | `actions.copied` | Copied success message |
| Stats | `stats.views` | View count label |
| Footer | `footer.poweredBy` | Powered by text |
## ๐ ๏ธ Development
### Available Scripts
```bash
# Development
npm run dev # Start with nodemon
npm run test:env # Test environment variables
# Docker
npm run docker:build # Build Docker image
npm run docker:run # Run Docker container
npm run docker:stop # Stop and remove container
npm run docker:logs # View container logs
# Language variants
npm run start:en # Start with English
npm run start:zh # Start with Chinese
```
### Project Structure
```
PowerWiki/
โโโ src/ # Source code
โ โโโ index.js # Express server entry
โ โโโ routes/ # Route modules
โ โ โโโ api.js # API routes
โ โ โโโ feeds.js # RSS/Sitemap routes
โ โ โโโ static.js # Static file routes
โ โโโ config/ # Configuration
โ โ โโโ env.js # Environment variables
โ โ โโโ i18n.js # Internationalization
โ โโโ utils/ # Utility modules
โ โโโ cacheManager.js # Cache management
โ โโโ gitManager.js # Git operations
โ โโโ markdownParser.js# Markdown parser
โโโ locales/ # Translation files
โ โโโ zh-CN.json # Chinese translations
โ โโโ en.json # English translations
โโโ templates/ # HTML templates
โ โโโ header.html # Header template
โ โโโ footer.html # Footer template
โ โโโ home.html # Home template
โโโ public/ # Static assets
โ โโโ index.html # Frontend HTML
โ โโโ app.js # Main entry (modular)
โ โโโ js/ # JavaScript modules
โ โ โโโ theme.js # Theme management
โ โ โโโ i18n.js # Internationalization
โ โ โโโ cache.js # Client caching
โ โ โโโ utils.js # Utilities
โ โ โโโ posts.js # Post list & tree
โ โ โโโ article.js # Article rendering
โ โ โโโ toc.js # Table of contents
โ โ โโโ media.js # Code copy, images, PDF
โ โโโ css/ # CSS modules
โ โโโ base.css # Base styles & variables
โ โโโ layout.css # Layout (sidebar, header)
โ โโโ sidebar.css # Navigation menu
โ โโโ article.css # Article & Markdown
โ โโโ toc.css # Table of contents
โ โโโ media.css # Responsive design
โ โโโ components.css # UI components
โโโ config.example.json # Config template
โโโ package.json # Dependencies
โโโ Dockerfile # Docker configuration
โโโ docker-compose.yml # Docker Compose
```
## ๐ ๏ธ Tech Stack
- **Backend**: Express.js
- **Frontend**: Vanilla JavaScript
- **Git**: simple-git
- **Markdown**: marked + highlight.js
- **PDF**: pdfjs-dist
- **Containerization**: Docker
## ๐ License
MIT License - see [LICENSE](LICENSE) for details.
## ๐ฅ Contributors
- [@sayunchuan](https://github.com/sayunchuan) - Add multi-language, Mermaid support, fix various issues
## ๐ Credits
- [Express.js](https://expressjs.com/)
- [marked](https://marked.js.org/)
- [highlight.js](https://highlightjs.org/)
- [simple-git](https://github.com/steveukx/git-js)
- [PDF.js](https://mozilla.github.io/pdf.js/)
---
**If this project helps you, please give it a โญ Star!**