Skip to content

Instantly share code, notes, and snippets.

@andrewwylde
Forked from GA-MEB/project03.md
Last active August 29, 2015 14:23
Show Gist options
  • Select an option

  • Save andrewwylde/11abcddcc374ef8ebf39 to your computer and use it in GitHub Desktop.

Select an option

Save andrewwylde/11abcddcc374ef8ebf39 to your computer and use it in GitHub Desktop.

Revisions

  1. Andrew Ellis revised this gist Jun 16, 2015. 1 changed file with 1 addition and 16 deletions.
    17 changes: 1 addition & 16 deletions project03.md
    Original file line number Diff line number Diff line change
    @@ -30,21 +30,6 @@ Create an ecommerce site for famed retail giant, Nozama.com! Naturally, the site
    ##### Reach goals:
    - Build a search feature so that people can search for specific products.

    #### Survey
    Make an app that can be used to create custom surveys (for instance, asking "what should we eat for lunch today?" or "1-5, how well did you understand what we just learned?) and collect the responses on a dashboard for that particular survey. Each survey should be hosted at a particular url, either randomly generated or set by the creator of the survey.

    ##### Reach Goals:
    - Make the dashboard real-time, so you can see answers pour in as they're completed!

    <!-- ##### Hello, Comments
    Imagine the benefits of having an API where you could embed comments into any website you want. They could even update in realtime if you wanted, so that you'd never have to refresh the page. CMS providers across the world could quit writing code from scratch and just embed your widget instead. -->

    #### Social Network
    Create a simple social network for a group of your choice! In addition to having a customizable profile, users must be able to upload images (of varying file sizes), and get an update feed from other users that they 'follow'.

    ##### Reach Goals:
    - Add the ability for users to send messages to other users, and get SMS notifications sent to their phones when they have new unread messages.

    ---

    ### Necessary Deliverables
    @@ -116,4 +101,4 @@ Some other suggestions and best practices:
    * **Write code another developer wouldn't have to ask you about**. Do your naming conventions make sense? Would another developer be able to look at your app and understand what everything is?
    * **Make it all well-formatted.** Are you indenting, consistently? Can we find the start and end of every div, curly brace, etc?
    * **Comment your code.** Will someone understand what is going on in each block or function? Even if it's obvious, explaining the what & why means someone else can pick it up and get it.
    * **Write pseudocode before you write actual code.** Thinking through the logic of something helps.
    * **Write pseudocode before you write actual code.** Thinking through the logic of something helps.
  2. @GA-MEB GA-MEB created this gist Jun 16, 2015.
    119 changes: 119 additions & 0 deletions project03.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,119 @@
    # ![](https://ga-dash.s3.amazonaws.com/production/assets/logo-9f88ae6c9c3871690e33280fcf557f33.png) Project #3: Building Your Own API

    ### Overview

    Project 2 had you working with Ruby, SQL, and Rails to build a full-stack application that was integrated via an API. For Project 3, you'll be working in *teams* to build one of several exciting projects, with a back-end API that's built on **Node**, **Express**, and **Mongo**.

    **This project is meant to push you both technically and collaboratively.** In many ways, it’s a lot harder to work in a team than to work by yourself, but that's most likely you’re going to find yourself doing in your first development job after WDI, and *it's important to learn how to work together.*

    At a high level, here's what we're looking for with this project, irrespective of which prompt you're working from:

    * **Use Mongo & Express** to build an API and a front-end that consumes it
    * **Create an API using at least 2 related models**, one of which should be a user
    * Include **all major CRUD functions** in a **RESTful API** for at least one of those models
    * **Consume your own API** by making your front-end with HTML, Javascript, & jQuery
    * **Add authentication to your API** to restrict access to appropriate users
    * **Craft thoughtful user stories together**, as a team
    * **Manage team contributions and collaboration** using a standard Git flow on Github
    * Layout and style your front-end with **clean & well-formatted CSS**
    * **Deploy your application online** so it's publically accessible

    ---

    ### The Prompts

    Each team of students will be assigned one of the following projects to complete. Though the broad bushstrokes are laid out for you here, the details are up to you, so feel free to get as creative as you like!

    #### E-Commerce
    Create an ecommerce site for famed retail giant, Nozama.com! Naturally, the site will need to allow customers to see all of Nozama's products, add those items to a shopping cart, and purchase them using [Stripe](https://stripe.com/docs/checkout). In addition, by logging in, customers should be able to keep track of their purchases by looking at their past orders.

    ##### Reach goals:
    - Build a search feature so that people can search for specific products.

    #### Survey
    Make an app that can be used to create custom surveys (for instance, asking "what should we eat for lunch today?" or "1-5, how well did you understand what we just learned?) and collect the responses on a dashboard for that particular survey. Each survey should be hosted at a particular url, either randomly generated or set by the creator of the survey.

    ##### Reach Goals:
    - Make the dashboard real-time, so you can see answers pour in as they're completed!

    <!-- ##### Hello, Comments
    Imagine the benefits of having an API where you could embed comments into any website you want. They could even update in realtime if you wanted, so that you'd never have to refresh the page. CMS providers across the world could quit writing code from scratch and just embed your widget instead. -->

    #### Social Network
    Create a simple social network for a group of your choice! In addition to having a customizable profile, users must be able to upload images (of varying file sizes), and get an update feed from other users that they 'follow'.

    ##### Reach Goals:
    - Add the ability for users to send messages to other users, and get SMS notifications sent to their phones when they have new unread messages.

    ---

    ### Necessary Deliverables

    * A **working API, built by the whole team**, hosted somewhere on the internet
    * A handmade front-end **that consumes your own API**, hosted somewhere on the internet
    * A **link to your hosted working app** in the URL section of your Github repo
    * **At least two git repositories** (front-end and back-end) **hosted on Github**, with a link to your hosted project, and frequent commits from _every_ team member dating back to the _very beginning_ of the project
    * **A ``readme.md`` file** in the repo for your front-end app, with:
    * A short description of what your application does.
    * Explanations of the **technologies** (modules, APIs, etc) used.
    * A couple paragraphs about the **general approach you took**
    * **Installation instructions** for any dependencies
    * Link to your **user stories** – who are your users, what do they want, and why?
    * Link to your **wireframes** – sketches of major views / interfaces in your application
    * Descriptions of any **unsolved problems** or **major hurdles** your team had to overcome

    ---

    ### Feedback + Evaluation

    These are the things that instructors will be looking at, and giving you feedback on, after you've submitted your project.

    #### Project Workflow
    * __Planning__ : Did you complete user stories and wireframes before you started writing code? Did you create (and follow) a schedule for your team to keep the project on track?
    * __Source Control__ : Did you use source control to keep track of changes in your project and make regular 'save points' for yourself?
    * __Teamwork__ : Did your group work together effectively?
    * __Group Contribution__ : Did you meaningfully contribute to your group's project?

    #### Deliverables
    * __Technical Requirements__ : Does your project meet all the technical requirements outlined above? Does it run?

    * __Software Design/Problem Solving__ : How did you break up the functionality of your application? How did you solve the problems that you encountered along the way? Do the solutions you came up with make sense, from the perspective of industry best practices? How well can you defend the choices you've made?

    * __Code Clarity__ : Did you follow code style guidance and best practices covered in class, such as spacing and semantic naming? Did you comment your code as your instructors as we have in class?

    * __Creativity__ : Did you added a personal spin or creative element into your project submission? Is the finished product something of value to the end user, in addition to being functional (not just a login button and an index page)?


    ##### __Total__
    Your instructors will give you a total score on your project as an aggregate across all the categories:

    Score | Expectations
    ----- | ------------
    **0** | _Does not meet expectations._
    **1** | _Meets expectactions, good job!_
    **2** | _Exceeds expectations, you magnificent creature, you!_

    This will serve as a helpful overall gauge of whether you met the project goals. But more important than your overall score is your feedback, particularly in individual categories - this will help you identify where to focus your efforts for future projects.

    ---

    ### Getting Started

    Eager to get moving? Here are some good resources that you might want to refer back to.

    * **[MongoDB](https://www.mongodb.org/)**
    * **[Express JS](http://expressjs.com/)**
    * **[Getting Starts with Node.js on Heroku](https://devcenter.heroku.com/articles/getting-started-with-nodejs)**

    Some other suggestions and best practices:

    * **Don’t hesitate to write throwaway code** to solve short term problems.
    * **Read the docs for whatever technologies / frameworks / API’s you use**.
    * **Write your code DRY** and **build your APIs RESTful**.
    * **Be consistent with your code style.** You're working in teams, but you're only making one app per team. Make sure it looks like a unified effort.
    * **Commit early, commit often.** Don’t be afraid to break something because you can always go back in time to a previous version.
    * **Keep user stories small and well-defined**, and remember – user stories focus on what a user needs, not what development tasks need accomplishing.
    * **Write code another developer wouldn't have to ask you about**. Do your naming conventions make sense? Would another developer be able to look at your app and understand what everything is?
    * **Make it all well-formatted.** Are you indenting, consistently? Can we find the start and end of every div, curly brace, etc?
    * **Comment your code.** Will someone understand what is going on in each block or function? Even if it's obvious, explaining the what & why means someone else can pick it up and get it.
    * **Write pseudocode before you write actual code.** Thinking through the logic of something helps.