Skip to content

Repository files navigation

AuctionProject — auksiya.az

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.


About

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


Features

  • 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

Architecture

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


Tech Stack

Area Tool
UI SwiftUI
Local persistence SwiftData
Image loading Kingfisher
Secure storage KeychainAccess
Project generation Tuist
CI/CD Xcode Cloud

Getting Started

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

Install Tuist (if not already):

brew install tuist

About

iOS auction app demonstrating Clean Architecture modularization on iOS — split into Domain, Data, Infrastructure, and Features as local Swift packages, with shared utilities extracted to a standalone remote SPM package (AuctionProject-CoreKit). Project generation handled by Tuist

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages