An iOS auction platform where users can browse, bid on, and post auction items across categories. Built as a personal project to explore clean modular iOS architecture.
auksiya.az is a marketplace-style auction app for iOS. Users can sign up, browse active auctions by category, place bids, post their own items for auction, and manage their profile and notifications — all in real time.
Platform: iOS 17+
Language: Swift / SwiftUI
Architecture: Clean Architecture — Domain, Data, Infrastructure, Features layers
- Auth — sign up, login, session management via Keychain
- Home — browsable feed of active auction items
- Categories — filter and search items by category and subcategory
- Auction Detail — item details, bid history, place a bid
- Post — list your own item for auction with photos, pricing, and dates
- Profile — view and update your account information and posted items
- Notifications — in-app notification feed with mark-all-read
- Favorites — save and manage favorite auction items
The project is split into independent modules, each with a clear responsibility:
AuctionProject/
├── Core/ → Remote SPM package (AuctionProject-CoreKit)
│ Shared utilities, UI components, theming, DI container
├── Domain/ → Entities, repository protocols, use cases (no dependencies)
├── Infrastructure/ → Network layer, Keychain service, connection monitoring
├── Data/ → Repository implementations, SwiftData persistence, remote data sources
└── Features/ → All UI screens and feature logic
├── Auth, Home, Categories, AuctionDetail
├── Bids, Post, Profile, Notifications
└── Router, Components
Dependency direction: Features → Data → Infrastructure → Domain ← Core
| Area | Tool |
|---|---|
| UI | SwiftUI |
| Local persistence | SwiftData |
| Image loading | Kingfisher |
| Secure storage | KeychainAccess |
| Project generation | Tuist |
| CI/CD | Xcode Cloud |
This project uses Tuist for project generation. The .xcodeproj is not committed — regenerate it locally after cloning.
git clone https://github.com/RavanSA/AuctionProject-iOS.git
cd AuctionProject-iOS
# Fetch external packages
tuist install
# Generate Xcode project and workspace
tuist generate
# Open
open AuctionProject.xcworkspaceInstall Tuist (if not already):
brew install tuist