The sample application

Before I start writing any code let me explain the app that we’ll build in this saga, some design considerations, etc.

We’ll build a simple classifieds websiteWhy?, simple:

  • Because I know the domain well enough that I can come up with real-sounding scenarios of how to change/evolve the application (been working on classifieds sites since 2006, and have created at least 3 platforms for different geographies in that time)
  • Because I’ve been there, so I can give a realistic view when thinking on how to implement it the MVC way
  • Because I can and I don’t need to give any trade secret away to make my case. I mean, I’m building this thing in my spare time and I’m using no code from work that’s not available Opensource.

Classy: The simple classifieds app

In Classy we’ll implement the most basic aspects of a Classifieds Site:

  • An Advertisement (Ad): What you post when you want to sell something, what you search when you want to buy something. it contains:
    • Title
    • Description
    • Tags: Tags identifying the object or service for sale, its location, etc.
  • A User: a person posting an ad on the site. A user has:
    • Email (also the login of the user)

Business rules

On the User:

  • A user is automatically registered when she creates an Ad
  • A user may request to be removed from the site to comply with the right to be forgotten
  • If we see a user posting bad ads, we should be able to block her to prevent her from posting more ads
  • Some users can act as administrators (admin). More rules on admin below.

On the Ad:

  • An Ad needs a non-empty title and description.
  • An Ad can be posted by a registered user. This user is the owner of the ad
  • An Ad can only be posted by non-blocked users.
  • An Ad can be edited by the owner and change both the title and description
  • An Ad can be deleted by the owner
  • An Ad has a duration of 30 days. After this period, if the Ad is still active, it’ll be automatically deleted
  • Deleting an Ad removes it from the DB.

On Admins:

  • An Admin can block, unblock or delete any user
  • An Admin can delete any Ad
  • An Admin can extend the life of an Ad for an additional 30 days at a time
  • An Admin can only be set by changing its flag in the DB

On the UEX:

I’m no designer, so this won’t be pretty… it will be minimalistic. The following flows/pages will be needed:

  • Post ad page: Single page
    • Will validate the Ad content (not empty)
    • If the user doesn’t exist it’ll be created
  • Home Page / Search
    • The home page is where you browse for ads
    • Ads are shown in reverse chronological order (most recent first)
    • If the user is identified in he frontend, she’s given options to edit or remove her ads

Next

In the next article, I’ll discuss the design of Classy the MVC way

Comments