Two-Project Series

Go and External APIs you own this product

prerequisites
Go programming language basics • packaging basics • HTTP web application basics
skills learned
work with Go standard library packages • authentication and authorization using OAuth • interaction with GitHub OAuth provider, HTTP cookies in Go, and the GitHub Go SDK
Amit Saha
2 weeks · 2-4 hours per week average · BEGINNER

pro $24.99 per month

  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • share your subscription with another person
  • choose one free eBook per month to keep
  • exclusive 50% discount on all purchases

lite $19.99 per month

  • access to all Manning books, including MEAPs!

team

5, 10 or 20 seats+ for your team - learn more


Welcome to Echorand Corp., a growing analytics company that uses the GitHub hosting service to host its software. Feedback from within the organization indicates users are unhappy with the lack of backup functionality the service provides. As a software engineer, your job is to solve that problem by empowering users to download their own data. You’ll build an app in Go that allows users to log in using their GitHub credentials and download their data from GitHub using the Migration API. You’ll create HTTP client middleware for testing without interacting with GitHub.com and write automated tests that let you make updates with confidence. Using Go, HTML, JavaScript, and the GitHub Go SDK, you’ll also add functionality for users to view and download their data whenever they like. When you’re finished, you’ll have topped off your programming toolbox with Go skills for web app creation with a GitHub login as well as data management functionality.

These projects are designed for learning purposes and are not complete, production-ready applications or solutions.

This is a great series. The project really demonstrates the concepts of creating authorization for interacting with a service like GitHub and using OAuth. Really awesome.

Jonathan Reeves, Software Engineer, NuCamp Bootcamp

here's what's included

Project 1 GitHub Sign-In Application

Echorand Corp., a growing analytics company, uses the GitHub hosting service for its software hosting and collaboration needs. But the company has received feedback voicing concerns about the service’s lack of backup functionality. As a software engineer, it’s up to you to solve this problem. You’ll use Go to build a web application that allows users to log in using their GitHub credentials and access the GitHub API using OAuth authorization. You’ll create HTTP client middleware for writing and performing tests with no need to interact with Github.com, and you’ll write automated tests that enable you to update the application while speeding up the development cycle. When you’re done, you’ll have built an easy-to-update application that allows users to log in with their GitHub credentials.

Project 2 GitHub Data Management

You’re a software engineer for Echorand Corp., a growing analytics company that wants to address the lack of backup functionality provided by the GitHub software hosting service it uses. The company has a web application that allows users to log in using their GitHub credentials. Your task is to add functionality to that app that lets users download their data whenever they like. Using Go, HTML, JavaScript, and the GitHub Go SDK, you’ll implement support that enables users to export their data on GitHub, view their exports, and download them—a win for Echorand Corp. and for you!

book resources

When you start each of the projects in this series, you'll get full access to the following book for 90 days.

choose your plan

team

monthly
annual
$49.99
$499.99
only $41.67 per month
  • five seats for your team
  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose another free product every time you renew
  • choose twelve free products per year
  • exclusive 50% discount on all purchases
  • Go and External APIs project for free

I learned more than I thought.

José Ángel Lopez Vallvé, Senior software developer, Paradigma Digital

I am happy to have learned about using cookies and authentication. I think I can apply the knowledge to web development, even with languages other than Go.

Seungwan Kim, Android developer, self-employed

project author

Amit Saha

Amit Saha is a software engineer at Atlassian in Sydney, Australia. He’s the author of Practical Go: Building Scalable Network and Non-Network Applications (Wiley, 2021), Doing Math with Python: Use Programming to Explore Algebra, Statistics, Calculus, and More! (No Starch Press, 2015), and Write Your First Program (PHI Learning, 2013). His other writings have been published in technical magazines, conference proceedings, and research journals. He can be found online at https://echorand.me.

Prerequisites

These liveProjects are for beginner-level programmers interested in learning to build a web application that allows users to sign in with their GitHub credentials and view and download their own data. To begin these liveProjects you’ll need to be familiar with the following:

  • Understanding of how HTTP applications work
  • HTTP cookies (for maintaining state on the client side)
  • Go language basics: writing functions, creating structures, conditional statements, standard input and output, and basic understanding of interfaces
  • Packaging basics: what a module is and using sub-packages
  • Go commands: go build and go test

you will learn

In this liveProject series, you’ll learn how to create a web app that allows users to sign in with their GitHub credentials and download their data.

  • Use key standard libraries including net/http, net/http/cookiejar, net/http/httptest, testing
  • Work with HTTP cookies in Go
  • Interact with GitHub OAuth provider using https://pkg.go.dev/golang.org/x/oauth2
  • Use the Go standard library packages and the GitHub Go SDK to access the GitHub API (github.com/google/go-github)
  • Implement techniques to write a testing-friendly web application
  • Write tests for applications without making external network requests

features

Self-paced
You choose the schedule and decide how much time to invest as you build your project.
Project roadmap
Each project is divided into several achievable steps.
Get Help
While within the liveProject platform, get help from other participants and our expert mentors.
Compare with others
For each step, compare your deliverable to the solutions by the author and other participants.
book resources
Get full access to select books for 90 days. Permanent access to excerpts from Manning products are also included, as well as references to other resources.