Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create Gno Studio intro.md #84

Merged
merged 9 commits into from
May 28, 2024
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed cmd/gnoblog-cli/gnoblog-cli
Binary file not shown.
12 changes: 12 additions & 0 deletions cmd/gnoblog-cli/post.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ type cliCfg struct {
Remote string
Quiet bool
InsecurePasswordStdIn bool
ConfirmInput bool
}

func newPostCommand(io commands.IO) *commands.Command {
Expand Down Expand Up @@ -106,6 +107,11 @@ func (cfg *cliCfg) RegisterFlags(fs *flag.FlagSet) {
false,
"WARNING! take password from stdin",
)
fs.BoolVar(&cfg.ConfirmInput,
"confirm-input",
false,
"ask user to confirm input",
)
}

func execPost(io commands.IO, args []string, cfg *cliCfg) error {
Expand All @@ -117,6 +123,12 @@ func execPost(io commands.IO, args []string, cfg *cliCfg) error {
return ErrEmptyKeyName
}

// Ask user for confirming the ChainID
if cfg.ConfirmInput && !askForConfirmation(cfg.ChainId, cfg.KeyName) {
fmt.Println("operation canceled by the user, exiting")
return nil
}

// Stat passed in arg
fileInfo, err := os.Stat(args[0])
if err != nil {
Expand Down
21 changes: 21 additions & 0 deletions cmd/gnoblog-cli/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,24 @@ func findFilePaths(startPath string) ([]string, error) {

return filePaths, nil
}

// askForConfirmation asks the user if they're sure that they want to post to a specific chain
func askForConfirmation(chainID string, keyName string) bool {
reader := bufio.NewReader(os.Stdin)
for {
fmt.Printf("Are you sure you want to post to chain with id `%s` with key `%s`? (y/n):", chainID, keyName)
input, err := reader.ReadString('\n')
if err != nil {
fmt.Println("Error reading input:", err)
continue
}
input = strings.TrimSpace(strings.ToLower(input))
if input == "y" {
return true
} else if input == "n" {
return false
} else {
fmt.Println("Please enter 'y' or 'n'.")
}
}
}
123 changes: 123 additions & 0 deletions posts/2024-05-22_gno-studio-intro/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
---
publication_date: 2024-05-27T13:37:00Z
slug: gno-studio-intro
tags: [gno-studio, dev, devx, connect, gno.land]
leohhhn marked this conversation as resolved.
Show resolved Hide resolved
authors: [gno-studio]
---

# Introducing Gno Studio, the Premier Builder Suite for Gno.land

[![introduction-banner](https://gnolang.github.io/blog/gno-studio-intro/src/thumbs/introducing-gnostudio.png)](https://gnolang.github.io/blog/gno-studio-intro/src/introducing-gnostudio.png)

Exceptional developer experience is integral to the Gno ecosystem, shaping the
special programming language, Gno, and guiding the features of Gno.land. The
technology stack is designed to offer developers an unparalleled platform for
crafting next-generation dApps via realms (smart contracts).

As Gno.land expands into a universe of realms, development tools become
instrumental to enable innovation and ingenuity. To fully realize this vision,
we are creating Gno Studio, empowering community members to create and use
succinct and composable realms on Gno.land.

## The Gno Studio Developer Experience

The [Gno Studio](https://gno.studio/) suite will offer extensive builder tools tailored
for Gno.land. The design of Gno Studio is intended to cater to a wide range of
users, from experienced builders to non-coders, by simplifying and enhancing the
process of launching any realm or application you can imagine. Initially, Gno
Studio started as a proof of concept IDE (Integrated Development Environment).
Eventually, this evolved into a vision for a comprehensive suite of apps and
services — Gno Studio — designed to elevate the developer experience to new
heights and meet users’ and builders’ current needs and expectations.

At the end of last year, we launched the first beta application of the Gno
Studio suite, [Gno Playground](https://play.gno.land/), as part of the Gno.land brand. The
official Playground of Gno.land is a minimalistic IDE that facilitates the
creation, testing, deployment, and sharing of Gno code. It is a powerful tool
designed to simplify the development of packages and realms, lowering the barrier
to entry for new builders and enhancing the productivity of advanced Go developers.

**Today, we are excited to announce the beta release of Gno Studio Connect, the
second application in the Gno Studio suite.**

## Your Gateway to Experience the Power of Realms

[![beta-launch-banner](https://gnolang.github.io/blog/gno-studio-intro/src/thumbs/beta-launch.png)](https://gnolang.github.io/blog/gno-studio-intro/src/beta-launch.png)

Gno Studio Connect is a tool that simplifies access and interaction with realm
functions. Whether you’re exploring realms like the Gno.land [blog](https://gno.land/r/gnoland/blog),
engaging with a realm deployed through the [Gno Playground](https://play.gno.land/), or using a
tool like [gnokey](https://docs.gno.land/gno-tooling/cli/gno-tooling-gnokey/), Connect makes interaction easy.

The initial version of Connect focuses on function calls, enabling users to
interact with any realm’s exposed function(s) on Gno.land. Function calls are
performed through your account using any wallet that supports Gno.land
(currently, [Adena](https://www.adena.app/) is the only supported wallet.) Let’s discuss the
feature set:

- **Access**: Directly input a realm path and select the corresponding network
in the interface for seamless navigation to your realm.
- **Explore**: Discover the available functions of any realm and their details
through a dedicated function list.
- **Interact**: Swiftly make calls through a dedicated function interface by
selecting a specific function in the realm’s function list.
- **Evaluate**: Review and analyze the outcomes of your interactions with realm
functions by assessing results and determine any further actions required.
- **Share:** Copy links to realms, functions and results and share with
anyone, making it easy to request engagement on a realm or feedback on a specific function.
- **Track**: Keep track of your previous realm interactions, where you can view
the results of your function calls and revisit their results through a historical overview.

## Get Started with Connect: Vote in a Simple Poll

[![vote-gnoyourdate](https://gnolang.github.io/blog/gno-studio-intro/src/thumbs/vote-gnoyourdate.png)](https://gnolang.github.io/blog/gno-studio-intro/src/vote-gnoyourdate.png)

Let’s dive into a hands-on example with a simple polling realm. First, click
[here](https://gno.studio/connect/view/gno.land/r/gnostudio/gnoyourdate?network=test3#Vote) to access the ‘gnoyourdate’ poll. Once you’ve ensured that Adena
wallet is connected, here’s what to do next:

1. Select when you first heard about Gno.land:
- This month
- This year
- One or two years ago
- Since inception
- _Ensure your chosen option is marked as 'True (Yes)' and all others as 'False (No)' to validate your vote._
2. After making your selection, hit the ‘Call’ button to execute the transaction
via your [Adena wallet](https://www.adena.app/). If you need help getting set up,
you can visit the [Adena docs](https://docs.adena.app/user-guide/sign-in).
3. You’re ready to share your vote! Click ‘Copy result link’ and post it on X,
tagging [@_gnostudio](https://twitter.com/_gnostudio) and using the hashtag #gnoyourdate.

## Share Your Feedback on Connect

We value your input as we continue developing Gno Studio. Please contribute to
our improvement efforts by interacting with our feedback form created as a realm.
Use the ‘[SubmitFeedback](https://gno.studio/connect/view/gno.land/r/gnostudio/feedback_v1?network=test3&tab=functions#SubmitFeedback)’ function to share your feedback with us.

If you have questions or comments, hop over to the [Gno.land Discord](https://discord.gg/FpKNhW5GK6) and
follow us on [X](https://twitter.com/_gnostudio) for updates and discussions.

## The Gno Studio Outlook

The outlook for Gno Studio is full speed ahead with a roadmap bursting with
exciting features and tools. We will continue to transition the beta applications,
Gno Playground and Gno Studio Connect, into their production versions while
focusing on the development of the next set of tooling.

Development is already underway on a full-featured IDE that will provide a
state-of-the-art workspace designed for realm and package development on Gno.land.
The IDE will consist of an advanced code editor, debugging tools, and a dedicated
project management and deployment environment.

The next piece of the puzzle is a marketplace with ready-to-use templates that
make creating apps more accessible to everyone. This collection of boilerplate
code is targeted at speeding up deployment timelines and allowing non-coders to
try their hand at launching realms without needing to worry about technical
details.

The production-ready Gno Studio suite will help and inspire everyone with an idea,
coders and non-coders alike, to participate in the exciting innovations of Web3
spurred by the next generation of realm applications on Gno.land.

If you want to *stay in the gno* about all the Gno Studio developments and news,
[sign up](https://gno.studio/) for our mailing list. You can also follow us on [X](https://twitter.com/_gnostudio).
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading