AP LogoAustin Profenius
Web App

Kinetic

A social media web application built with Flask and SQLite where users can create accounts, make posts, add friends, like and comment on posts, and send direct messages.

Demo

Overview

Kinetic is a full-stack social media application where users can register, create profiles with profile pictures, publish posts, and interact with other users through likes, comments, and direct messaging.

The app includes a friend system for adding and viewing friends, a search feature to find users by name, and a real-time-style messaging interface for private conversations between users.

Built with Flask on the backend using SQLAlchemy for ORM and SQLite for the database, with Jinja2 templates and Bootstrap 4 for the frontend.

error

The Problem

  • Needed to build a full social media experience with multiple interacting features — posts, comments, likes, friends, and messaging — all within a single Flask application
  • User authentication and session management had to be handled securely with profile picture uploads
  • Direct messaging required a chat-based interface linking conversations between two users
check_circle

The Solution

  • Designed SQLAlchemy models to handle the relationships between users, posts, comments, likes, friendships, and messages
  • Implemented session-based authentication with profile picture upload support via Flask's file handling
  • Built a chat system with separate views for listing conversations and viewing message threads between users
  • Used Jinja2 template inheritance with a base layout for consistent navigation across all pages

Technical Implementation

SQLAlchemy Data Models

The database layer uses SQLAlchemy ORM with models for User, Post, Comment, Like, Friend, Chat, and Message. Relationships between models handle the social graph — friendships, post interactions, and message threads.

Session-Based Authentication

Users register and log in with session-based auth managed by Flask. Profile pictures are uploaded and stored in the static directory, linked to user accounts.

Direct Messaging System

The messaging feature includes a chat list view showing all active conversations and a message thread view for each chat. Messages are stored with sender/receiver relationships and displayed chronologically.

Jinja2 Templating

All pages extend a base template with a shared navbar. Individual templates handle login, registration, home feed, user profiles, post detail, friends list, search results, chat list, and message threads.