Git-based version control for writers and writing teams
GitWrite brings Git's powerful version control to writers through an intuitive, writer-friendly interface. Built on top of Git's proven technology, it maintains full compatibility with existing Git repositories and hosting services while making version control accessible to non-technical writers.
For Writers:
- Track every revision of your manuscript with meaningful history
- Experiment with different versions without fear of losing work
- Collaborate seamlessly with editors, beta readers, and co-authors
- Get feedback through an intuitive annotation system
- Export to multiple formats (EPUB, PDF, DOCX) at any point in your writing journey
For Editors & Publishers:
- Review and suggest changes using familiar editorial workflows
- Maintain version control throughout the publishing process
- Enable beta readers to provide structured feedback
- Integrate with existing Git-based development workflows
For Developers:
- All GitWrite repositories are standard Git repositories
- Use GitWrite alongside existing Git tools and workflows
- Integrate with any Git hosting service (GitHub, GitLab, Bitbucket)
- No vendor lock-in - repositories remain Git-compatible
- Simple Commands:
gitwrite save "Finished chapter 3"
instead ofgit add . && git commit -m "..."
- Intuitive Terminology: "explorations" instead of "branches", "save" instead of "commit"
- Word-by-Word Comparison: See exactly what changed between versions at the word level
- Visual Diff Viewer: Compare versions side-by-side with highlighting
- Author Control: Repository owners maintain ultimate control over the main manuscript
- Editorial Workflows: Role-based permissions for editors, copy editors, and proofreaders
- Selective Integration: Cherry-pick individual changes from editors using Git's proven mechanisms
- Beta Reader Feedback: Export to EPUB, collect annotations, sync back as Git commits
- Command Line: Full-featured CLI for power users
- Web Application: Modern browser-based interface
- Mobile App: EPUB reader with annotation capabilities
- REST API: Integration with writing tools and services
- TypeScript SDK: Easy integration for developers
- Full Git Compatibility: Works with any Git hosting service
- Standard Git Operations: Use
git
commands alongsidegitwrite
commands - Hosting Service Features: Leverage GitHub/GitLab pull requests, branch protection, and more
- Developer Friendly: Integrate with existing development workflows
# Install GitWrite CLI (when available)
pip install git-write
# Or install from source
git clone https://github.com/eristoddle/git-write.git
cd git-write
pip install -e .
Note: GitWrite is currently in development. Installation instructions will be updated as the project progresses.
# Start a new writing project
gitwrite init "my-novel"
cd my-novel
# Create your first file
echo "# Chapter 1\n\nIt was a dark and stormy night..." > chapter1.md
# Save your progress
gitwrite save "Started Chapter 1"
# See your history
gitwrite history
# Create an alternative version to experiment
gitwrite explore "alternate-opening"
echo "# Chapter 1\n\nThe sun was shining brightly..." > chapter1.md
gitwrite save "Trying a different opening"
# Switch back to main version
gitwrite switch main
# Compare the versions
gitwrite compare main alternate-opening
# Editor creates their own branch for suggestions
git checkout -b editor-suggestions
# Editor makes changes and commits them
# Author reviews editor's changes individually
gitwrite review editor-suggestions
# Author selectively accepts changes
gitwrite cherry-pick abc1234 # Accept this specific change
gitwrite cherry-pick def5678 --modify # Accept this change with modifications
# Merge accepted changes
gitwrite merge editor-suggestions
# Export manuscript for beta readers
gitwrite export epub --version v1.0
# Beta reader annotations automatically create commits in their branch
# Author reviews and integrates feedback
gitwrite review beta-reader-jane
gitwrite cherry-pick selected-feedback-commits
- Coming Soon!
GitWrite is built as a multi-component platform:
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Web Client β β Mobile Reader β β Writing Tools β
β (React/TS) β β (React Native) β β (3rd Party) β
βββββββββββ¬ββββββββ βββββββββββ¬ββββββββ βββββββββββ¬ββββββββ
β β β
ββββββββββββββββββββββββΌβββββββββββββββββββββββ
β
βββββββββββββΌββββββββββββ
β TypeScript SDK β
β (npm package) β
βββββββββββββ¬ββββββββββββ
β
βββββββββββββΌββββββββββββ
β REST API β
β (FastAPI/Python) β
βββββββββββββ¬ββββββββββββ
β
βββββββββββββΌββββββββββββ
β GitWrite CLI β
β (Python Click) β
βββββββββββββ¬ββββββββββββ
β
βββββββββββββΌββββββββββββ
β Git Core β
β (libgit2/pygit2) β
βββββββββββββββββββββββββ
- Python 3.9+
- Node.js 16+
- Git 2.20+
- Docker (for development environment)
# Clone the repository
git clone https://github.com/eristoddle/git-write.git
cd git-write
# Start the api server from the root directory
poetry run uvicorn gitwrite_api.main:app --reload
# Run the frontend app
cd gitwrite-web && npm run dev
The app has a fake database for dev login:
- Owner:
- username: johndoe
- password: secret
- Editor:
- username: editoruser
- password: editpass
- Writer:
- username: writeruser
- password: writerpass
- Beta Reader:
- username: betauser
- password: betapass
Note: Development setup instructions will be updated as the project structure is finalized.
git-write/
βββ README.md # This file
βββ LICENSE # MIT License
βββ .gitignore # Git ignore rules
βββ requirements.txt # Python dependencies
βββ setup.py # Package setup
βββ src/ # Source code
β βββ gitwrite/ # Main package
βββ tests/ # Test files
βββ docs/ # Documentation
βββ examples/ # Example projects and usage
Note: The actual project structure may differ. Please check the repository directly for the current organization.
We welcome contributions! Please see our Contributing Guide for details.
- π Bug Reports: Found a bug? Open an issue
- π Documentation: Help improve our docs
- π§ Code: Submit pull requests for bug fixes or features
- π§ͺ Testing: Help test new features and report issues
- π¨ Design: Improve user interface and experience
- Novel Writing: Track character development, plot changes, and multiple endings
- Short Stories: Maintain collections with version history
- Collaborative Fiction: Co-author stories with real-time collaboration
- Research Papers: Track citations, methodology changes, and revisions
- Dissertations: Manage chapters, advisor feedback, and committee suggestions
- Grant Proposals: Version control for funding applications
- Content Marketing: Track blog posts, whitepapers, and marketing copy
- Technical Documentation: Maintain software documentation with code integration
- Journalism: Version control for articles and investigative pieces
- Manuscript Management: Track submissions through editorial process
- Multi-Author Projects: Coordinate anthology and collection projects
- Quality Control: Systematic review and approval workflows
GitWrite integrates with popular writing and development tools:
- Git Hosting: GitHub, GitLab, Bitbucket, SourceForge
- Export Formats: Pandoc integration for EPUB, PDF, DOCX, HTML
- Publishing Platforms: Integration APIs for self-publishing platforms
- Core Git integration and CLI
- Word-by-word diff engine
- Basic project management commands
- Git repository compatibility
- Writer-friendly command interface
- Web interface
- Mobile EPUB reader
- Beta reader workflow
- TypeScript SDK
- Git hosting service integration
- Advanced selective merge interface
- Plugin system for writing tools
- Real-time collaboration features
- Advanced export options
- Workflow automation
- AI-powered writing assistance integration
- Advanced analytics and insights
- Team management features
- Enterprise deployment options
Note: This project is in early development. Features and timelines may change based on community feedback and development progress.
This project is licensed under the MIT License - see the LICENSE file for details.
Made with β€οΈ for writers everywhere
GitWrite: Where every word matters, and every change is remembered.