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





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 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
- 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
- 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
- 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
- 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 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
- 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
- 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
- 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
- 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
- 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
- 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.