Giter Club home page Giter Club logo

scheduler's Introduction

Flatiron Scheduler

Rails app that streamlines and automates the scheduling process for instructors at the Flatiron School.

Description

Instructors can log in with their Flatiron gmail addresses, add their class' cohort or select a cohort to be their "active" cohort. For you active cohort, you can edit, upload the CSV student roster (download-able from the Learn organization's page for your cohort) and make and edit daily schedules.

Daily schedule is automatically posted to your active cohort's GitHub repository, from which Learn will pull it as the daily schedule on learn.co. Any schedule activities for which you check "reserve room" will be automatically booked in any available classrooms.

This app integrates with the Flatiron Blogger app. It hits the blogger API when a new schedule is created to display that blog posts due that day.

Contributing

Getting Started

This app requires Ruby 2.3.0 and Rails 5. If you don't have those installed on your machine:

  • rvm install 2.3.0

Note that the Gemfile specifies the Ruby version as well as the Rails version:

# Gemfile

ruby '2.3.0'
gem 'rails', '>= 5.0.0.beta3', '< 5.1'

Once you have Ruby 2.3.0 installed,

  • git clone [email protected]:flatiron-school/scheduler.git
  • cd scheduler
  • bundle install
  • figaro install (creates config/application.yml and adds it to .gitignore for hiding sensitive information)
  • Get credentials for Github and Google from Sophie DeBenedetto ([email protected]), and add these credentials to config/application.yml:
OCTO_TOKEN: <credential goes here>
GITHUB_ID: <credential goes here>
GITHUB_SECRET: <credential goes here>
GOOGLE_CLIENT_ID: <credential goes here>
GOOGLE_CLIENT_SECRET: <credential goes here>

TEST_GOOGLE_ACCESS_TOKEN: <credential goes here>
TEST_GOOGLE_REFRESH_TOKEN: <credential goes here>
  • Run rspec to get familiar with the test suite. Tests use VCR to stub web requests.
  • Note: There is no seed data provided with this app. Instead:
    • run rails s
    • visit the /cohorts/new page
    • Give the cohort a name of web-1115
    • Upload the student CSV roster found here.
    • The app will automatically pull this cohort's calendar ID from Google Calendar. The Flatiron Blogger App is set up to provide endpoints for a dummy schedule for this cohort, with a start date of March, 2017 and an end date of June, 2017.

Tips

  • Most of the magic happens in the Schedules Controller. That's where you'll find the actions for deploying a schedule to GitHub and reserving classrooms on Google Calendar.
  • Check out the GitHub Wrapper class and the Google Calendar Wrapper class for the code that interfaces with those APIs.

Road Map

A few areas that need work:

  • Posting a schedule to GitHub and reserving classrooms on Goole Calendar should be extracted and run in background jobs, using something like Sidekiq.
  • Right now, anyone with an @flatironschool.com email address can log in. That means students can mess with the schedule. Oh no! We all know how tricky those students can be. You can implement a feature that only allows registered instructors to log in.
  • When a schedule's activities are updated, the google calendar is not updated. If a schedule activity that has reserve_room=true updates its start/end time, delete original room reservation first, then make a new one.
  • Two-way data relationship with GitHub: use webhooks to listen to any changes to the master branch of a cohort's repo on GitHub. Receive a payload of those changes and use them to update the appropriate schedule in the app.
  • Video link and Blog schedule management feature. Should be able to manage the videos/links.md aspect of a cohort's repo. Should be able to manage the blogs/schedule.md aspect of a cohort's repo.

scheduler's People

Contributors

sophiedebenedetto avatar antoinfive avatar joshuabamboo avatar talum avatar ipc103 avatar octosteve avatar

Stargazers

Noah Halstead avatar  avatar NDuma avatar James Tyler Morin avatar xzgyb avatar

Watchers

spike grobstein avatar James Cloos avatar Mat Balez avatar  avatar  avatar Adam Enbar avatar Victoria Thevenot avatar Rebekah Rombom avatar  avatar  avatar  avatar  avatar

scheduler's Issues

500s on schedule#create

We should figure out what's happening here and validate the form. Whatever's causing it is likely breaking the autodeploy as well.

The Oauth Client was deleted

https://cloudup.com/c1XhTcXR3L
Users can't oauth with gmail

screen shot 2017-01-09 at 11 19 28 am

2017-01-13T19:07:01.375499+00:00 heroku[router]: at=info method=GET path="/users/auth/google_oauth2" host=flatiron-scheduler.herokuapp.com request_id=04566fab-85f7-4d7c-b473-13ef8ff2b7cb fwd="71.190.177.92" dyno=web.1 connect=0ms service=16ms status=302 bytes=1770
2017-01-13T19:07:01.359591+00:00 app[web.1]: [04566fab-85f7-4d7c-b473-13ef8ff2b7cb] Started GET "/users/auth/google_oauth2" for 71.190.177.92 at 2017-01-13 19:07:01 +0000
2017-01-13T19:07:01.360074+00:00 app[web.1]: I, [2017-01-13T19:07:01.360000 #4]  INFO -- omniauth: (google_oauth2) Request phase initiated.

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.