I am looking to build a site with the following features, but the more I try to do it, the more I realize I am too rusty and have too many other projects going on at this time. I can (
and will) pay whomever takes on the project, please email me at email@example.com with your offers/quotes.
The biggest rub is that I want to offer a Flash version of the site. While I know the basics of communicating between Flash and PHP, the best and easiest method I know of is to have the PHP return XML format which Flash reads in as if it were (amazingly enough) a static XML document. If anyone is experienced with Flash and knows a better way to communicate between PHP and Flash, I am open to suggestions.
For now I will be just going HTML, but I need the functionality for Flash to be there for when I have time to create a flash version.
Secure account login
: I need to have clients log in to this section of the website securely. Not pentagon security, but standard 'I am keeping user info possibly including credit cards' security.
Scheduling system / Calendar
: this is (for me) the biggest and hardest element. I need my clients to be able to view my calendar when they are logged in, and to schedule times which are shown as available. Here's the gist; when a user logs in and goes to the calendar, they see a month view, week view, or daily view (based on their preferences).
In month or week view, they see days as fully booked, fully open, or partially open. This will be represented by different colors (I am thinking red for fully booked, white for fully open, and yellow for partially open - not critical though.) Clicking a day takes them to the daily view. In daily view, time is listed in 15 minute increments, for 24 hours (midnight through midnight). I am figuring on 2 columns of 12 hours each, which is then subdivided into 4 15-minute segments; but again the design is not as critical as the function. Each 15 minute segment will show as booked or available.
If the user clicks on an available time slot of at least
90 minutes, they can book time by entering into a small form the start time (prepopulated based on the time they clicked, but editable) and the total length of the appointment. There is a minimum of a 1 hour appointment, and the appointments are in 30 minute increments, so 60, 90, 120, 150, 180, etc. are valid appointment lengths. I would like the system to add 15 minutes prior to and after the desired time, and then check to see if it is a valid appointment...
For example, on whatever day it is, I am free all day. A user logs in and clicks on 10:00am. He gets a form with 10:00 as the start time, but decides to change it to 10:15. He then selects 90 minutes as the length (from 10:15 to 11:45), and clicks the submit button. The system adds 15 minutes before and after, and checks to see that 10:00 (15 before 10:15) through 12:00 (15 after 11:45) is available. Since it is, the time is scheduled, and anyone else viewing that day sees it as booked.
A second user logs in and she checks the same day. She clicks 12:00, and tries to schedule a 1 hour appointment (12:00 to 1:00). The system adds 15 before and after, checks from 11:45 to 1:15, and sees that 11:45 - 12:00 is not available. It alerts her, telling her the exact time conflict. (If there had been more than one conflict, I would like it to list every period of time not available, like "Sorry, your appointment conflicts with another, from 11:45 to 12:00, from 12:00 to 12:15, and from 12:45 to 1:00.")
I do not want my clients to see who has time scheduled, except possibly seeing their own appointments. Otherwise it is all listed as simply 'booked' or 'available'.
On my admin console, I want to see exactly which user has which time slots, as well as what times are the '15-minute padding' before and after appointments. I also want to enter in time as booked for myself; for phone-in appointments, or times I don't feel like working, etc.
Finally, the last part (for now) of this booking system is credits. Each month, the clients will have X
credits added to their account. If they had not used all of their credits previously, they are not lost but added to the total. Each appointment they book costs N
credits - I have not yet decided on the value of a credit, but for now let's use a generic 60 (one per minute).
The number of credits they receive each month is determined by their subscription level; and if they run out of credits, they will get an alert letting them know how short they are, such as a client with 48 credits remaining who wants to book a 90 minute appointment will get an alert, "Your requested appointment requires 90 credits. You have 48 remaining in your account. Would you like to purchase more credits now?"
Which leads us to the last area that is a need -
credits. They will have to subscribe at different levels ( I think 4 plans for now, I haven't determined the details yet). Each plan gives all the same access, but simply a different number of credits. If they schedule an appointment online (as above), it should automatically deduct the listed number of credits. But I also need to be able to add credits (refunds) or delete credits (appointments scheduled on the phone, other services I may offer for credits, etc.) manually.
The cost of extra credits (if they have run out or are low but want to use more credits this month) also depends on their subscription level... say they subscribe for (these are purely hypothetical numbers for now) 60 credits a month at $30 a month. It would cost them $0.75 per credit to buy more. If they subscribed for 120 credits a month at $55 a month, it might only be $0.60 a credit for extra. And so on.
So I need the site to keep track of how many credits they have month to month, and how many they use, as well as let me adjust their total manually. Depending on my 'wants' being fulfilled, I may have other areas of the site that automatically deduct credits as well.
Webcam: I would like a webcam type conference system set up for instructional seminars, as well as a live help desk. Basically, I would like to charge each user a set number of credits per minute for one-on-one helpdesk situation, not as much as a regular appointment (since I don't have to leave home to help them), but probably about 1/3 - so billed in 3 minute increments, of 1 credit each (to follow the above numbers system).
Also, for the conferences; this should be less than the appointments for live help or for the one-on-one webcam helpdesk. Maybe 10 minutes per credit. I will simply provide a short conference once a month, maybe more or less often depending on my schedule. Anyone who wants to can log in and is billed the proper number of credits per time interval. They can chat with me and each other, to ask questions and such, but I am the only one who needs to have a webcam image sent to everyone. I would prefer the chat be 'live' or 'streaming', but a constant refresh type of chat would work as well.
Member management: With all of the above, this should be obvious, but I plan on having a number of regular clients become members of a special test site, where they pay for credits which they can spend on various services. I would like to keep their information private, but have a small database where I can see info such as real name (versus their chosen user name), address, phone number, email, birthday, whatever else info I decide to collect on them. I would also like several 'notes' style fields so I can keep track of annoying customers, customers I like, customers who have 'special needs' and so on. Finally, I would like to have a record of all appointments, webcam conferences or one-on-one help desk sessions, manually entered (by me) appointments, etc. I have a bad memory, and this will aid me in remembering who has been asking for what, so I know what they might be needing for that next appointment. Again, this should be secure, so that only I can access it.
If possible, while sill keeping it secure, I would like to share some of that information with a public user database, such as for a forums system (probably phpbb, since I am most familiar with those forums), and maybe even a live chatroom system - so they can chat with one another and discuss common issues they have, and I can jump in and chat with them about random stuff too, for free (no credits).
So those are two other 'wants' . . . bulletin boards and a chat room; however I have access to several free ones on my server (through ScriptA and Fantastico). So unless special considerations are needed to integrate those with everything else, I'll just stick with free.
I don't have a 'planned' budget for this, which is bad because I would like to implement it ASAP. My realistic operating budget (for everything, not simply this)
is only a few thousand dollars, and I would love to keep it as absolutely low as possible. Depending on timing, my budget may change (for more or less) - so please contact me right away with quotes and offers. I prefer email, but I will try to check this forum as often as possible so replies here are fine too.