Skip to content

Latest commit

 

History

History
69 lines (48 loc) · 4.43 KB

project_1_specs.md

File metadata and controls

69 lines (48 loc) · 4.43 KB

#WDI - Project 1

FIRST PROJECT DESCRIPTION

It's time to put everything that you've learned in the past month together! For the first project you will use your knowledge of front and back-end web development to produce an awesome web application that can be used by friends, family or any of the other billions of people who use the Internet. The type of web application you create is your choice.

The objective of this project is to:

  • Apply the skills you've learned by building a web application from the ground up.
  • Demonstrate mastery of topics covered during this course so far.

You will be working individually for this first project. Show us what you've got!

CORE REQUIREMENTS

Make sure to do all of the following with your app.

  • Models. Your app should have at least 2 models with an association.
  • Views. Use partials to DRY (Don’t Repeat Yourself) up your views.
  • Handles invalid data. Your models should validate data and handle incorrect inputs. Validate sign up information, verify valid email addresses, and secure passwords.
  • External APIs. Use an external API to add functionality to your app.
  • Heroku. Deploy your code to Heroku. We will be covering this early next week.
  • Javascript. You should use Javascript when it is needed.
  • Authentication Your site should have an authentication component. You can write the code from scratch or use a gem like Devise.
  • Authorization Where appropriate, you should implement an authorization scheme. For example, if you make a blog app, other users should not be able to delete the posts that you create. You can implement this from scratch or try a gem like CanCanCan
  • Testing You should test your code. At the very least have request specs that verify that your pages return a 200 response and model specs that verify your validations.

CHALLENGE ADD-ONS

If you want to push yourself and learn something new, optionally consider doing some of the following with your app:

  • Front-end Framework. Use either Twitter Bootstrap or Foundation to kick-start your front-end.
  • File upload. Take a look at carrierwave and AWS/S3.
  • Web Scraping. Check out Nokogiri.

PLANNING & DELIVERABLES

####Project Plan deliverables:

  • Scope. What are you planning to build? What features will it have? What do you reasonably think you can implement in a week? If you run out of time, will you have a working site without completing all that you meant to implement? Try to think of the minimal feature set your site needs in order to function. Get that working first, then focus on new features.
  • Wireframes. Sketch out what a few of your core pages will look like and how they will work. Paper works great. You can also check out wireframing software like Gliffy or Omnigraffle.
  • Object Models. Draw out the model associations for your project.
  • Milestones. Outline some milestones for yourself based on how you prefer to work.

####Completed Project deliverables:

  • Link to your website hosted on Heroku
  • Link to your source code on GitHub

TIMELINE

  • Friday, May 2nd - Communicate your app idea to an instructor. Be ready to talk about the scope of your project. Before beginning work on your project, your project idea and the scope of your project must be checked-off by an instructor. You will need the following for an instructor check-off:
    • A plan for your pages
    • A well-defined and written out feature list
    • A written Minimum Viable Product (MVP)
  • Monday, May 5th - Deploy your code to Heroku by the end of the day. It is not important how much coding you have done at this point; deploy whatever you have. Deploy to Heroku frequently to make your life easier.
  • Friday, May 9th at 10:00am - Project #1 Due and presentations

WHAT WE ARE LOOKING FOR

Code Quality Make sure that your code is:

  • Well-commented
  • Follows ruby or javascript coding conventions where appropriate
  • Well-formatted (2 spaces of indentation per code block)
  • Small commits pushed to github frequently. The commits should focus on a single change. Avoid large commits that deal with many distinct changes to the code.

We’ll also be looking at:

  • Quality of communication around decision-making. Can you defend why you chose a certain technology or why you implemented your solution in a certain way?
  • Your ability to pick up new technologies and push yourself.