/myflix

Netflix clone app built using TDD

Primary LanguageRuby

MyFlix

Build Status

CircleCI

E-commerce application, a clone of NetFlix, with payment processing, account management, and administration capabilities.

Home Page and Sign up

The project's home page lives on Heroku - here. If you want to sign up, use following details:

  • Credit card number '4242 4242 4242 4242',
  • cvc '123',
  • Any non-expired date

Goal and description

The goal of this project is to go beyond a beginner Rails project and learn what it takes to launch real, robust and production quality applications. In this project, I focused on the engineering processes, workflows and best practices of experienced developers. From start to end, I used Test Driven Development (TDD) to build production-level robustness and manage complexity in a growing codebase.

Main topics, concepts, tech and methodologies used to build this project

Processes

  • Ideation, wireframes, mockups, design and development
  • Build from the application core to the peripherals
  • Add features incrementally and deploy continuously

Team Collaboration

  • Feature development with Git branching
  • Github flow
  • Code reviews

Testing

  • Unit, functional, and integration tests
  • Development and test databases
  • Shoulda matchers
  • TDD and red / green / refactor
  • BDD & RSpec
  • Single assertion principle
  • Controller tests
  • Macros
  • Shared examples
  • Capybara
  • Test doubles and method stubs
  • Feature specs with Javascript
  • Testing email sending
  • Isolated API tests
  • Message expectations
  • Mocking
  • Stubs and mocks
  • Implement Continuous Integration with TravisCI

Building Applications

  • Seeding data
  • Search
  • Sending emails
  • Use random tokens
  • Email Service Providers
  • Custom form builders
  • Complex forms
  • Self referential associations
  • Concerns
  • Background jobs (Sidekiq / Redis)
  • Uploading files to Amazon S3
  • Scheduled jobs
  • Skinny controller, fat model
  • Structural refactors
  • Separating actors
  • Securing access
  • Wrapping APIs
  • Responding to webhooks
  • Collect credit card payments
  • Checkout
  • Payment forms
  • Recurring billing
  • Handle callback events
  • Beyond MVC

Production Application Considerations

  • Secure sensitive data
  • Deploy with Procfile and Foreman
  • Staging and production environments
  • Custom deployment scripts
  • Continuous Integration
  • Continuous Delivery
  • Production error monitoring
  • Production service integration

Workflows

  • Build workflows that involve multiple sub-systems
  • Complex registration workflow
  • Invitation workflow
  • User life cycle management
  • Social networking
  • Taking and charging credit cards
  • Recurring billing
  • Privileges and access control
  • Account and billing management