🐥 Sturdy is an open-source, real-time, version control platform for startups

Overview

Go Report Card Releases Discord

Welcome to Sturdy! 📣 🐣

Real-time code collaboration.

Sturdy is an open-source version control platform that allows you to interact with your code at a higher abstraction level.

Features

  • Interact with version control at a higher abstraction level (e.g. no need for pushing, pulling, stashing etc.)
  • Discover work-in-progress code within your team in real-time
  • Try your teammate's code locally with a single click
  • Suggest code changes / ideas to a colleague by simply typing in your IDE
  • Cloud or self-hosted!
  • Enhance your existing GitHub setup, or break free and use standalone Sturdy
Sturdy.Workflow.mp4

Versions

  • Sturdy Cloud - Lets you use all Sturdy features, fully managed by the team behind Sturdy. Ship code to your projects, review, and ship code. Using 100% Sturdy, or Sturdy on top of GitHub. Get started for free.
  • Sturdy Enterprise - Run Sturdy in your own environment.
  • Sturdy OSS - The fully Open Source version of Sturdy! Provides all the core functionality for free, and completely Open Source.

Get Started

Want to run Sturdy on your machine?

docker run --interactive \
    --pull always \
    --publish 30080:80 \
    --volume "$HOME/.sturdydata:/var/data" \
    getsturdy/server

Learn more

See the Sturdy Docs to learn more about Sturdy and why it's cool!

Development

See README_DEVELOPMENT.md for instructions of how to build and develop Sturdy.

We're hiring!

Come and help make Sturdy even better! We're growing and are hiring for multiple positions.

License

This repository contains both OSS-licensed and non-OSS-licensed files.

All files under any directory named enterprise fall under LICENSE.enterprise.

The remaining files are licensed under Apache License, Version 2.0.

