Project One: Design Twitter System
Welcome to Project One, where we are going to build and design Twitter.
Guide Tasks
  • Read Tutorial
  • Watch Guide Video
Video locked
This video is viewable to users with a Bottega Bootcamp license

I want to make a very quick point because you'll hear me say "design" quite a bit throughout this course. When I say "design" I do not mean building the user interface. That is a completely different course. That's when you're building the way that the users are going to interact with the application at a very high level and a user interface perspective.

When I say "design", I'm talking about how the system is architected. As a developer, when someone says that they want you to "design the system", this is most likely what they're talking about.

This project will involve a two-pronged approach, using both structural and behavioral UML diagrams.

Now, for the structural approach, we will be using class diagrams. These are the types of diagrams that can pretty much be translated directly into code. They allow you to set up your database associations and list out all your attributes, method names, and so on.

In order to complete this project, you will need to build a

  • user class
  • tweet class
  • retweet class
  • preference class
  • security class
  • message class
  • hashtag class
  • reply class
  • like class
  • location class
  • image class
  • users to follow other users

When you build this diagram, each one of those classes is going to represent its own database table, and it's going to be its own entity. You'll need to list each of the attributes inside each class. You can use Twitter for guidance, but build these classes in the way that you think is best

As far as operations within the application go, remember, those are method names. It might be "post a tweet" or "show a tweet" or "get all tweets". There are all kinds of different method names that you could use, but each one is flexible. You do have to use the full list of classes that I just gave you, but there is flexibility in regards to the attribute names and the method names and how all of those work. Imagine that you are the developer that they tasked with building Twitter, and take it from there.

I want you to pick out all of the class names and attributes that you think make the most sense, and then, most importantly, I want you to set up the relationships between them. For example, a user can have many tweets, which is implementing multiplicity. Show how that association works.

Each one of these classes is going to be connected in some way or another to another class. Not one of these is a standalone entity, so that's a very important concept to keep in mind.

Next are the behavioral diagram, which will involve building a use-case diagram. Remember that use-cases are very high-level. They're a great way of visualizing the types of authorizations that users have.

The different use-case diagrams are going to be for:

  • Actors: User and Follower
  • Posting tweets
  • Retweets and Likes
  • Optional features (e.g. Images to posts)

I want to leave the optional features up to your own creativity.