123 lines
2.3 KiB
Markdown
123 lines
2.3 KiB
Markdown
# Markdown Blog
|
|
|
|
A modern, cross-platform blog system built with **Next.js**, **Markdown**, and **Electron**. Write posts in Markdown, manage content visually, and deploy to web or desktop.
|
|
|
|
---
|
|
|
|
## 🚀 Features
|
|
|
|
- Write and organize posts in Markdown
|
|
- Visual admin dashboard
|
|
- Responsive UI (Tailwind CSS)
|
|
- Electron desktop app
|
|
- Dockerized deployment with persistent storage
|
|
- Secure admin password (bcrypt)
|
|
|
|
---
|
|
|
|
## 🛠️ Technologies
|
|
|
|
- Next.js 14
|
|
- TypeScript
|
|
- Tailwind CSS
|
|
- Electron
|
|
- Docker
|
|
|
|
---
|
|
|
|
## 📦 Project Structure
|
|
|
|
```
|
|
markdownblog/
|
|
├── posts/ # Markdown blog posts
|
|
├── src/ # Next.js app code
|
|
├── electron/ # Desktop app code
|
|
├── public/ # Static assets
|
|
├── Dockerfile # Docker configuration
|
|
├── .dockerignore # Docker ignore rules
|
|
└── manage_container.sh # Docker management script
|
|
```
|
|
|
|
---
|
|
|
|
## ⚡ Getting Started
|
|
|
|
### Prerequisites
|
|
|
|
- Node.js 18+
|
|
- npm
|
|
- Docker (for containerized deployment)
|
|
|
|
---
|
|
|
|
## 🖥️ Local Development
|
|
|
|
```bash
|
|
git clone <repo-url>
|
|
cd markdownblog
|
|
npm install
|
|
npm run dev
|
|
```
|
|
- Visit [http://localhost:3000](http://localhost:3000) in your browser.
|
|
|
|
### Build for Production (Local)
|
|
|
|
```bash
|
|
npm run build
|
|
npm start
|
|
```
|
|
|
|
---
|
|
|
|
## 🐳 Docker Deployment
|
|
|
|
### Build the Docker Image
|
|
|
|
```bash
|
|
docker build -t markdownblog .
|
|
```
|
|
|
|
### Run the Container with Persistent Storage
|
|
|
|
```bash
|
|
docker run -p 8080:3000 -v markdownblog-posts:/app/docker markdownblog
|
|
```
|
|
- The app will be available at [http://localhost:8080](http://localhost:8080)
|
|
- All posts are stored persistently in the Docker volume `markdownblog-posts` (mapped to `/app/docker` in the container).
|
|
|
|
#### Using a Host Directory for Posts
|
|
|
|
```bash
|
|
docker run -p 8080:3000 -v /absolute/path/to/posts:/app/docker markdownblog
|
|
```
|
|
|
|
---
|
|
|
|
## 📝 Writing Posts
|
|
|
|
- Add Markdown files to the `posts/` directory (or the mounted volume).
|
|
- Each post should have frontmatter:
|
|
|
|
```markdown
|
|
---
|
|
title: "Your Post Title"
|
|
date: "YYYY-MM-DD"
|
|
tags: ["tag1", "tag2"]
|
|
summary: "A brief summary of your post"
|
|
---
|
|
|
|
Your post content here...
|
|
```
|
|
|
|
---
|
|
|
|
## 🔒 Admin Password Security
|
|
|
|
- Admin password is securely hashed with bcrypt and stored in `posts/admin.json`.
|
|
- Never commit your `posts/admin.json` file.
|
|
|
|
---
|
|
|
|
## 📄 License
|
|
|
|
MIT |