Skip to content

sleeeeeep321/git-write

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GitWrite

Git-based version control for writers and writing teams

License: MIT Python 3.9+ TypeScript PRs Welcome

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.

🎯 Why GitWrite?

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

✨ Key Features

πŸ“ Writer-Friendly Interface

  • Simple Commands: gitwrite save "Finished chapter 3" instead of git 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

🀝 Collaborative Writing

  • 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

πŸ”§ Multiple Interfaces

  • 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

🌐 Git Ecosystem Integration

  • Full Git Compatibility: Works with any Git hosting service
  • Standard Git Operations: Use git commands alongside gitwrite commands
  • Hosting Service Features: Leverage GitHub/GitLab pull requests, branch protection, and more
  • Developer Friendly: Integrate with existing development workflows

πŸš€ Quick Start

Installation

# 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.

Your First Writing Project

# 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

Working with Editors

# 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

Beta Reader Workflow

# 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

πŸ“š Documentation

  • Coming Soon!

πŸ—οΈ Architecture

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)    β”‚
                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Development

Prerequisites

  • Python 3.9+
  • Node.js 16+
  • Git 2.20+
  • Docker (for development environment)

Setup 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.

Project Structure

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.

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Ways to Contribute

  • πŸ› 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

🌟 Use Cases

Fiction Writers

  • 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

Academic Writers

  • Research Papers: Track citations, methodology changes, and revisions
  • Dissertations: Manage chapters, advisor feedback, and committee suggestions
  • Grant Proposals: Version control for funding applications

Professional Writers

  • 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

Publishers & Editors

  • Manuscript Management: Track submissions through editorial process
  • Multi-Author Projects: Coordinate anthology and collection projects
  • Quality Control: Systematic review and approval workflows

πŸ”— Integrations

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

πŸ“Š Roadmap

Core Features (In Development)

  • Core Git integration and CLI
  • Word-by-word diff engine
  • Basic project management commands
  • Git repository compatibility
  • Writer-friendly command interface

Planned Features

  • 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

Future Enhancements

  • 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.

πŸ“„ License

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.

About

An abstraction over git for writers, editors, and beta readers

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 80.3%
  • TypeScript 18.1%
  • Shell 0.7%
  • CSS 0.5%
  • Dockerfile 0.2%
  • JavaScript 0.2%