The purpose of requiring a design document is to encourage you to think seriously about what your project is, and how you're going to work on it over the next 11 weeks. As discussed briefly in class, the more effort you put into thinking about things ahead of time, the easier they will just come together when you do start to implement. Implementation followed by design is not a good idea.
The design document should be more or less in this form, though
you can use ASCII or Word if you prefer. There's no need for
fancy graphics or strong production values. The content is what
counts, though good English and the absence of typos and spelling
mistakes will suggest that you have taken some care with it.
For example, one component is likely to be a database where information about client visits is recorded. It would make it possible to recall previous visits by this client and make information from those visits accessible for searching and combining with the current query. What information is stored in the database? Is there more than one database? What are the basic relational tables?
Another component will the the user interface. Web users might see a GUI that lets them search for information, select parts of it for update, and see the updated information. What form will this interface likely take? For example, it might be written with Flash to provide something very graphically sophisticated. In that case, would you need another component to provide the same information for users who do not have Flash?
If your system requires some kind of administrative interface, that would likely be another component; you would want to discuss its properties as well, and perhaps say what you plan to do about security issues, if anything.
A typical 3-tier system will have logic in the middle that extracts query requests from forms, formulates database queries, and formats the return information. This processing is the most specific to your project, so you want to plan it and spell it out as carefully as you can here. What kinds of information are presented to the user, what responses are received, what processing is done on those before something is sent back to the user?
For example, you should specify interfaces to the database in such a way that you could reasonably replace one database system (say MySQL) by another (Postgres) without change. Similarly, you should be able to make significant changes to the user interface appearance without changing the code that processes the information from the user.
What's a milestone? Basically, it's some task or feature or the like that is either 100% done, or not, and you only count it as met when it is 100% done. So installing a web server on a personal machine or shipping a beta version to a friend to try is a milestone, but "coding done" is not, since you don't know what "done" means.
What are the stages of your delivery? What will you build first to demonstrate minimal but working end to end functionality? What do you plan to have working for your first prototype?
The timeline for a previous project tells how a very well-run project progressed; you might study that as you think about your own schedule.
For example, if you plan to use Flash, do you have to acquire a copy somewhere, and does it cost money? If only one of you knows PHP, while two know Java but not well, there's a potential problem either way, and you have to assess which path to follow and allow some time for getting up to speed. Do PHP and MySQL run on OIT machines? Do Java programs work with campuscgi? You should find out right away whether your intended software is available on your intended platforms, and have a fallback plan if it is not.