WDI PROJECT 2

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 an MVP in the allotted time.

The objective of this project is to:

  • Work with a group in a shared GitHub repository, and contribute code to a project which you do not own.
  • Plan and implement a larger scale project as part of a development team.
  • Integrate topics learned and experience gained in the course so far.
  • Showcase your abilities to potential employers, friends, family, and community members.

You will be working in groups of 3-4 for this project.

CORE REQUIREMENTS

  • PostgreSQL Use Postgres.app for your database in development and production.
  • Testing All custom model methods should have test specs, and some controllers should also have specs. Start writing tests early, or you will struggle to get them done.
  • Validation Your application should validate incoming data before entering it into the database.
  • Error Handling Forms in your application should also validate data, handle incorrect inputs, and provide user feedback on the client side.
  • Views Use partials heavily to follow DRY (Don’t Repeat Yourself) development in your views.
  • Home and About Pages - Don't forget to work on a proper homepage, clearly explaining what your app is and will do. Create an about page with photos to show off your team.
  • User Experience Ensure a pleasing and logical user experience. Use Bootstrap to enhance and ease your CSS styling.
  • JavaScript & jQuery Spice up the front-end of your app and have some event driven functionality.
  • Responsive Design Make sure your app looks great on a phone or tablet.
  • User-Friendly URLs Make pretty URLs with friendly-id.
  • Heroku Deploy your code to Heroku.

In addition to those base requirements, complete at least 3 of the following 5 goals:

  • User Login Make sure you have authentication and authorization set up.
  • Models Include at least 3 models with associations.
  • AJAX Use AJAX to communicate with the server without reloading the page when appropriate.
  • External APIs Use HTTParty or an external API's gem to add functionality to your app.
  • Paperclip Upload files with Paperclip.

OTHER IDEAS

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.

  • Charting Visualize your data! Possibilities include D3, Morris.js, highcharts, charts.js, and google charts.
  • Job Scheduling Find a way to include Sidekiq (or Delayed Job or Resque) to your project.
  • Emails Use ActionMailer with Mandrill to send your users email updates!
  • Text Messaging Use Twilio to send your users texts!
  • Payment Use Stripe to allow your users to purchase from or donate to your site.
  • Material Design Research the material design paradigm and apply it to ground your app's UI in the physical realm.
  • CSS Animations Use jQuery or animate.css to include one or more animations on the site.
  • Accessibility Research web accessibility (e.g., for blind users), and apply accessibility principles to your app.

PLANNING & DELIVERABLES

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 3-4. Use your strengths to contribute to all parts of the project.
  • 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 Trello.
  • Wireframes. Sketch out what your core pages will look like and how they will work.
  • Object Models. Draw out the model associations for your project in an entity relationship diagram (ERD).
  • Milestones. Outline milestones/sprints for your group.

Completed project deliverables:

  • Link to Heroku hosted project
  • Link to source code on GitHub
  • A README with the following:
    • Description: A paragraph-long elevator pitch of your project
    • Another Link to project hosted on Heroku
    • Wireframes
    • User Stories, Site Flow, or equivalent for your MVP
    • An Entity Relationship Diagram
    • APIs used
    • Libraries used
    • Wishlist / Future Development
    • Contributors (with links to their github pages)

TIMELINE

  • August 14 - Friday - Project spec and Groups assigned
  • August 21 - Friday - Completed project deliverables due at 10am