Issues
  • How to

    How to "undo"

    I commited one pack of changes, pushed to PR.

    Now I made few changes in the same PR, but I would like to undo them, because they were draft.

    Normally in Git I would use git reset --hard HEAD or something, but my codebase is not a "repository", and in Sturdy I see undo button, but it shows all changes made in the PR, not the latest pack of them.

    So how can I actually undo latest working tree changes?

    opened by soanvig 10
  • test: use `T.TempDir` to create temporary test directory

    test: use `T.TempDir` to create temporary test directory

    A testing cleanup.

    This pull request replaces ioutil.TempDir with t.TempDir. We can use the T.TempDir function from the testing package to create temporary directory. The directory created by T.TempDir is automatically removed when the test and all its subtests complete.

    Reference: https://pkg.go.dev/testing#T.TempDir

    func TestFoo(t *testing.T) {
    	// before
    	tmpDir, err := ioutil.TempDir("", "")
    	require.NoError(t, err)
    	defer require.NoError(os.RemoveAll(tmpDir))
    
    	// now
    	tmpDir := t.TempDir()
    }
    
    cla-signed 
    opened by Juneezee 7
  • build(deps): bump prismjs from 1.25.0 to 1.27.0 in /web

    build(deps): bump prismjs from 1.25.0 to 1.27.0 in /web

    Bumps prismjs from 1.25.0 to 1.27.0.

    Release notes

    Sourced from prismjs's releases.

    v1.27.0

    Release 1.27.0

    v1.26.0

    Release 1.26.0

    Changelog

    Sourced from prismjs's changelog.

    1.27.0 (2022-02-17)

    New components

    Updated components

    Updated plugins

    Other

    • Core
      • Added better error message for missing grammars (#3311) 2cc4660b

    1.26.0 (2022-01-06)

    New components

    Updated components

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    cla-signed dependencies javascript 
    opened by dependabot[bot] 6
  • Generic Linux install

    Generic Linux install

    Hello. I see only *.deb or *.rpm packages. I'm using Void Linux distro, therefore these package formats are beyond my range.

    Is it possible to release build instructions (like requirements and so on) for custom Linux distribution or provide AppImage? I just open this for discussion, because that's the issue that you will want to cover sooner or later.

    opened by soanvig 4
  • Archiving GitHub codebase makes it unaccessible

    Archiving GitHub codebase makes it unaccessible

    Hello! I'm testing Sturdy. It looks interesting.

    I encountered a critical problem. I'm using fresh Sturdy version (I cannot check version number, but the one available on getsturdy.com website from 15.03.2022). My platform is Windows.

    1. I connected to GitHub
    2. Connected to one repository and created a codebase for that
    3. Because I selected wrong directory (BTW I expected Sturdy to reuse directory that I had locally, but it created new directory with repository name inside selected one) I archived my codebase
    4. This repository cannot be converted into codebase anymore in any way. I get various errors (the first one is that this repository was archived, then 404 pages, empty pages and generally application is going wild: for example button "Create codebase" stops working until I restart Sturdy).

    Removing Sturdy installation from GitHub and resetuping it again fixed the problem. However my created pull request was not "imported", and I don't how how to actually switch to it using Sturdy (it was imported the first time I tried Sturdy).

    opened by soanvig 4
  • new changelog

    new changelog

    web/changelog: use new changelog page


    This PR was created from Nikita Galaiko's (ngalaiko) workspace on Sturdy.

    Join your team, and code and collaborate on Sturdy, join now!

    Update this PR by making changes through Sturdy.

    cla-signed 
    opened by ngalaiko 3
  • Nikita Galaiko's Workspace

    Nikita Galaiko's Workspace

    test


    This PR was created from Nikita Galaiko's (ngalaiko) workspace on Sturdy.

    Join your team, and code and collaborate on Sturdy, join now!

    Update this PR by making changes through Sturdy.

    cla-signed 
    opened by ngalaiko 3
  • Multiple commits (or alternative workflow)

    Multiple commits (or alternative workflow)

    Is it possible to create multiple commits? It happens, that during one "flow" in one workspace I'm doing few things, that I would like to have commits for to properly trigger for example semantic release. Currently I see that Sturdy is working on one commit basically all the time.

    Side note: Maybe I'm trying to fit Sturdy flow into different flows I know, but currently I have the feeling, that completely obliteraing normal Git flow is actually a suicide, because it kills many possibilities.

    opened by soanvig 2
  • Failed to connect: GitHub authentication failed: invalid code provided

    Failed to connect: GitHub authentication failed: invalid code provided

    Hoy there. I am having some trouble connecting my Sturdy project to GitHub. To reproduce:

    1. Navigate to the Settings page at https://getsturdy.com/user

    2. Click Connect to GitHub

    3. Click Authorize Sturdy Devtools

    4. I am taken to a new page with an xdg-open popup. Clicking Open xdg-open just opens up a new empty Chrome window. hoy2

    5. Clicking continue in browser takes me to the following page: hoy

    Login URL:

    https://github.com/login/oauth/authorize?client_id=Iv1.7166a6dda97db2e0&state=web-%2Fuser
    

    Error page URL:

    https://getsturdy.com/setup-github?code=(20-char hexadecimal string)&state=web-%2Fuser
    

    Client: Web Server: Cloud Browser: Google Chrome Version 99.0.4844.51 (Official Build) (64-bit) OS: Mint

    $ uname -a                                                  
    Linux sebelino-ThinkPad-P43s 5.4.0-100-generic #113-Ubuntu SMP Thu Feb 3 18:43:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
    

    I get the same behavior in the Linux desktop app as well, where the login URL is a little different:

    https://github.com/login/oauth/authorize?client_id=Iv1.7166a6dda97db2e0&state=app-%2Fuser&redirect_uri=sturdy%3A%2F%2F%2Fsetup-github
    
    opened by Sebelino 2
  • Any Git

    Any Git

    api/pkg/remote: add API to push and pull codebases and workspaces to any git-remote

    The API(s) are marked as experimental, as we figure out how things should work.


    This PR was created by Gustav Westling (zegl) on Sturdy.

    Update this PR by making changes through Sturdy.

    cla-signed 
    opened by zegl 2
  • Workspace

    Workspace

    api/pkg/workspace/db: better error messages


    This PR was created from Gustav Westling's (zegl) workspace on Sturdy.

    Join your team, and code and collaborate on Sturdy, join now!

    Update this PR by making changes through Sturdy.

    cla-signed 
    opened by zegl 2
  • build(deps): bump node-fetch from 3.1.0 to 3.1.1 in /app

    build(deps): bump node-fetch from 3.1.0 to 3.1.1 in /app

    Bumps node-fetch from 3.1.0 to 3.1.1.

    Release notes

    Sourced from node-fetch's releases.

    v3.1.1

    Security patch release

    Recommended to upgrade, to not leak sensitive cookie and authentication header information to 3th party host while a redirect occurred

    What's Changed

    New Contributors

    Full Changelog: https://github.com/node-fetch/node-fetch/compare/v3.1.0...v3.1.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    cla-signed dependencies javascript codeball:approved 
    opened by dependabot[bot] 0
  • build(deps): bump terser from 4.8.0 to 4.8.1 in /web

    build(deps): bump terser from 4.8.0 to 4.8.1 in /web

    Bumps terser from 4.8.0 to 4.8.1.

    Changelog

    Sourced from terser's changelog.

    v4.8.1 (backport)

    • Security fix for RegExps that should not be evaluated (regexp DDOS)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    cla-signed dependencies javascript codeball:approved 
    opened by dependabot[bot] 0
Releases(api/v1.8.0)
A go sdk for baidu netdisk open platform 百度网盘开放平台 Go SDK

Pan Go Sdk 该代码库为百度网盘开放平台Go语言的SDK

Jsyz Chen 74 Aug 3, 2022
An easy-to-use unofficial SDK for Feishu and Lark Open Platform

go-lark go-lark is an easy-to-use unofficial SDK for Feishu and Lark Open Platform. go-lark implements messaging APIs, with full-fledged supports on b

go-lark-sdk 106 Aug 6, 2022
Go(lang) client library for Cachet (open source status page system).

cachet Go(lang) client library for Cachet (open source status page system). Features Full API support Components Incidents Metrics Subscribers Various

Andy Grunwald 90 Jan 28, 2022
DiscSpam is the best free and open source tool to spam/raid Discord servers.

DiscSpam Fast, Free, Easy to use Discord.com raid tool Report Bug , Request Feature About The Project There are a few Discord raid tools on GitHub, ho

null 47 Aug 9, 2022
This is the new api repository for Feel the Movies. Written in Go, totally open source.

This is the new API repository for Feel the Movies. Written in Go, totally open source. App Currently available for Android only. I have plans for an

Cyro Dubeux 34 Aug 7, 2022
Creating an API for an ecommerce with real scenarios

Nagini Api Este projeto está sendo criado com a intenção de estudo e ao mesmo te

Vinicius Santos 1 Jan 19, 2022
Graph Role-Based Access Control by Animeshon

gRBAC - Graph Role-Based Access Control A cloud-native graph implementation of the Role-Based Access Control (RBAC) authorization architecture powered

gRBAC 18 Jul 28, 2022
Command line interface to windows clipboard over KiTTY remote-control printing

kclip Command line interface to windows clipboard over KiTTY remote-control printing About This tool behaves like the cat command, it just tries to pa

Jacob Alberty 0 Dec 12, 2021
A cloud native Identity & Access Proxy / API (IAP) and Access Control Decision API

Heimdall Heimdall is inspired by Ory's OAthkeeper, tries however to resolve the functional limitations of that product by also building on a more mode

Dimitrij Drus 9 Aug 11, 2022
This is a Golang wrapper for working with TMDb API. It aims to support version 3.

This is a Golang wrapper for working with TMDb API. It aims to support version 3. An API Key is required. To register for one, head over to themoviedb

Cyro Dubeux 54 Aug 1, 2022
okex v5sdk for go version

okex v5sdk for go version

wang 41 Jul 3, 2022
The client of NodeStatus / Golang Version

NodeStatus-client-go The client of NodeStatus written in Golang 使用说明 请直接下载release下的对应平台的二进制文件。 运行时需传入客户端对应参数。 假设你的服务端地址是https://tz.mydomain.com,客户端用户名

神楽坂みずき 20 Jul 15, 2022
The task is to develop a basic version of a Instagram.

Golang-api-task Developer: Mukka Deepak The task is to develop a basic version of aInstagram. You are only required to develop the API for the system.

Mukka Deepak 1 Oct 23, 2021
The task given by Appointy completed to develop APIs for a basic version of Instagram.

✨ Instagram APIs ✨ The task given by Appointy completed to develop APIs for a basic version of Instagram. Create an User Get User by Id Create a Post

Aayush Chodvadiya 1 Oct 9, 2021
A serverless teeny-tiny version of Diomedes which sends alerts to Telegram. Written in Go.

diomedes-search Get a notification on Telegram whenever your movie opens bookings in a theater of your choice. Pre-requisites Install AWS CLI (v2) by

Kanishk Singh 1 Nov 30, 2021
Sdk-go - Go version of the Synapse SDK

synapsesdk-go Synapse Protocol's Go SDK. Currently in super duper alpha, do not

null 0 Jan 7, 2022
Go-archvariant - Go package for determining the maximum compatibility version of the current system

go-archvariant Go package for determining the maximum compatibility version of t

Tõnis Tiigi 6 Feb 19, 2022
Golang API for Whatsapp API MultiDevice version

Go Whatsapp API Multi Device Version Required Mac OS: brew install vips export C

Aldino Kemal 32 Aug 8, 2022
Plot your repository stars over time.

Plot your repository stars over time.

Carlos Alexandro Becker 876 Aug 4, 2022