Social Feed is a learning-focused SwiftUI application inspired by modern photo-sharing products. It explores a complete social-app structure: multi-step registration, authentication, profiles, a Firestore feed, photo selection, post creation, search, messaging, notifications, reels-style UI, and tab navigation.
- Firebase Authentication for account creation, login, session restoration, and sign-out
- Firestore-backed user profiles and timestamp-ordered posts
- A multi-step SwiftUI registration flow
- Photo selection with PhotosUI and post composition
- Profile editing, user statistics, post grids, stories, and feed cards
- Real-time chat updates using Firestore snapshot listeners
- Search, notification, upload, reels, and messaging feature modules
- MVVM-style organization across authentication, feed, profile, search, and upload flows
InstagramTutorial/
├── App/
├── Core/
│ ├── Authentication/
│ ├── Feed/
│ ├── Messages/
│ ├── Profile/
│ ├── Search/
│ ├── UploadPost/
│ └── TabBar/
├── Model/
└── Services/
- Xcode 16 or newer
- iOS 18.5+ target
- A Firebase project with Authentication and Firestore enabled
- Clone the repository and open
InstagramTutorial.xcodeproj. - Select your signing team and use your own bundle identifier.
- Register the app in Firebase and replace the Firebase configuration with your own.
- Enable Email/Password authentication.
- Create Firestore collections for
users,posts, andmessages. - Build and run.
This repository is an educational implementation rather than a production social network. Uploaded images are encoded into Firestore documents for demonstration; a production version should use Firebase Storage or another object store. Error handling, moderation, pagination, security rules, and media processing also need production hardening.
- Move media uploads to object storage
- Add Firestore security rules and emulator-backed tests
- Paginate the feed and search results
- Improve surfaced error states instead of logging failures
- Add accessibility identifiers and meaningful UI tests
- Remove user-specific Xcode state files from version control