Web Engineering

 

Web Engineering > Assignments > Final Project: Blog System

INFSCI 2955 - Final Project: Blog System


Introduction

One for the final project is to build a prototype blog system - something along the lines of Google's Blogger, but certainly not as sophisticated. Your blogging system should allow users to create an account, create a blog, write posts to a blog, and make comments on the posts of anyone's blog (including their own.) Because blogs are essentially stacks of timestamped strings, the blog should list posts in reverse chronological order. More detailed requirements are discussed in the following section.


Description

Whether you choose to program or model the blog system, the following page descriptions serve as the guide for the project requirements. Again, if you elect to code the prototype, you may use any server-side scripting language of your choice.

Home Page

Before a user can use any part of your blogging system, they must be authorized and authenticated by the system. Therefore, your home page should contain 2 forms - one to create a new account, and to log into an existing account. To create a new account, the user must supply a username, password, and blog title (no more than 50 characters.) Thus, when a user creates an account, he/she also creates (and becomes the owner of) their blog. To keep things simple, a user may be the owner of just one blog.

Blog Index Page

This simply lists all of the available blogs in your system. Each blog listing must include the title, the owner/creator of the blog, and a link to its contents. The blog index page should be available only to authenticated users.

Individual Blog Page

Again, only authenticated users can view this page. The individual blog page should show the title of the blog at the top, then display each post on the blog from newest to oldest. Each post should show the following:

  • Title
  • Author (same for every post)
  • Date/time the post was made
  • Content
  • A link to the comments

Additionally, the owner of the blog must also have a button (or link) available to him/her to create a new post. You do not have to worry about creating a mechanism for editing or removing existing posts.

New Post Page

Available only to the owner of a blog, this is a form for the owner of a blog to create a new post. The owner must provide a title and content for the post.

Individual Comment Page

Again, only authenticated users can view this page. Like the individual blog page, this page should display the title, content, author, and date/time of the post. It should also show the comments attached to the post in chronological order, showing the content, author, and time created. You should also include a form somewhere on the page to allow the user to post a comment. Remember, any authenticated user can make a comment on any post on any blog (including their own.)

Additionally, the owner of the blog also must also have a button (or link) available to him/her next to each comment to Delete that comment. You do not have to worry about creating a mechanism for editing comments.

Authorization

If a user tries to post to another user's blog or perform some other unauthorized action, he/she should receive an error message and be redirected to the home page. After the user has logged in successfully, you should include a message "You are logged in as $username" and a Log Out button (or link) somewhere convenient on the page.


Deliverables

Prototype Implementation: Place all project files in a ZIP or RAR file, including source code (with comments!), compiled classes (if you're using Java, for example), database files or database schema, and any special instructions for loading the project. Please email your ZIP or RAR file to jpg14@pitt.edu.

Modeling: You have the option of submitting me your project in paper or digital form. If in digital form, email a ZIP or RAR file to jpg14@pitt.edu containing all of your use cases as Word files and UML/UWE models as BMP/GIF/JPEG/PNG/PDF files. To give you an idea of scope, a student doing the project individually should submit the following items:

  • 4 use cases
  • 1 class diagram
  • 1 access model
  • 5 presentation models - one for each page listed above
  • 4 sequence diagrams (one for each of the use cases)