Post.e
🟨 🟧 🟥 A multi-programming language, social media platform example for iOS. Share photos, videos, text, any file type, follow others, and enjoy a dynamic newsfeed. Designed for developers and tech enthusiasts learning how to structure their own social media application.
Install / Use
/learn @scottgriv/Post.eREADME
<h1 align="center">🟨 🟧 🟥 Post.e 🟥 🟧 🟨</h1> <p align="center">Learn how to build and structure your own social media applicaiton using <bPost.e!</b></p>
<img src="./docs/images/phone_feed.gif" width="19%" height="19%"/><img src="./docs/images/phone_post.gif" width="19.1%" height="19%"/><img src="./docs/images/phone_splash.png" width="18.3%" height="18.3%"/><img src="./docs/images/phone_profile.gif" width="19.05%" height="19%"/><img src="./docs/images/phone_interaction.gif" width="19.05%" height="19%"/>
<h2 align="center">What is Post.e?</h2>- [x] Post.e is an open source iOS mobile application built using Swift and Objective-C for the client side.
- [x] Users can create profiles, follow others, and post messages similar to Twitter/X.
- [x] Supports media-rich posts with photos, videos, documents, and file attachments.
- [x] Supports multiple server-side languages, including PHP, Python, Node.js, Ruby, Go, Java, Rust, and Perl.
- [x] Powered by a MySQL-compatible MariaDB database, with JSON-based data interchange and built-in API support.
- [x] Designed to teach users how to build their own social media app from the ground up.
Table of Contents
- Features
- Background Story
- Definitions
- Getting Started
- What's Inside?
- Limitations
- Closing
- What's Next?
- Project
- Contributing
- Resources
- License
- Credits
Features
Below is a list of the main features and functionality of Post.e:
Login & Register Screens
<img src="./docs/images/phone_login-register.gif" width="19%" height="19%"/><br>
- Single Sign-On (SSO) capabilities by using a combination of Swift's UserDefaults class and server side session handling. Login once then automatically login in the future without signing in (unless, of course, you log out of the app which kills the active session in the
sessiontable). - Username & Password validations.
- Checks for minimum password length, min/max user name length, missing or empty fields, matching passwords, and invalid characters using
REGEXpatterns.
- Checks for minimum password length, min/max user name length, missing or empty fields, matching passwords, and invalid characters using
- Registering a User will create a new folder in the
server/uploadsfolder using the newProf_IDcolumn value, which is anAUTO_INCREMENTcolumn in the database (Posts work in this same fashion). - A unique
IDis also generated using theencoder.[language]file usingBase 64 Encodingto produce a unique external facingID, stored in the database under theProf_KeyorPost_Keycolumns, that can be used to share Posts or Profiles in the future.
Configure Programming Language Screens
<img src="./docs/images/phone_config.gif" width="19%" height="19%"/><br>
- Pick the server side language you want Post.e to use. This will route the requests to the toggled language folder.
- See Programming Languages below for more details on this screen.
Feed Screen
<img src="./docs/images/phone_feed.gif" width="19%" height="19%"/><br>
- Sort Posts by Newest:
- Newest consists of the most recent posts using the
Post_Createddate column in descending order. WHERE Post_Created DESC.
- Newest consists of the most recent posts using the
- Sort Posts by the Home experience:
- Home uses a number of columns to create a fun user feed experience using the below
WHEREclause: WHERE Post_Love_Count DESC, Post_Pin_Count DESC, Post_Reply_Count, Post_Created DESC.
- Home uses a number of columns to create a fun user feed experience using the below
- Click on the Profile name to segue to the user Profile screen.
Interaction Screen
<img src="./docs/images/phone_interaction.gif" width="19%" height="19%"/><br>
- View New Users on the App.
- Click on the Profile name to segue to the user Profile screen.
- Follow or Unfollow users directly from this screen.
Profile Screen
<img src="./docs/images/phone_profile.gif" width="19%" height="19%"/><br>
- Interactive Follower, Following, and Post count buttons that will segue to the Interaction screen when clicked.
- The Post count is not a button, its a Post total (including Replies) counter only.
- Profile picture display.
- Click the Profile tab icon to scroll to the top.
- Pull refresh to get the most recent Posts.
- Post button to create new Posts.
- Sort Posts on the Profile feed by: Newest, Oldest, Loved, Pinned, and Replied counts in descending order.
- Edit Profile
- Change your Profile picture (take a photo or select one from your library).
- Remove your Profile picture - setting it to the default placeholder image.
- Update your Profile Username (it must be unique) and Profile Name.
- Delete your Profile.
- Scroll to the bottom of the Table, Posts will load in 25 Post chunks. If the Post # > 25, a request will be sent to the server and an activity indicator will be shown in the Table footer as it fetches the next chunk of 25.
- Within the Post Cell:
- Preview & Save Attachments.
- Pin or Unpin a Post.
- Pins will be displayed on your Profile.
- You cannot Pin a Reply or Posts that you created.
- Only Posts displayed on Profiles or your Feed can be Pinned.
- Reply to a Post.
- Love or Unlove a Post.
- Delete your own Posts.
- Click on the Profile name to segue to the user Profile screen.
Reply Screen
<img src="./docs/images/phone_reply_1.png" width="19%" height="19%"/><img src="./docs/images/phone_reply_2.png" width="19%" height="19%"/><br>
- Reply to a Post on a dedicated screen with the Post you're replying to in the header.
- Reply to a Reply (there is no limit on the Reply depth).
- Sort Posts on the Reply feed by: Newest, Oldest, Loved, and Replied counts in descending order.
Post Screen
<img src="./docs/images/phone_post.gif" width="19.05%" height="19%"/><img src="./docs/images/phone_attachments.png" width="19%" height="19%"/><br>
- Type up a Post.
- Cancel the Post by clicking the Cancel button or the visible Profile Screen.
- Add Photos/Videos from your Camera or Photo Library.
- Add Attachments (Post.e comes with a demo directory with a few files ready to select) - see screenshot above.
- Submit the Post to the server.
- Haptic Feedback and Audible Post Alert after a Post has been successfully sent to the server.
Settings Screen
<img src="./docs/images/phone_settings-logout.gif" width="19%" height="19%"/><br>
- About section to view the current

