Skip to content

ChitChat Requirements & Specifications

Vuyisile Ndlovu edited this page Oct 5, 2024 · 2 revisions

Problem Statement

We want to build an open-source social network using Python in order to collaborate, improve our coding skills, and hopefully showcase in our portfolios. This project will strengthen our knowledge of building web applications using Python, collaborating with each other, front end frameworks and deployment strategies.

Goals

What should be true after this project is implemented?

We will build a social network application similar to Twitter that allows users to find and follow other users, and send their followers text-based content posts or updates.

Non-goals

What is explicitly not in scope and why?

Proposed solution

What changes are required to solve this problem and achieve the project goals?

What are the high-level architectural requirements?

Diagrams can be very helpful here. The web/mobile design should look something like the one here

  1. Python backend

  2. JavaScript Frontend

  3. The project must be API-based

  4. The project should have as much automation as possible in running tests, deployment and code integrations

Features

  1. Authentication
  2. User Profiles
  3. Search (find users)
  4. Ability to follow other users
  5. Posts/Tweets to followers
  6. Likes/Comments

Authentication

What should be true about the Authentication feature?

  1. Users should be able to register to the site
  2. Users should have ability to login and logout
  3. Users should have the ability to update information in their profile such as username, password
  4. The app should send users emails on account signup, password reset etc
  5. Allow users to login using social logins

User Profiles

  1. Information about each user that includes:
    • full name
    • email
    • username
    • bio
    • followers list
    • follow list
  2. Each account should have a unique account identifier such as a UUID, username or email address

Search

Users must be able to find other users by their handle/username or name and choose whether or not they want to follow them. In the first iteration of the app, users will have the ability to follow other users to see their posts and unfollow them to stop seeing their posts.

Follow/Unfollow

  • Follow and unfollow other profiles
  • Users see only the posts of user-profiles they follow The relationship between users and their followers is asymmetric .. i.e. a user can be followed by a user they don’t follow.

Posts

  • Users can make posts that their followers can see
  • In the first iteration, posts are text only but future versions of the app can include video, image and audio content.