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

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.

Comments
  • 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?

  • 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()
    }
    
  • 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.

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

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

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

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

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

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

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

  • build(deps): bump jsonwebtoken from 8.5.1 to 9.0.0 in /app

    build(deps): bump jsonwebtoken from 8.5.1 to 9.0.0 in /app

    Bumps jsonwebtoken from 8.5.1 to 9.0.0.

    Changelog

    Sourced from jsonwebtoken's changelog.

    9.0.0 - 2022-12-21

    Breaking changes: See Migration from v8 to v9

    Breaking changes

    Security fixes

    • security: fixes Arbitrary File Write via verify function - CVE-2022-23529
    • security: fixes Insecure default algorithm in jwt.verify() could lead to signature validation bypass - CVE-2022-23540
    • security: fixes Insecure implementation of key retrieval function could lead to Forgeable Public/Private Tokens from RSA to HMAC - CVE-2022-23541
    • security: fixes Unrestricted key type could lead to legacy keys usage - CVE-2022-23539
    Commits
    • e1fa9dc Merge pull request from GHSA-8cf7-32gw-wr33
    • 5eaedbf chore(ci): remove github test actions job (#861)
    • cd4163e chore(ci): configure Github Actions jobs for Tests & Security Scanning (#856)
    • ecdf6cc fix!: Prevent accidental use of insecure key sizes & misconfiguration of secr...
    • 8345030 fix(sign&verify)!: Remove default none support from sign and verify met...
    • 7e6a86b Upload OpsLevel YAML (#849)
    • 74d5719 docs: update references vercel/ms references (#770)
    • d71e383 docs: document "invalid token" error
    • 3765003 docs: fix spelling in README.md: Peak -> Peek (#754)
    • a46097e docs: make decode impossible to discover before verify
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by julien.wollscheid, a new releaser for jsonwebtoken since your current version.


    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.

  • build(deps): bump decode-uri-component from 0.2.0 to 0.2.2 in /web

    build(deps): bump decode-uri-component from 0.2.0 to 0.2.2 in /web

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.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.

A go sdk for baidu netdisk open platform 百度网盘开放平台 Go SDK

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

Nov 22, 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

Jan 2, 2023
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

Sep 27, 2022
DiscSpam is the best free and open source tool to spam/raid Discord servers.
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

Dec 27, 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.

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

Sep 18, 2022
Creating an API for an ecommerce with real scenarios
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

Jan 19, 2022
Graph Role-Based Access Control by Animeshon
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

Nov 9, 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

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

Jan 6, 2023
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.

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

Dec 27, 2022
okex v5sdk for go version

okex v5sdk for go version

Jan 2, 2023
The client of NodeStatus / Golang Version

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

Dec 26, 2022
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

Oct 9, 2021
The task is to develop a basic version of a Instagram.
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.

Oct 23, 2021
A serverless teeny-tiny version of Diomedes which sends alerts to Telegram. Written in Go.
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

Oct 11, 2022
Sdk-go - Go version of the Synapse SDK

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

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

Feb 19, 2022
Golang API for Whatsapp API MultiDevice version
Golang API for Whatsapp API MultiDevice version

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

Jan 3, 2023
Plot your repository stars over time.

Plot your repository stars over time.

Dec 30, 2022