Overiew: -------------------------- Real-time video streaming from a camera connected to the PC or a webcam, typically less than 2 hours Archiving of video content for viewing at a later date Moderated 1000-user chatroom Question-submission form Display of current question and previous questions Logging and reporting of user IP addresses for: -Users present during Virtual Town Hall meeting -Users visiting the website over a given period of time Uploading and archiving of transcribed meetings Creation of an administrative console to moderate, edit, and publish content Chatroom content archival for administrative purposes.
Front-End: -------------------------- What I see is a website, where all of the activities occur on one page. One half of the screen is the streaming video content. The right half of the screen is the chatroom, limited to N many users (1000 for now but should be able to change this). On the bottom of the screen spanning both halfs is a Question submission form, and once submitted, if approved by moderator, will appear on the right half of the screen. This is what the speaker who is conducting the webcast will see. A small box in the corner will have previous meeting transcripts. It should be relatively easy to move each 'window' around. The chatroom in particular will have a flag button that appears next to a user's name -- if too many users feel that the user is saying something inappropriate, the moderator is informed, and can manage/block the user from the backend. Back-End: -------------------------- In as few pages as possible, I should be able to: 1) Review a log of users who've visited the site, uniques, pageviews, average visit length, referring website, geo-IP location, over the hour, day, week, month, year, or date range. 2) Moderate (deny) users by IP or Proxy if I have reason to believe someone is causing trouble, such as in the chatroom. If they've been blocked, they will be forwarded to another url of my choosing. 3) Question-submission moderation. As users submit questions to the speaker, it will show up automatically on the backend, and I can choose which one to approve. Questions that I haven't approved will stay in the queue. Questions that I have approved will appear on the front-end, the most recently approved question will stand out, such as in red text, and older questions will appear lighter, such as in light gray text. 4) Manage chatroom users: we can see the chatroom content going onwe can see what users are connected with their IP address and proxy, and the list updates automatically. If a user's been flagged too often, then his username will turn red and show #flags. We then can either A) limit how often he can chat (once/minute) (once/five minutes) (blocked via IP) that will only last as long as the current meeting or B) blocked via IP forever, or until we delete that IP from the block list 5) Upload transcripts, where I can set the content, title, and date that this meeting transcription occurred on. If made public the title/date and a snippet of the content (which I can enable/disable globally for all transcripts) will appear on the front page. Upon clicking it'll open up the content to the entire page. 6) Upload or link archived video, where I can set the title and date, and description. If made public, the title/date and the description of the ideo (which I can enable/disable globally for all videos) will appear on the front page. Upon clicking it'll open up the content to the entire page. The video will either be local such as a wmv file, or will be an embed option such as from youtube or googlevideos. More detailed information: -------------------------- Real-time video archiving ??" Once a connection to the computer has been made, there is some widget that will connect the camera to the server. Upon the establishment of a stable connection and hitting "start" via the backend, real-time video streaming will be available to as many 1000 concurrent users. Archiving of video content??" the option will exist for users to select from a list of archived video content in order to view content at a date later than it was first published. Moderated 1000-user chatroom??"a chatroom will be created to allow for up to 1000 concurrent users to discuss topics and ideas related to the content being presented. Users will be allowed to maintain anonymity in the chatroom by not being required to register with the website, though they will be required to create a username. Due to the nature of chatrooms, we will have the option of moderating (removing and blocking) the users in the chatroom. Question-submission form??"in order to foster discussion between the users and the speaker, a question-submission form will be available to the users of the website. Upon submission of the question, the question will appear on the front-end. Display of current question and previous questions??"through the utilization of the administrative console, we will have the option of displaying the current and any previous questions addressed by the speaker. Logging and reporting of IP addresses??"two records of users will be logged at all times. The first record will consist of the IP addresses of users participating in the chatroom or are watching the streaming video. The second record will consist of the number of total visitors to the website over a given period of time. The third component of this feature is the cross-referencing of this data to a geo-IP database, which will offer a rough approximation of the location of each visitor. Creation of an administrative console??"the entire administrative console will be web-based and dynamic. All changes will be automatically reflected on the live web site. We will be able to oversee and manage various aspects of the web site, such as the chatroom, video archive, text archive, question submission, and certain areas for copy. Documentation: -------------------------- Documentation will accompany the files that will explain how the software was written, considerations, assumptions, and focus on important details. These would be things that someone would want to know if they were to migrate or install on another server. The code will also contain sufficient commenting that a person who hasn't coded it, such as myself, can look a it and understand what step is being taken.
The files need to be able to run on a machine running Apache 1.3+, Linux Red Hat or similar (CentOS), PHP 4.1+, MySQL 4+. It should also be able to run on a server with 1200GB Bandwidth (100 Mbit/sec port) [url removed, login to view] with 1 GB DDR2 SDRAM The front-end needs to be identically viewed and identically functional on IE6, IE7, Firefox 1.5, Firefox 2.0+, Safari, Opera.