# Gitote

[![Build](https://gitlab.com/gitote/ci/badges/production/pipeline.svg)](https://gitote.in/gitote/gitote)
[![Go Report](https://goreportcard.com/badge/gitote.in/gitote/gitote)](https://goreportcard.com/report/gitote.in/gitote/gitote)
[![Bountysource](https://img.shields.io/bountysource/team/gitote/activity.svg)](https://www.bountysource.com/teams/gitote)
[![Website Status](https://img.shields.io/website-up-down-green-red/http/gitote.in.svg?label=status)](https://gitote.in)

#### Software version control made simple!

Welcome to the [gitote](https://gitote.in) codebase. We are so excited to have you. With your help, we can build out Gitote to be more stable and better serve our platform.

## What is gitote?

[Gitote](https://gitote.in) is an open source end-to-end software development platform with built-in version control, issue tracking, code review, and more.

## Contributing

We expect contributors to abide by our underlying [code of conduct](CONDUCT.md). All conversations and discussions on Gitote (issues, pull requests) and across Gitote must be respectful and harassment-free.

### Where to contribute

When in doubt, ask a [core team member](#core-team)! You can mention us in any issues . Any issue with [`Good first Issue`](https://gitote.in/gitote/gitote/issues?labels=9) tag is typically a good place to start.

**Refactoring** code, e.g. improving the code without modifying the behavior is an area that can probably be done based on intuition and may not require much communication to be merged.

**Fixing bugs** may also not require a lot of communication, but the more the better. Please surround bug fixes with ample tests. Bugs are magnets for other bugs. Write tests near bugs!

**Building features** is the area which will require the most communication and/or negotiation. Every feature is subjective and open for debate. As always, when in doubt, ask!

### How to contribute

1.  Fork the project & clone locally. Follow the initial setup [here](docs/INSTALLATION.md).
2.  Create a branch, naming it either a feature or bug: `git checkout -b feature/that-new-feature` or `bug/fixing-that-bug`
3.  Code and commit your changes. Bonus points if you write a [good commit message](https://chris.beams.io/posts/git-commit/): `git commit -m 'Add some feature'`
4.  Push to the branch: `git push origin feature/that-new-feature`
5.  [Create a pull request](#create-a-pull-request) for your branch 🎉

## Contribution guideline

### Create an issue

Nobody's perfect. Something doesn't work? Or could be done better? Let us know by creating an issue.

PS: a clear and detailed issue gets lots of love, all you have to do is follow the issue template!

#### Clean code with tests

Some existing code may be poorly written or untested, so we must have more scrutiny going forward. We test with **go test**, let us know if you have any questions about this!

#### Create a pull request

* Try to keep the pull requests small. A pull request should try its very best to address only a single concern.
* Make sure all tests pass and add additional tests for the code you submit.
* Document your reasoning behind the changes. Explain why you wrote the code in the way you did. The code should explain what it does.
* If there's an existing issue related to the pull request, reference to it by adding something like `References/Closes/Resolves #305`, where 305 is the issue number.
* If you follow the pull request template, you can't go wrong.

## Codebase

### The stack

#### Open Source

- [GoLang](https://golang.org/)
- [PostgreSQL](https://www.postgresql.org/)
- [Semantic UI](https://semantic-ui.com/)
- [jQuery](https://jquery.com/)

#### Infra/Services

- [Gitote](https://gitote.in) - VCS
- [DigitalOcean](https://m.do.co/c/1ddec8d50826) - Hosting
- [Ubuntu 18.10 x64](https://www.ubuntu.com/) - Operating System
- [NGINX](https://www.nginx.com/) - Server
- [Let's Encrypt](https://letsencrypt.org/) - SSL
- [Google Analytics](https://analytics.google.com/analytics/web/) - Web Analytics
- [GitLab CI](https://about.gitlab.com/product/continuous-integration/) - Continuous Integration
- [BrowserStack](https://www.browserstack.com) - Cross-platform Browser testing
- [jsDelivr](https://www.jsdelivr.com/) - Static Assets CDN
- [Gravatar](https://gravatar.com/) - Globally Recognized Avatar
- [Heroku Toolbelt](https://blog.heroku.com/the_heroku_toolbelt) - For development(one-click launch)

#### Ops

- OteBot _under development_ **Similar to GitHub's Hubot**
- [Slack](https://gitote.slack.com/)

Additional technologies and services are listed on [our stackshare](https://stackshare.com/gitote).

## Features

- Activity timeline
- **SSH** and **HTTP/HTTPS** protocols
- Account/Organization/Repository management
- Add/Remove repository collaborators
- Repository/Organization **webhooks** (including Slack and Discord)
- Repository **Git hooks/deploy keys**
- Repository **issues**, **pull requests**, **wiki** and **protected branches**
- **Migrate** and **mirror** repository and its wiki
- **Web editor** for repository files and wiki
- **Jupyter Notebook**
- **Two-factor authentication**
- **Gravatar** and **Federated avatar** with custom source
- **Mail** service

## Core team

<table>
  <tr>
    <td>
      <a href="https://twitter.com/yogicodes">
        <img src="https://s.gravatar.com/avatar/18d22b6c2ffd6547a095cd734770fb44?s=100">
      </a>
      <h4 align="center"><a href="https://twitter.com/yogicodes">Yoginth</a></h4>
    </td>
    <td>
      <a href="https://twitter.com/GitoteHQ">
        <img src="https://s.gravatar.com/avatar/894559413cde06d4aacc1a05bd7f3205?s=100">
      </a>
      <h4 align="center"><a href="https://twitter.com/GitoteHQ">OteBot</a></h4>
    </td>
  </tr>
</table>

## Sponsors

<p>
  <a href="https://browserstack.com?utm_source=Gitote" target="_blank">
    <img src="https://cdn.jsdelivr.net/npm/gitote@1.1.7/img/sponsors/browserstack.png">
  </a>
</p>
<br/>
<p>
  <a href="https://m.do.co/c/1ddec8d50826">
    <img src="https://cdn.jsdelivr.net/npm/gitote@1.1.7/img/sponsors/digitalocean.png">
  </a>
</p>

## License

This program is free software: you can redistribute it and/or modify it under the terms of the **MIT License**. Please see the [LICENSE](https://gitote.in/gitote/gitote/src/master/LICENSE) file in our repository for the full text.

###### Happy Coding ❤️
