Giter VIP home page Giter VIP logo

bjga-scheduler's People

Contributors

agentphoenix avatar

Watchers

 avatar

Forkers

kleitz

bjga-scheduler's Issues

Achievements

Overview

Add accomplishments that users can work toward to earn badges and highlight their work. Examples of accomplishments might be:

  • Take 1 lesson
  • Take 10 lessons
  • Take 25 lessons
  • Take 50 lessons
  • Take 100 lessons
  • Participate in an event
  • Participate in a program
  • Set a goal
  • Accomplish a goal

Requirements

  • New database table for storing goals
  • Checks during booking to see if a goal has been accomplished

Estimate

15 hours

Events

  • user.registered
  • user.created
  • user.updated
  • user.deleted
  • user.password.reminder
  • user.password.reset
  • book.lesson.create
  • book.lesson.update
  • book.lesson.delete
  • book.program.create
  • book.program.update
  • book.program.delete
  • staff.created
  • staff.updated
  • staff.deleted

My Schedule

Item is a lesson

  • Email: (staff only) email the user
  • Withdraw: (users only) withdraw from the appointment and email the instructor
  • Cancel: (staff only) cancel the appointment and email the attendee
  • Edit: (staff only) edit the appointment
  • Check: (staff only) mark as paid

Item is a program

  • Info: show the event page
  • Email: (staff only) email all attendees
  • Withdraw: withdraw from that particular instance
  • Cancel: (staff only) cancel the instance of the appointment
  • Edit: (staff only) edit the service
  • Users: show all attendees with an option to mark the item as paid
  • Users: show all attendees with an option to remove attendee

Events

service.created

  • Update the instructor's calendar if it's a program

service.deleted

  • Update the instructor's calendar if it's a program
  • Notify attendees the service has been cancelled

service.updated

  • Notify attendees the service has been updated and they should log in to see if there have been any changes to the schedule
  • Update the instructor's calendar if it's a program

user.registered

  • Add user to Mailchimp list

user.created

  • Notify the user an account has been created

book.lesson.created

  • Notify the user their lesson has been booked
  • Update the instructor's calendar

book.program.created

  • Notify the user they've enrolled in a program

book.block.created

  • Update the instructor's calendar

book.cancel.student

  • Notify the instructor the student has cancelled

book.cancel.instructor

  • Notify the attendees the instructor has cancelled

staff.created

  • Notify the user they've been added as a staff member

staff.deleted

  • Notify the user they've been removed as a staff member

appointment.created

  • Notify the attendee of the booking
  • Update the instructor's calendar

appointment.updated

  • Notify attendee of the change
  • Update the instructor's calendar

staff.updated
user.password.reminder
user.password.reset
user.updated
user.deleted

Service management

  • Create lesson service
  • Edit lesson service
  • Delete lesson service
  • Create program service
  • Edit program service
  • Delete program service

Production deployment

Server

  • /opt/php54/bin/php

Cleanup

  • Remove log files from app/storage/logs
  • Remove cache files from app/storage/cache
  • Remove view files from app/storage/views
  • Compile files using php artisan optimize --force
  • Generate unique key
  • Update composer.phar
  • Remove all debug code

Email

  • Setup Mandrill
  • Add credentials
  • Test sending emails

Queues

  • Setup IronMQ
  • Setup queue on production
  • Test queue on production

php artisan queue:subscribe scheduler http://booknow.brianjacobsgolf.com/queue/receive

Staff management

  • Regular schedule through schedule admin
  • Schedule blocks through schedule admin
  • Remove regular schedule from staff/edit

Book a service

  • One-click enrollment
  • One-click withdrawal
  • One-click cancellation
  • Book lesson
  • Enroll in program
  • Staff blocking appointment

Business goals

Overview

Allow staff members to create business goals and then see the results of those goals against actual numbers in the monthly report.

Goal: see 25 students in June
Result: saw 22 students in June, so the monthly report will show a graph that indicates what the goal was and what the actual result ended up being

Requirements

  • New database table for storing goals
  • UI for adding/editing/deleting goals
  • New report for business goals

Estimate

5 hours

Better cancellation

  • Instructor cancels non-recurring lesson
  • Instructor cancels non-recurring program
  • Instructor cancels recurring lesson instance
  • Instructor cancels recurring lesson series
  • Instructor cancels recurring program instance
  • Instructor cancels recurring program series
  • Student cancels non-recurring lesson
  • Student withdraws from non-recurring program
  • Student cancels recurring lesson instance before series begins
  • Student cancels recurring lesson series before series begins
  • Student withdraws from recurring program instance before series begins
  • Student withdraws from recurring program series before series begins

Online payments

Overview

Be able to accept payments directly from within the scheduler as well as setting up recurring payments for recurring services through Stripe.

Estimate

100 hours

Appointment management

  • See all attendees for a program
  • Remove attendees from the program
  • Mark an attendee as paid
  • See all appointments for a user
  • User's appointment history
  • Create a new appointment independent of availability

Better UI for services

Because of a limitation in Bootstrap, having 2 of the same tab collections only works on the first one on the page. Because of this, we needed to compromise and go with a tab-less approach. This could create issues as more services are added. Need to look at a better design for everything.

Restore deleted items

