student #self_cancelled_count bugsquash supposed to say #count at the end
user#upcoming_appointments and user#past_appointments
specify only index, show, and update for appointments controller
add route for /dashboard path
change method in routes to go to appointments#student_dashboard
add link to Student Dashboard in the shared navigation if the current user is a student
appointments controller #student_dashboard method
dummy student_dashboard view under appointments
appointments_controller #student_dashboard returns past and upcoming appointments
student dashboard view shows past and upcoming appointments
carrierwave gem
appointment #rescheduleable? #refundable_when_student_cancellled? #cancellable? methods
carrierwave_backgrounder gem
carrierwave_backgrounder initializer specifies sidekiq as backend and carrierwave as queue
profile_photo_uploader for carrierwave, stores in fog
migration to add profile_photo string column to users
fog gem for s3 carrierwave uploading
sidekiq.yml file specifies carrierwave queue
mini_magick gem
mount_uploader profile_photo ProfilePhotoUploader on user model, process_in_background