FlashX screenshot

Overview

FlashX is a social networking application for Android and iOS. People share posts, stories and short-form videos, message each other, and broadcast live. The Flutter app talks to a REST API that I designed and built first, before any of the mobile screens.

The solution

I built the complete backend first as a Django REST Framework API, then the Flutter client on top of it. Media is uploaded from the phone directly to Cloudinary using signed uploads, so large video files never pass through the API server.

Objectives

  • Give the product its own identity instead of copying an existing social app.
  • Keep the mobile client thin, with all business rules in the API.
  • Run on both Android and iOS from one codebase.

Main functionality

  • Posts, stories and short-form videos
  • Direct messaging
  • Live streaming with real-time viewer interaction
  • Discovery and search
  • Token-based authentication with rotating refresh tokens
  • Admin and moderation tools

Technical architecture

A Flutter client communicates only with a Django REST Framework API over HTTPS. Authentication uses short-lived JSON Web Tokens with rotating refresh tokens that are blacklisted on logout. Application data lives in PostgreSQL. Media files live on Cloudinary and are uploaded from the device with signed requests.

Implementation

State management in the Flutter app uses Provider. The API is documented with OpenAPI. Search uses PostgreSQL trigram matching.

Database and system design

PostgreSQL holds accounts, content, relationships and messages. Media is stored on Cloudinary and referenced by identifier.

All projects

More work

Mobile ApplicationsIn development

Kibarua

Web ApplicationsLive

Naretu E-commerce

Next.js, CSS, PostgreSQL, M-Pesa

Have a project in mind?

I take on web and mobile development, backend work and design projects. Tell me what you are trying to build and I will reply by email.