For the second 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 others online. The type of web application you create is your choice: utilities, social networks, games, mashups, etc. Ensure however that the scope of your project is not too large so that you can reasonably complete a MVP in this time.
The objective of this project is to:
- Get experience collaborating and working in a development team.
- To gain experience integrating topics covered during this course thus far.
- Showcase your abilities to potential employers, friends, family, and community members.
You will be working in groups of 2 for this project.
- Test Drive It. Use TDD as you are developing your app. You should have at least 50% code coverage with both your Ruby tests in RSpec and Javascript tests in Jasmine.
- Models. Your app should have at least 3 models with appropriate associations and validations.
- Views. Use partials to DRY (Don’t Repeat Yourself) up your views, loading data via Ajax when appropriate.
- Handles invalid data. Forms in your application should validate data and handle incorrect inputs. Do this on both on the client-side with JavaScript and on the back-end with Rails.
- JavaScript & jQuery. Spice up the front-end of your app and have some event driven functionality. Try out a new plugin or a library.
- AJAX. Use AJAX to communicate with the server without reloading the page when appropriate.
- External APIs. Use an external API to add functionality to your app.
- User Login. Make sure you have authentication and authorization set up.
- Heroku. Deploy your code to Heroku.
- User Experience Ensure a pleasing and logical user experience. It is suggested to use a front-end CSS framework like Bootstrap to enhance and ease your CSS styling.
We may not have covered all of these in class, but if you want to push yourself and learn something new, optionally consider doing some of the following with your app.
- Responsive Design Make sure your app looks decent on a phone or tablet.
- File upload Take a look at Paperclip or Carrierwave using Amazon S3 for file hosting.
- Web Scraping Check out Nokogiri, mechanize, and phantom.js.
- Job-scheduling Learn more about background jobs. Check out delayed_job, Resque, and Sidekiq.
- Regex You might consider using Regular Expressions to process text. Validation is one common use case. Use Rubular for initial testing.
- Charting Visualize your data with Morris.js or D3.
####Project Plan deliverables: You should review the following with your instructional team BEFORE you start to code.
- Group members. You'll be working in groups of 4: One back-end pair and one front-end pair.
- Scope. What are you planning to build? What do you reasonably think you can implement in the time period?
- User stories. What features will your app have? Set up your project and user stories in Pivotal Tracker.
- 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 Plan deliverables: You should submit the following via pull request.
- Link to Heroku hosted project
- Link to source code on GitHub
- Week 7, Day 4 - Groups Assigned
- Week 7, Day 5 - Project spec (this) assigned
- Week 8, Day 1 - Project work officially begins
- Week 9, Day 1 - Completed project deliverables due