5 min read

Exploring Real-World Go Application Development

Explore the essential steps to bring your idea to life using Go while we create a modern Kanban board series. From zero to production, let’s explore the coding landscape together. Subscribe for helpful insights and friendly guidance on this developmental journey.
Adrian is designing Plykan, a cool Kanban board

Let’s dive into the world of Go, where we'll transform a simple implementation into a robust, enterprise-ready application.

But hold your horses; I won't bore you with the typical introductory chapter on language data types, keywords, conditionals, and flow control.

Instead, we'll dive right into the exciting stuff. When needed, we'll sprinkle in links to foundational concepts. These links will be like signposts on our process, offering a more profound exploration without derailing our progress.

I should mention that I plan to be careful with dependencies, only using what’s necessary and avoiding unnecessary imports without clear reasons. But if there’s a well-tested solution that fits, I’m all for using it. We will consistently explore alternative approaches, particularly those that leverage the capabilities of the Go standard library, henceforth referred to as stdlib.

This initial presentation may not dive too deeply into the technical aspects, but you must grasp the scope and direction of the project. In the subsequent updates, we might start with some basics, but we'll quickly move into the nitty-gritty. Expect things to ramp up and get more exciting.

Crafting Plykan, a Modern Kanban Board

Plykan is our canvas for exploring a big list of concepts, including:

Routing

We are going to explore routing, the vital process that guides how incoming requests find their way to the right pages in your web application.

Project Structure

We'll learn how to establish a robust project structure that acts as the backbone of our app, making it organized and easy to maintain.

Logging

We want a clear record of everything that happens behind the scenes. We will discover how logging helps us keep track of vital information in your application.

Configuration

We'll get into configuring the app, tweaking settings and preferences to make sure the software operates just the way it’s intended to.

Error Handling

No one likes surprises, we'll show you how to handle unexpected issues gracefully, ensuring your application remains stable and reliable.

User Interface

Crafting the perfect user experience is our goal. We will explore how we design the user interface to engage and delight your users.

Security

Safety first, we'll discuss the importance of securing our application and keeping sensitive data and access under tight control.

Subscription and Payment Handling

Confidently add subscription features to your app. Learn to manage subscriptions and handle payments seamlessly to unlock premium features.

Assets Management

Let's keep your digital assets in check. Discover how efficient asset management makes handling files a breeze in your project.

API Design

Explore how to create clean, user-friendly contracts using OpenAPI to specify your JSON interactions, ensuring seamless communication between software components.

Testing

Quality assurance is key. We'll guide you through testing to ensure your application works flawlessly and meets its requirements.

Deployment

Time to share your creation with the world. Learn how to make your application accessible online for users to enjoy.

And more...

Remember, this exploration is an ongoing one.
At the outset, I'll start with a simple structure where everything is tightly integrated.

This step-by-step approach will help us assimilate the concepts more easily, particularly in the early stages. It's like building a solid foundation before adding more layers to the structure as we expand and enhance our application.

It's also possible that corrections and improvements will be made to these posts. The evolving nature of this series means that I am committed to delivering the most up-to-date and valuable information to you.

For the latest updates and revisions, I encourage you to visit the web version of this newsletter. It will always feature the most current content and any enhancements or corrections that may have been added since the original publication.

And when the language or platform introduces new features, fear not. I'll revisit and expand our app in a recent post, offering a fresh perspective on our previous implementation.

Hands-on

By the end of this series, you'll have the knowledge and expertise to transform your ideas into fully functional, profitable services that can serve real-world needs and even pave the way for a successful business venture.

My goal is to equip you with the crucial skills and insights required to thrive as a solopreneur. These skills will be indispensable whether you are initiating your journey with freelancing, exploring agency work, providing personal services, or delving into SaaS (Software as a Service) development. More than just serving as valuable resources, these skills will facilitate your transition from freelancing to consultancy services, ultimately empowering you to launch and sustain your successful ventures.

So much for the inevitable prelude (it wouldn't be nice for me to start throwing code and screenshots at you without drawing up an itinerary!).

But fear not, we're about to shift gears. Once the initial layout of this first post in the series is finished the rhythm will pick up speed.

We'll be diving headfirst into code, implementation details, and practical examples.

Part One: Roadmap

A roadmap to success

Getting Started: Installing Go

To begin our trip, let's start by installing Go on your system. Refer to the official Go installation guide at https://go.dev/doc/install for detailed instructions for your operative system.

Building a Project Structure

Before we dive into the technical details, let's discuss how to structure your project. We'll begin with a simple layout and gradually transition to the widely adopted "Standard Go Project Layout." While it's not an official standard, it's a favored choice among developers for its organization and convenience.

Routing

Let's get into routing, it’s what lets your app handle requests and responses. We're starting with the Gorilla library because it’s flexible and user-friendly. But it’s also crucial to briefly look at the standard library’s interface. In Go, a lot of libraries follow the same interfaces, so knowing it helps when exploring different options.

We’ll mainly stick to Gorilla for this app but will also mention other routers like the Chi Router. This way, you’ll get a broader view of what’s available. And don’t worry, switching between routing options in Go is pretty straightforward.

Serving Pages and API Responses

In instructional content on app development, handling API responses is emphasized, especially when integrating them with JavaScript frameworks like React, Vue.js, or Svelte. This is vital in cloud app settings and will be covered in detail.

However, we’ll start with a more traditional approach, beginning with HTML and focusing initially on server-side rendered pages. Later, we’ll integrate a bit of htmx to achieve our goal of developing a Hypermedia-Driven Application. This method will facilitate the creation of dynamic, responsive applications, allowing for more interactive user experiences.

The goal is to arm you with every tool needed to create a modern and comprehensive solution, while initially sidestepping the need for context switches, be it client/backend, Go/JavaScript, or managing multiple repositories.

Working with Templates

Templates play a crucial role in crafting user interfaces. We'll delve into Go's built-in template system and explore how to serve pages both from the file system and by embedding resources within the binary. We'll discuss the advantages and disadvantages of each approach.

There you have it, our path outlined for the first part of this series of chapters.

Get ready to roll up your sleeves because this is starting now!