Coder Social home page Coder Social logo

arthurgartner / wordguesser Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 64 KB

Sample application project taken from class example. Used for final project demonstration translation from gitlab CI/CD to github actions.

Ruby 65.37% Dockerfile 1.98% Procfile 0.24% Gherkin 21.61% HTML 10.80%
cicd devops github-actions graduate-school school-assignment docker docker-compose

wordguesser's Introduction

Wordguesser: a scaffolded (!) ESaaS getting-started assignment

(v1.1, September 2015. Written by Armando Fox and Nick Herson) (some edits by mverdicchio 21 September 2015) (refinements by Armando Fox September 2017)

In this assignment you'll be introduced to part of the basic cycle of creating SaaS in a disciplined way.

NOTE: Do not clone this repo to your workspace. Fork it first, then clone your fork.

Learning Goals

After completing this assignment, you will be able to:

  • Create and deploy simple SaaS apps in your development environment, and deploy them to the public cloud
  • Practice the basic workflow of test-driven development (TDD), in which tests are written before the code (so they fail when first run) and code is then added to make them pass
  • Understand how SaaS frameworks such as Sinatra support the conceptual components of a three-tier SaaS application architecture
  • Understand the challenges of adapting a non-SaaS application to a SaaS environment, including how to identify and manage application state
  • Understand one use case of service-oriented architecture, in which your SaaS app relies on an external service's API (application programming interface) to provide part of the SaaS app's functionality.

Prerequisites

  • You should be familiar with Ruby basics, for example by completing the Ruby Intro or Ruby Calisthenics assignment.
  • You should have read ESaaS Chapter 2, "The Architecture of SaaS Applications", and watched the accompanying videos in the MOOC.
  • You should be comfortable with basic Git usage and how to push your code to GitHub, as described in Appendix A of ESaaS.
  • You will need "survival level" Unix command-line skills and facility with an editor to edit code files.

NOTE: You may find the Sinatra documentation helpful to have on hand.

Introduction

The full Agile/XP cycle we follow in ESaaS includes talking to the customer, using BDD to develop scenarios, turning those scenarios into runnable integration/acceptance tests with Cucumber, using those scenarios plus TDD to drive the creation of actual code, and deploying the result of each iteration's work to the cloud.

In this introductory assignment, we've provided RSpec unit tests to let you use TDD to develop game logic for a word-guessing game. In the full Agile/XP cycle, you'd develop these tests yourself as you code.

You'll then use the Sinatra framework to make the Wordguesser game available as SaaS. Adapting the game logic for SaaS will introduce you to thinking about RESTful routes and service-oriented architecture. As you develop the "SaaS-ified" Wordguessing game, you'll use Cucumber to describe how gameplay will work from the player's point of view and as "full stack" integration tests that will drive SaaS development. In the full Agile/XP cycle, you'd develop Cucumber scenarios yourself based on consultation with the customer, and create the necessary step definitions (Cucumber code that turns plain-English scenarios into runnable tests). In this assignment we provide both the scenarios and step definitions for you.

You'll deploy your game to the cloud using Heroku, giving you experience in automating SaaS deployment.

Why Sinatra?

This assignment uses the simple Sinatra framework rather than Rails, so that you can focus on tools, mechanics, and SaaS concepts, all of which will readily map to Rails later. Since our app doesn't have a database and has very few functions, Sinatra is an easy way to get started.

Contents

wordguesser's People

Contributors

arthurgartner avatar

Watchers

 avatar  avatar

wordguesser's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.