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.
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
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.
Next Project
Snap & Track Vision Pipelinearrow_forward