Overview

Create an interface that will allow for restoring soft deleted items such as users, staff members, and appointments.

Requirements

  • Interface for restoring deleted users
  • Interface for restoring deleted staff members
  • Interface for restoring deleted appointments

Estimate

15 hours

Student development plans

Overview

Allow instructors to create a development plan for a student. Each student can only have one plan, but within the plan, they can have as many goals as the instructor wants. Both students and instructors can create goals.

Within each goal, the instructor and student can communicate back and forth. Goal can be marked as accomplished so both instructor and student can see the progress the student is making.

In addition, any private lesson or series instance can be associated with a goal in a plan. This allows for showing the different instruction that's gone into accomplishing the goal.

Course stats will allow students to enter their stats for rounds. They can enter the course, the score, fairways in regulation, greens in regulation, putts, and penalties. Along the same lines, an instructor could log TrackMan Combine scores as well as part of a goal. And finally, students would be able to log practice time as well.

Database

  • plans
    • id
    • user_id
  • plans_instructors
    • id
    • plan_id
    • staff_id
  • plans_goals
    • id
    • plan_id
    • title
    • summary
    • completed: boolean
    • completed_date
  • plans_goals_conversations
    • id
    • plan_id
    • goal_id
    • user_id
    • content
  • plans_goals_stats
    • id
    • goal_id
    • type: round, trackman
    • course
    • score
    • fir
    • gir
    • putts
    • penalties
    • notes

Check enrollment status when enrolling in a program

Currently you can enroll in a program multiple times. We need to check for the enrollment status and show a message if the person is enrolled. Additionally, if they are enrolled, we should give them the option right there to withdraw.

Reports

Monthly report

  • Revenue this month
  • Revenue YTD
  • Students seen this month
  • Students seen YTD
  • Revenue per student this month
  • Revenue per student YTD
  • Lesson hours this month
  • Lesson hours YTD
  • Revenue per hour this month
  • Revenue per hour YTD

Unpaid Services report

  • Mark as paid
  • Email user

User credits

Overview

  • 2 types of credit: monetary and time
    • A user can have one, both, or none of each type of credit
  • We'll show a user in the sidebar what they have for credits (if any)
  • User credits can only be used when booking lessons, not programs
    • Currently, services don't have a duration associated with them (and each instance could have a different duration), so it's much more difficult to get price per minute than with lesson services.
  • Applying a code will happen via a pop-up.
  • When booking:
    • Will first look for monetary credit and use it if it's there.
    • Will look for time credit and use it if it's there.
    • If there's no credit at all, it'll book as usual.
  • Promo code admin
    • Create new code
    • Delete a promo code
      • Only time promo codes can be deleted
      • Time promo codes will expire 1 year after being applied to a user's account
      • Monetary promo codes cannot expire
    • Edit a promo code
  • Cancellations
    • When a non-recurring lesson is cancelled that has been paid for, a time credit is issued
    • When an instance of a recurring lesson is cancelled that has been paid for, a time credit is issued
    • When an entire series of a recurring lesson is cancelled, any paid services will trigger a time credit being issued

Requirements

  • New users_credits table
  • Interface for managing credits
  • Searching through user credits
  • Interface for users to see how many credits they have
  • Booking service update for using credits if they exist
  • Show final price for the service
  • Handle amount and amount owed in the users_appointments table
  • Show amount due in the details pop up
  • Redeem promo code pop-up
  • Cancellations
    • Add hourly credit for paid recurring lessons
    • Add hourly credit for paid non-recurring lessons
    • Re-credit used user credits if it was used

Estimate

20 hours

Actual Time

30 hours

Generate iCal files

  • Update when a program service is created
  • Update when a program service is updated
  • Update when a program service is deleted
  • Update when a lesson is booked
  • Update when a lesson is updated
  • Update when a lesson is withdrawn from

Emails from the system

  • User registration email
  • User created email
  • Staff created email
  • Password reset email
  • Program removed email (to attendees)
  • Program updated email (to attendees)
  • Attendee withdrew from program (to instructor)
  • Attendee cancelled lesson (to instructor)
  • Instructor cancelled lesson (to attendee)
  • Direct email to user
  • Lesson booked email
  • Enrolled in program email
  • Reminder email (24 hours before)

Service reminder email

The day of a person's appointment, they should get an email reminding them of their appointment. Need to figure out the best way to handle this.

Booking

  • One-click enrollment
  • One-click withdrawal
  • Appointment booking

Book a lesson

  • Add record to appointments table
  • Add record to users_appointments table

Book a bundle

  • Add X number of records to the appointments table
    • Each record should be associated with a staff member
    • The first record should have a date, start time and end time
    • Any records have the first should have a blank date, start time and end time
  • Add X number of records to the users_appointments table

Book a school/clinic

  • Add record to the appointments table
  • Add X number of records to the users_appointments table
    • X = the number of people attending the school

Book a program/event/team

  • Create the program/event/team
  • Creating the program/event/team will automatically add records to the appointments table
  • Each person that joins the program/event/team adds a single record to the users_appointments table
    • User limit set on the service

New icons

  • Phone
  • Facebook
  • Twitter
  • Email
  • Checkmark
  • Money
  • Ban
  • Graph

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.