A modern, open-source blog management tool that lets you write, edit, and publish articles to multiple platforms from a single interface. Built with FastAPI and featuring a beautiful markdown editor with live preview.
- Rich Markdown Editor: Write and edit articles with live preview
- Draft Management: Auto-save drafts and version history
- File Upload: Drag and drop markdown files or browse to upload
- Article History: Track all your articles with creation, update, and publish timestamps
- Tag Management: Organize articles with custom tags
- Responsive Design: Works seamlessly on desktop and mobile
- Clean UI: Intuitive interface with Medium-inspired design
- Real-time Preview: See how your article will look as you write
- Smart Notifications: Elegant bottom-right notifications with transparency
- Medium Integration: Publish directly to Medium as draft, public, or unlisted
- Extensible Architecture: Easy to add new publishing platforms
- API-First Design: Built for extensibility and automation
- FastAPI Backend: Modern, fast Python web framework
- TinyDB Storage: Lightweight, document-oriented database
- RESTful API: Clean endpoints for integration
- Open Source: MIT licensed for community contributions
- Python 3.8+
- Medium API token (for Medium publishing)
-
Clone the repository
git clone https://github.com/yourusername/blogflow.git cd blogflow -
Set up virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Configure environment
cp .env.example .env # Edit .env with your Medium API token -
Run the application
python main.py
-
Open your browser Navigate to
http://localhost:8000
- Upload a markdown file or start writing in the editor
- Edit content with live preview
- Add tags and set publish status
- Save drafts automatically or manually
- Publish to your chosen platform
- View History: Access all your articles and drafts
- Edit Existing: Load and modify previous articles
- Track Progress: See creation, update, and publish timestamps
- Delete Articles: Remove unwanted content
- Write your article in the markdown editor
- Preview how it will look
- Configure tags and publish status
- Publish to Medium (or other platforms)
- Track your publishing metrics
- HTML/CSS/JavaScript: Clean, responsive interface
- Markdown Editor: Real-time preview with syntax highlighting
- Drag & Drop: Intuitive file upload system
- History Panel: Article management interface
- FastAPI: Modern Python web framework
- TinyDB: Lightweight document storage
- RESTful API: Clean, extensible endpoints
- Medium API: Publishing integration
{
"title": "Article Title",
"content": "Markdown content...",
"tags": ["tag1", "tag2"],
"publish_status": "draft|public|unlisted",
"created_at": "2025-08-02T17:00:00",
"updated_at": "2025-08-02T17:30:00",
"published_at": "2025-08-02T18:00:00",
"medium_url": "https://medium.com/...",
"word_count": 1500
}POST /save-draft- Save or update article draftGET /history- Get all articles and draftsGET /article/{id}- Get specific articleDELETE /history/{id}- Delete article
POST /publish- Publish article to MediumGET /publish-status- Check publishing status
- β Markdown editor with live preview
- β Draft management and version history
- β Medium publishing integration
- β Article history and management
- β Modern, responsive UI
- π Dev.to Integration: Publish to Dev.to community
- π Hashnode Integration: Publish to Hashnode
- π WordPress Integration: Self-hosted WordPress support
- π Ghost Integration: Ghost CMS publishing
- π Custom API Support: Generic webhook publishing
- π SEO Tools: Meta tags, structured data
- π Image Management: Upload and optimize images
- π Collaboration: Multi-user editing
- π Analytics: Publishing metrics and insights
- π Scheduling: Future publish dates
- π Team Management: User roles and permissions
- π Workflow Automation: Approval processes
- π Content Calendar: Editorial planning
- π API Rate Limiting: Platform-specific limits
- π Backup & Sync: Cross-platform content sync
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Add tests if applicable
- Commit:
git commit -m 'Add amazing feature' - Push:
git push origin feature/amazing-feature - Open a Pull Request
# Clone and setup
git clone https://github.com/yourusername/blogflow.git
cd blogflow
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Run development server
python main.py- New Publishing Platforms: Add support for Dev.to, Hashnode, etc.
- UI/UX Improvements: Enhance the editor and interface
- API Enhancements: Add new endpoints and features
- Documentation: Improve docs and add tutorials
- Testing: Add unit and integration tests
- Performance: Optimize for speed and scalability
- Follow PEP 8 for Python code
- Use meaningful commit messages
- Add docstrings for new functions
- Include tests for new features
This project is licensed under the MIT License - see the LICENSE file for details.
- Medium API for publishing integration
- FastAPI for the excellent web framework
- TinyDB for lightweight data storage
- Marked.js for markdown parsing
- Font Awesome for beautiful icons
- Issues: Report bugs and request features on GitHub
- Discussions: Join community discussions
- Documentation: Check the docs for detailed guides
Made with β€οΈ for the blogging community