Code Monkey home page Code Monkey logo

present_cobuy's Introduction

Master: Build Status Coverage Status

Development: Build Status Coverage Status

Giftbox

www.ronin-giftbox.co.uk

Giftbox is a final project for a team of Ronin students carried out between 18-29 May 2015 at Makers Academy. The team comprised of Iciar, Ilya, Mark and Rob.

The whole project was designed and implemented by the team of 4 working remotely using Google Hangouts and Github. The project was implemented using a pair-programming agile BDD approach, with full test-driven development throughout.

Giftbox is a collaborative service to allow groups to collectively purchase gifts for an individual. A simple process allows the user to select a gift, add contributers, take payments and automatically make the purchase and ship on receiving the last contribution.

The project was presented on 29 May at the Makers Academy Graduation.

Approach

The team initially met with the client and crafted a set of user stories to better understand the clients requirement. Using these the team then crafted a MVP roadmap being aware of the basic domain design upfront, but letting the specifics of this emerge as the project developed.

The group split this MVP roadmaps down into tickets and used a Trello kanban board to manage the work processes, working in pairs to complete each ticket requirement. Meeting for twice daily standups to check on progress and blockages to the team, including a focus on current test coverage and status.

Rob blogged some further details of the progress of the project.

Giftbox - Making present headaches a thing of the past!

User Stories

As a cost-aware friend
So that I don’t end up covering other peoples costs
I want an app that encourages a group to collaborate

As the group coordinator
So that I can split the cost evenly
I want to be able to add the present and the cost

As a picky shopper
So that I can have a large range of products available to choose from
I want to be able to select products from amazon

As a secretive member of the present-buying community
So that the recipient is not aware of our plans
I want to restrict access to my present-buying page

As a time-limited friend
So that I don’t have to deal with the complexity
I want the app to be able to manage purchasing (including dispatch)

Technologies

Development

  • Ruby on Rails
  • Postgres
  • Front-end - HTML5, CSS3, Bootstrap, JQuery
  • Payment - Stripe, Zinc.io

Testing

  • RSpec
  • Capybara
  • Poltergeist
  • Puffing Billy

CI

Hosting

Security

  • The production domain is setup with SSL for compliance with Stripe.

Models (EDUF)

  • Gifts => has users(contributers) through contributions; belongs to users(as organizers)
  • Users => has many gifts(as contributers and organizers)
  • Contributions => belongs to gifts and belongs to users

MVP Roadmap

  • Sign up & sign in
  • Create a gift
  • Invite contributors
  • Contributors can contribute
  • Purchase actioned on last contribution (MVP1)

Tests

GiftsController
  Receives a response from Amazon –
    returns a hash with a list of products
    returns an empty hash when no products found
  Formats the response from Amazon –
    returns the correct number of items
    returns the correct number of key-value pairs in the hash
    returns the correct value for an ASIN
    returns the correct value for an image path
    returns the correct value for a URL path
    returns the correct value for a title
    returns the correct value for a price
    returns nil when a key is not available in the Amazon response

Amazon Search
  When user is not signed in –
    user cannot search for an Amazon product
  When signed in and on the giftbox creation page –
    user sees the product search form
    user searches for a valid product on Amazon
    user searches for an invalid product on Amazon
    user selects a product for the giftbox
    before performing a search –
      user cannot see any Amazon products

Create Giftbox
  When user is not signed in –
    user cannot create a giftbox
  When user is signed in –
    user sees button to create a giftbox
    user can navigate to the giftbox creation page
    user navigates to the giftbox creation page –
      user can create a giftbox
      organiser is also a contributor
      additional contributors can be added to giftbox
      contributors can be removed from giftbox

Manage Giftbox
  Organiser creates a giftbox –
    organiser sees the giftbox title
    organiser sees the delivery address
    organiser sees the item title
    organiser sees the item cost split between contributors
    organiser sees the item image
    organiser sees all contributors
    organiser sees a progress bar
  Contributors make payments –
    progress bar at 0% before any payments
    progress bar updates on payment
    action zinc.io payment on all purchases being made
  User is not signed in –
    user cannot see existing giftbox
  User is signed in –
    user cannot navigate to a non-existant giftbox
    user cannot see giftbox they do not contribute to

User Page
  When user is not signed in –
    user cannot see any profile page
  When user is signed in –
    user sees a button to view their profile
    user cannot see anyone else’s profiles
    user navigates to their profile page –
      user sees their name
      user sees their email address
      user sees an empty list if they are not contributing to anything
    user creates a giftbox –
      user sees giftbox on profile page after creation
      user sees two giftboxes on profile page
  When added as a contributor by another user –
    user sees giftboxes they were added to before signing up
    user sees giftboxes they can contribute to but did not create

User Session
  When not signed in –
    visitor navigates to the home page –
      visitor sees tag-line, sign in form and sign up button
      visitor cannot see sign out button
      visitor can navigate to sign up page
    visitor navigates to the sign up page –
      visitor signs up
    previous user signs in –
      user signs back in
  When signed in –
    user navigates to the home page –
      user cannot see sign in form or sign up button
      user sees sign out button
      user can sign out and see visitor’s home page

ContributorMailer
  renders the headers
  renders the body

Contributor
  should belong to gift

Gift
  should have many contributors
  calculates a split price
  re-calculates a split price when a contributor is removed
  calculates the number of contributers that have paid
  calculates the % contribution
  detects that not everyone has contributed
  detects when everyone has contributed

present_cobuy's People

Contributors

gwasanaethau avatar rbgeomaticsrob avatar icicleta avatar ilyafaybisovich avatar

Watchers

James Cloos avatar  avatar

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.