cs445 - Fall 2015 - Class Project
SAD - a Special Advertising Directory
2. Acceptance Criteria
The basic implementation of the project assumes the application runs on a server and that various clients access it through a REST interface.
Sample XML/JSON files used to test your functionality will be available here soon.
Scenario that will be used to test your application: coming here soon.
3. Questions and Answers
Check here for answers before asking your TA or the teacher.
4. Extra Credit
The main purpose of this project is to practice object-oriented analysis, design and programming, not to teach you web development frameworks or relational databases. As such, the use of a database is expressly prohibited for the core project implementation.
There is a finer point to be made about the databases ban, namely that most students would start their from with the design of a database schema, the way they learned in the Databases class, instead of thinking about use cases, entity objects, etc.
In fact, the database should be a plug-in to your application, the same way the delivery mechanism should be, whether command line, web, etc.
We can talk about extra credit iff (if and only if) your core project implementation works impecably. This point will not be debated.
If you complete your core project implementation on time and feel adventurous, then you can get extra credit for implementing a web client for the customer.
5. Project Description
Yellow pages refers to a telephone directory of businesses, organized by category, rather than alphabetically by business name and in which advertising is sold. The directories were originally printed on yellow paper, as opposed to white pages for non-commercial listings. The traditional term yellow pages is now also applied to online directories of businesses. -- Wikipedia
An online advertising directory is very much like the yellow pages.
Well, I want to build a better online advertising directory (OAD) so I'm asking you to write the software that allows me to do it.
I call my business SAD because it's a Special Advertising Directory, as opposed to the Ordinary Advertising Directories (OAD).
Each advertiser that wants to be in the SAD can buy one or more listings in the directory. Each listing contains some text that describes what the business is about, an image and a link to the advertiser's website.
Each listing has a price, a start date and an end date.
Listing can be "regular" or "featured": a featured listing can be either "category-featured" or "home-page-featured".
A "category-featured" listing is displayed prominently every time somebody selects the category for viewing. A "home-page-featured" listing will be displayed prominently only on the home page of the directory.
A featured listing is also given more space and a better placement in the page (assuming the client is a browser or a smartphone app).
If multiple featured listing are found, then they will be displayed based on a system-wide setting that allows the following: random, by advertiser name, most recent first, most profitable first.
A directory user can select a category and view all the listings in that category. If no category is specified, then home-page-featured listings will be displayed.
An administrator can create categories, modify existing ones, or remove them. An administrator can also create listings in the directory and edit advertiser information.
When advertisers call with a question about the service, our customer service people should be able to look them up by email address, or their last name, or by the name of the business, or by their phone number, or by their Facebook, or Twitter or Linkedin information. If found, then our customer service people should be able to see past listings and active listings.
The other thing that I need is some sense of how we're doing as a business. Here are some of the things I want to know:
Here is a list of possible future enhancements:
That's all for now ... is this super-complicated? Can I get this by mid-November?
$Id: project.html,v 1.1 2015/09/13 14:28:49 virgil Exp $