---
title: Pogo
description: A centralized version control system that is simple and easy to use
template: splash
hero:
  tagline: A centralized version control system that is simple and easy to use
  image:
    file: ../../assets/logo.svg
  actions:
    - text: Get Started
      link: /guides/getting-started
      icon: right-arrow
      variant: primary
    - text: View on GitHub
      link: https://github.com/pogo-vcs/pogo
      icon: external
---

import { Card, CardGrid } from "@astrojs/starlight/components";

## Why Pogo?

<CardGrid stagger>
  <Card title="Centralized Simplicity" icon="rocket">
    Single source of truth for all your data with a straightforward
    server-client architecture. Easy to deploy on your own servers or a hosted
    VPS.
  </Card>
  <Card title="Cross-Platform" icon="laptop">
    Works consistently across Windows, macOS, and Linux with a unified
    experience.
  </Card>
  <Card title="All File Types" icon="document">
    Robust support for both text and binary files with efficient storage.
  </Card>
  <Card title="Conflict-Friendly" icon="warning">
    Push conflicts to the remote and resolve them later
  </Card>
  <Card title="Go Module Support" icon="seti:go">
    Import a Pogo repository as a Go module, no additional configuration or
    software required.
  </Card>
  <Card title="Bookmarks" icon="open-book">
    Tag versions with bookmarks, like <code>main</code> for the current version
    or <code>v1.0.0</code> for a specific version. <code>main</code> is treated
    like a default branch in Git.
  </Card>
  <Card title="No Named Branches" icon="comment">
    Create branches by adding multiple children to a change and merge them by
    creating a new change with multiple parents. Changes are automaticall named.
  </Card>
</CardGrid>

## Workflow Philosophy

Pogo promotes a simple, efficient workflow:

1. **Describe First**: Think about and document changes before implementation.
2. **Work Iteratively**: Work on changes iteratively and update the description if needed.
3. **Branch Naturally**: Instead of creating branches with fixed naming rules, just create a child change that inherits the parent. Merge by creating a change with more than one parent.
4. **Bookmark Important Versions**: Use bookmarks to mark releases and milestones. Use the `main` bookmark se identify your current development state.

## Watch the intro video

<iframe
  class="video-frame"
  width="560"
  height="315"
  src="https://www.youtube-nocookie.com/embed/W6-YJHy7_A8?si=lLbdbEdpzg2n_79Z"
  frameborder="0"
  allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
  referrerpolicy="strict-origin-when-cross-origin"
  allowfullscreen
></iframe>
