Post.e

🟨 🟧 🟥 Post.e 🟥 🟧 🟨

Learn how to build and structure your own social media application using Post.e!

FeedPostSplashProfileInteraction

What is Post.e?

  • Post.e is an open source iOS mobile application built using Swift and Objective-C for the client side.
  • Users can create profiles, follow others, and post messages similar to Twitter/X.
  • Supports media-rich posts with photos, videos, documents, and file attachments.
  • Supports multiple server-side languages, including PHP, Python, Node.js, Ruby, Go, Java, Rust, and Perl.
  • Powered by a MySQL-compatible MariaDB database, with JSON-based data interchange and built-in API support.
  • Designed to teach users how to build their own social media app from the ground up.

Features

Login & Register

Login & Register

Login & Register

  • Login once using SSO (Single Sign-On) via Swift's UserDefaults and a session-based back end. Stay logged in unless you explicitly log out.
  • Validates credentials using RegEx, checking for password length, field completeness, character limits, and invalid input.
  • Registers new users by creating folders in the server's upload directory using a unique Profile ID from the database.
  • Generates external-facing keys using Base64 encoding to uniquely identify users and posts for sharing.

Configure

Configure

Configure

  • Pick the server side language you want Post.e to use.
  • This will route the requests to the toggled language on the backend.
  • Some languages are not yet supported, but the structure is in place for future expansion.

Feed

Feed

Feed

  • Sort Posts by Newest, using the Post_Created column in descending order.
  • Sort Posts by Home, prioritizing Love Count, then Pin Count, Reply Count, and Post Created Date/Time.
  • Home feed is optimized for engagement and discovery by leveraging multiple columns in the query.
  • Click a user's profile name to segue to their Profile screen.

Interactions

Interactions

Interactions

  • View newly joined users on the app.
  • Click on a user's profile name to segue to their Profile screen.
  • Follow or unfollow users directly from the Interaction screen.

Profile

Profile

Profile

  • View your Followers, Following, and Post count, with interactive segues to the Interaction screen.
  • Sort your Profile feed by Newest, Oldest, Loved, Pinned, or Replied.
  • Edit your Profile: update your username, change/remove your profile picture, or delete your account.
  • Create new Posts, pull to refresh, and scroll to load more Posts in chunks of 25.
  • Post rows support actions like pinning, replying, loving, deleting, and viewing attachments.

Reply

Reply

Reply

  • Reply to a Post on a dedicated screen, with the original Post displayed in the header.
  • Supports replying to a Reply — with unlimited nesting depth.
  • Sort the Reply feed by: Newest, Oldest, Loved, or Replied counts.

Post

Post

Post

  • Type up a new Post and submit it to the server.
  • Cancel a Post by tapping the Cancel button or navigating to the Profile screen.
  • Receive haptic and audio feedback after successful submission.

Attachments

Attachments

Attachments

  • While you're entering a Post, you can add photos, videos, or any file type from your Camera, Photo Library, or Files app.
  • All file types are supported, including media, documents, archives, and more.

Settings

Settings

Settings

  • View the current Post.e version number from the app’s Info.plist.
  • Select your preferred language and view available translations supported by Post.e.
  • Displays your current folder directory used for file attachments, including toggling the sample files folder.
  • Change your password or log out, which also ends your server session.

watchOS App

watchOS App

watchOS App

  • Post to your Profile using voice-to-text or the Apple Watch keyboard.
  • Receive haptic and audio feedback after a successful Post submission.

Language Localization

Language Localization

Language Localization

  • English and Russian language support powered by Apple's Localization system.
  • Supported languages can also be queried from the language table in the database.

Dark Mode

Dark Mode

Dark Mode

  • Easily toggle between Light and Dark Mode for a different visual experience.
  • Dark Mode offers a sleek look that's easier on the eyes in low-light environments.