# PortaGit PortaGit is a lightweight, self-hosted Git portfolio and repository viewer designed to showcase your work with a beautiful, modern interface. Built with Go, it offers a personal GitHub-like experience that you can host anywhere. ![PortaGit Preview](https://git.rainbowyoshi.fr/RainbowYoshi/PortaGit/raw/branch/main/web/static/logo.png) ## Features - **👀 Repository Viewer**: Browse your files, commit history, and branches with a clean UI. - **📊 Contribution Graph**: Visualize your coding activity with a GitHub-style contribution calendar. - **🎨 Modern Design**: Sleek dark mode interface with responsive layout and smooth transitions. - **🛠️ Easy Setup**: Built-in setup wizard to configure your profile, bio, and social links. - **📝 Markdown Support**: Renders `README.md` files automatically. - **📁 File Management**: Create files, folders, and upload assets directly through the web interface. - **⚙️ Customizable**: personalize your profile, accent colors, and more. ## Installation ### Prerequisites - [Go](https://go.dev/dl/) 1.19 or higher - Git installed on your system ### Build from Source 1. Clone the repository: ```bash git clone https://github.com/yourusername/PortaGit.git cd PortaGit ``` 2. Build the application: ```bash go build -o portagit ``` 3. Run the application: ```bash ./portagit ``` 4. Open your browser and navigate to `http://localhost:8080`. ## Configuration On the first run, PortaGit will launch a **Setup Wizard** allowing you to: - Set your display name and bio. - Import data from your GitHub profile. - Configure themes and appearance. The configuration is stored in a `portagit.json` file in the root directory. ## Project Structure - `main.go`: Application entry point and HTTP server. - `git_utils.go`: Helper functions for interacting with Git repositories. - `web/`: Contains HTML templates and static assets (CSS, JS). - `repositories/`: Directory where your git repositories are stored (created automatically). ## Contributing Contributions are welcome! Feel free to open issues or submit pull requests.