by Chris Borowski, Software Developer • @chriseborowski

Modern logo featuring an outline of a speech bubble with a bird’s head inside on a sky blue background representing Witter.

Witter: a web-based social media platform with user profiles, posts, and follows functionality built using Python and Django framework.

Introduction

I’ve recently been building Witter, a robust and feature-rich social media platform built with Python. Witter is designed to provide users with a seamless experience for sharing thoughts, connecting with others, and exploring content. This blog post delves into the software development process, offering an in-depth look at Witter’s software architecture and its key features as a modern social networking tool.

This blog post introduces Witter, its software architecture, and key functionalities, providing sample Python code snippets, and a list of potential future enhancements and improvements.

Table of Contents

Witter: The Social Media App After Twitter

With the good ol’ Twitter no longer in place, I designed Witter as a social media app for those nostalgic about the classic Twitter experience. My approach drove the design decisions that put a clean, easy-to-use, and user-friendly interface before everything else. Witter’s streamlined design focuses on the core functionalities that users loved about the original Twitter, such as concise posts, follower relationships, and an intuitive feed. Leveraging modern web technologies and the robust Django framework, Witter offers a familiar social media experience to all.

Software Architecture and Functionalities

Witter is a Python-based social media application built using the Django web framework. It enables users to create profiles, post messages, follow other users, and interact with content through a web interface. The app implements user authentication and authorization, allowing users to register, log in, and manage their accounts securely.

Witter utilizes Django’s Model-View-Template (MVT) architecture, with models defining the data structure for users, posts, and follows. The application features a search functionality, allowing users to find other users and posts. It employs Django’s built-in Object-Relational Mapper (ORM) for efficient database operations and leverages class-based views for clean, reusable view logic. The templating system uses inheritance for consistent UI across the platform. Witter’s modular design, with separate apps for different functionalities, promotes maintainability and scalability. The project structure follows Django best practices, with configuration files, static assets, and templates organized in a clear and logical manner.

The application’s architecture is structured around the following key components:

  1. User Management: Handles user registration, authentication, and profile management.
  2. Post Management: Manages the creation, retrieval, and deletion of user posts.
  3. Follow System: Allows users to follow and unfollow other users.
  4. Feed Generation: Generates personalized feeds for users based on their follows.
  5. Search Functionality: Enables users to search for other users and posts.