Skip to content

Instantly share code, notes, and snippets.

@Krafalski
Last active January 25, 2017 22:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Krafalski/25454aa8212c2608cb8435147270ab50 to your computer and use it in GitHub Desktop.
Save Krafalski/25454aa8212c2608cb8435147270ab50 to your computer and use it in GitHub Desktop.

Project #4: Ruby on Rails - Group Project

Overview

For your 4th project, you will be collaborating to make an application using Ruby on Rails as the backend with an angular front end.
Use your imagination to find an app idea that you feel excited to build! Everyone will get a chance to be creative, and work through some really tough programming challenges, but you'll have partners to help you carry the load.

Project due date

Wednesday, February 1
Submit an issue (as you normally do for homework) with a link to your repo AND a link to your live site. You will be presenting your projects in front of the class. The title for your issue should be Your Names - Project 4

Make a new repo

Before you begin, choose one group member to make a new github repo for the project. Do not begin your project within the class repo. Then add other group members as collaborators

Attendance

You are required to be present at 10:00 am EDT and 2:30 pm EDT each day during the project. We will be taking attendance at these times.

Standups

We will have student-run stand-ups each morning at 10:00 am EDT where you will answer the following questions:

  • What did I work on yesterday
  • What am I trying to get done today
  • What is preventing me from getting this done.

This meeting should take no longer than 15 minutes.

If you have ideas on how you can help a fellow-student with work that they are stuck on, please follow-up with information AFTER the stand up.

Meetings with instructors

Your instructor will contact you to setup a meeting time

Thursday, January 26

  • Projects and groups are announced
  • Meet to discuss your ideas with your teammate(s) and choose one idea (remember, you can always use other ideas for your next project(s))
  • Create a new Github repo outside of your wdi-remote repository
  • Create your user stories and add them to your README.md
  • Write what features will meet MVP and then list out other features as stretch goals
  • Make wireframes and add them to your README.md (or put images and add links)
  • You will have a 15 minute meeting with an instructor in the afternoon to get your project approved
  • Create your daily tracker
  • Optional/Recommended: reread the working_in_groups.md (link in the Useful Resources section)

Friday, January 27 & Monday, January 30
15 minute meetings to check in with instructors. We will do things like check your wireframes, overall progress, and direct you to resources.

Technical Requirements

🔴 Mandatory to pass:

MVP - minimum viable product

  • Rails backend: Serve a JSON API with all CRUD operations available across your models (example: one model allows index and show, the other allows create, update, delete . The Rails API must be hosted.
  • At least one fully functional Angular front end app. The frontend server must be hosted.
  • Configure CORS, and your app, so that only the intended frontend app(s) can alter the database. Configure CORS so that anyone can read data from the hosted API.
  • AND AT LEAST ONE OF THE FOLLOWING:
    • one-to-many relationship
    • many-to-many relationship
  • A working full-stack application, built by you & your group members
  • A git repository hosted on Github, with a link to your hosted project, and frequent commits dating back to the very beginning of the project. Commit early, commit often
  • At least one Github commit per day
  • A daily tracker that all group members use (Trello, github issues, or another similar tracker)
  • Be deployed online and accessible to the public via Heroku
  • Have a link to your hosted working app in the README.md file in your github repo

ALSO, don't forget: a technical demonstration of your app which:

  • Is ~5-10 minutes in length
  • All group members should speak during the presentation
  • Shows off all features of the app
  • Explains the technical details
  • Explains the technical challenges
  • Explains which improvements you might make

🔵 Not mandatory:

Recommended features

  • third party API with a gem
  • authentication with Javascript Web Tokens
  • Versioned API
  • Authentication with API key
  • A second front end app using either jQuery, React, Vue, Swift, etc.
  • What about using graphs or visuals on your data? Chart.js , D3.js
  • Include portfolio-quality styling
  • Use a CSS framework like skeleton or bootstrap
  • Include User Stories
  • Include wireframes that you designed during the planning process (uploaded to your github repo)
  • A readme.md file with explanations of the technologies used, the approach was taken, unsolved problems, and notes to yourself/group members so you can come back to your project later and be able to pick up your train of thought, etc

Suggested Ways to Get Started

  • Wireframe Make a drawing of what your app will look like on each page of your application (what does it look like as soon as you log on to the site? What does it look like once a user logs in, etc.).
  • Break the project down into different components (data, presentation, views, style, DOM manipulation) and brainstorm each component individually.
  • Create your user stories
  • Create a Trello board and break down the user stories into cards
  • Use your Development Tools (console.log, inspector, alert statements, etc) to debug and solve problems
  • Work through the lessons in class for help and inspiration! Think about adding relevant code to your application each day - you are given 5 days so that you can work on it in small chunks, COMMIT OFTEN. We will be looking at your commit dates and comments are part of your scoring.
  • Commit early, commit often. Don’t be afraid to break something because you can always go back in time to a previous version.
  • Consult documentation resources (MDN, jQuery, etc.) at home to better understand what you’ll be getting into.
  • Don’t be afraid to write code that you know you will have to remove later. Create temporary elements (buttons, links, etc) that trigger events if real data is not available. For example, if you’re trying to figure out how to change some text when the game is over but you haven’t solved the win/lose game logic, you can create a button to simulate that until then.

Useful Resources

Where to go for help during project week

  1. Seek out help online
  2. Seek out help with your classmates
  3. Seek out help with our class TA
  4. Submit a Github issue on the wdi-remote-matrix class Github account to receive help from an instructor. Note: You must do @your_instructors_github_handle, inside the comment area of your issue, to notify your instructor that you have created an issue.

Formatting your GitHub Issue for wdi-remote-matrix to ask for help

PUSH OFTEN! Your code on GitHub should be up to date. Submitting an issue and linking us to old, out-of-date code will hinder the process.

  1. WHAT YOU ARE TRYING TO SOLVE:
  • Write a detailed explanation of the feature or user story you're working on.
  1. DETAILED DESCRIPTION OF THE BUG/ERROR:
  • A detailed description of the problem, the bug, and/or the error. This means: the full steps to reproduce, a link to the file on github, and the line number of where the relevant code is. The error(s) returned, copy and pasted/typed out/screenshot, not paraphrased.
  • If there is other code in a different file that is also essential to the functioning of the code that currently works point us to that and explain the relationship.
  1. WHAT I'VE TRIED
  • List everything you've done to solve the bug on your own in detail. list all resources you've looked up and tried to implement and provide links. Providing code if you have it surrounded by the md syntax to display nicely is very helpful.
  1. QUESTION
  • After going through all this what is your questions specifically, more specifically than how can I make this work?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment