Coder Social home page Coder Social logo

dumbo-web-060418-plan's Introduction

Project Mode Schedule

Wednesday Thursday Friday Monday
Morning React Code Challenge (90mins) Standup Standup Project Mode
Get Groups Project Planning Project Mode Project Mode
Afternoon Project Ideation Lunch Lunch Lunch
Project Pitches Project Mode Project Mode Project Mode
Evening Project Planning Project Mode Feelings Project Mode

Wednesday 8/15

Code Challenge

  • 90 minutes
  • Will be graded and given feedback before 3pm
  • You got this!

Get Groups

  • Start brainstorming for your project.
  • What do you and your partner want to get out of the mod 4 project?
  • Are there things you want to test out prior to mod 5?

Project Pitches

  • With your group, put together a short pitch.
  • What is the base functionality of your app?
  • What are the things a user can do?
  • Are there additional technologies are you interested in using?

Project Planning

General Questions

  • What the project's Minimum Viable Product?
  • What features would I like to have as stretch goals?

Backend Questions

  • What are the project's backend routes?
  • What are necessary models?

Frontend Questions

  • What does the app look like?
  • Draw out a mock / wireframe for the app
  • What are the necessary components?
  • What is the component hierarchy?
  • Where do props and state live?

So long

Alt Text

Thursday 8/16

Morning Standup

At 9:15 please gather as a group to do standup. Each group should give a two sentence overview of what their app does. Use this as a time to solicit help or ask the group questions. Throughout the day if you run into problems, slack your classmates. Everyone will be facing similar issues during the first few days of the project.

Standup Q's:
  • What's the last feature you worked on?
  • What's the next feature you want to complete?
  • If your app could make a sound, what would it be?
  • Huddle & shout (or whisper)

Project Mode

Crank it out!

Friday

Morning Standup

At 9:15 please gather as a group to do standup!

Standup Q's:
  • What's the last feature you worked on?
  • What's the next feature you want to complete?
  • If your app was an appetizer, what would it be?
  • Huddle & shout (or whisper)

Project Mode

Build cool things!

Monday

We're baaaaack!

Alt Text

Project Mode

πŸ˜„πŸš€

Project Mode Tips

Project Demos are Wednesday Afternoon 8/22!!!!

One Big Rule

The biggest advice we can give you for project mode is to scope your project idea down! Make the tiniest MVP possible and have a lot of stretch goals. Build new features onto your MVP iteratively. That is the way to build a great product.

The Secret of Life is Good Git

  • Create branches for each feature you add (e.g. add-user-functionality)
  • Commit frequently to your branch
  • From your branch make a pull request against master and merge the work in
  • Delete the branch
  • If you use this workflow, your master branch should always be in a good working state.

Project Requirements

You've been through quite a few Project Modes by now and should have some idea how to think about scoping a project, what you can accomplish in a the designated time, and what is expected of you in terms of meeting complexity requirements.

The guidelines here are minimal but be sure that you:

  1. Use a Rails API backend with a separate React frontend that are created in two different Github repositories.
  2. Have at least three resources on the backend and your application must have full CRUD actions for at least one resource.
  3. React Router is not required. You can build a single-page application.
  4. Do not implement authorization. If your project involves a user model, see the below section.

How to sign in a user

  • Have a user sign in on the frontend
  • Send this information (email or username) to the backend
  • In your Rails controller find the matching user and sent back to your frontend. (Figure out how you want to handle errors if a user is not found in your database.)
  • Save this user into React state

We will be covering Auth next week and you will have plenty of time to work with it in your mod 5 projects. Right now your job is to focus on controlling data flow in React.

External APIs

It is highly suggested that any calls to 3rd party APIs are made through your backend.

Example: A user clicks a button that says 'Get Gifs'

  • React makes a request to Rails
  • Rails makes a request to the Giphy API
  • Rails receives the response from Giphy and sends to React
  • React receives the response from Rails and you do something with it on the client

This is so you can avoid any CORS issues. If you are unable to hit an API from your React app due to a CORS restriction, it is very likely that it is impossible to do so. Brief Refresher on CORS: the idea is that from one domain (the port your webpack development server is running on) you are not allowed to access another domain. You must make the request from a server (i.e. Rails), so the request is exempt from the Same-Origin Policy restriction.

Backend Setup

rails new <my-project> --api -T --database=postgresql

Let's go through this in detail:

  • --api
    • Make a Rails 5 API, basically you're telling Rails you don't want any of the stuff you wouldn't need for an application where Rails is not rendering views. Think the ActionView library (form_for, link_to, etc..), ERB, Security protections that ensure forms were rendered by the Rails app, things like that.
  • -T
    • don't generate tests for this app
  • --database=postgresql
    • Set this up to use a Postgres (as opposed to SQLite) database. If you ever want to push this to Heroku, Heroku requires a Postgres database. There won't be too much difference in how you have to write your code. You'll have to be sure to run rails db:create and make sure you have postgres running (i.e you can see the elephant)
  • Be sure to do the necessary setup for the rack-cors-gem
  • You may want to use active-model-serializers

Frontend Setup

To create your React project, you may use a tool called create-react-app, an awesome project generator developed by Facebook. To use this

  • npm install -g create-react-app - this installs the generator as a global package
  • In the directory where you'd like to create your project, create-react-app my-project-client. It's that simple!

We'd reccommend to begin by removing any of the default stuff given to you by Create React App that you do not understand. The following are some really great resources on how to think about setting up a React project (Spoiler: They both say the same thing, "There's no right answer!")

Notes

By default both your client app and your rails app will run on port 3000. You'll have to specify one or the other to run on a separate port.

  • Rails: rails s -p <some_number_thats_not_3000>
  • React: Check out this issue

A great article on how DHH thinks about setting up controllers in Rails

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.