Files
Code_of_Conquest/docs/phases/Phase8-Marketplace.md
Phillip Tarrant df26abd207 feat: Implement Phase 5 Quest System (100% complete)
Add YAML-driven quest system with context-aware offering:

Core Implementation:
- Quest data models (Quest, QuestObjective, QuestReward, QuestTriggers)
- QuestService for YAML loading and caching
- QuestEligibilityService with level, location, and probability filtering
- LoreService stub (MockLoreService) ready for Phase 6 Weaviate integration

Quest Content:
- 5 example quests across difficulty tiers (2 easy, 2 medium, 1 hard)
- Quest-centric design: quests define their NPC givers
- Location-based probability weights for natural quest offering

AI Integration:
- Quest offering section in npc_dialogue.j2 template
- Response parser extracts [QUEST_OFFER:quest_id] markers
- AI naturally weaves quest offers into NPC conversations

API Endpoints:
- POST /api/v1/quests/accept - Accept quest offer
- POST /api/v1/quests/decline - Decline quest offer
- POST /api/v1/quests/progress - Update objective progress
- POST /api/v1/quests/complete - Complete quest, claim rewards
- POST /api/v1/quests/abandon - Abandon active quest
- GET /api/v1/characters/{id}/quests - List character quests
- GET /api/v1/quests/{quest_id} - Get quest details

Frontend:
- Quest tracker sidebar with HTMX integration
- Quest offer modal for accept/decline flow
- Quest detail modal for viewing progress
- Combat service integration for kill objective tracking

Testing:
- Unit tests for Quest models and serialization
- Integration tests for full quest lifecycle
- Comprehensive test coverage for eligibility service

Documentation:
- Reorganized docs into /docs/phases/ structure
- Added Phase 5-12 planning documents
- Updated ROADMAP.md with new structure

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 15:42:55 -06:00

6.5 KiB

Phase 8: Marketplace

Goal: Player-to-player trading system (Premium+ only) Priority: Medium Status: Not Started Last Updated: November 29, 2025


Overview

The Marketplace enables Premium and Elite players to trade items with each other through auctions and fixed-price listings. This creates a player economy and provides an additional incentive for premium subscriptions.

Key Features:

  • Premium/Elite tier only
  • Auction and fixed-price (buyout) listings
  • 48-hour listing duration
  • 5% marketplace fee on sales
  • Bidding with outbid notifications
  • Search and filter functionality

Task Groups

Marketplace Data Models (3 tasks)

Task ID Task Status Notes
8.1 Create MarketplaceListing dataclass Item, seller, price, auction settings, expiration
8.2 Create Bid dataclass Bidder, amount, timestamp
8.3 Checkpoint: Verify serialization Test round-trip to JSON, Appwrite storage

Listing Structure:

@dataclass
class MarketplaceListing:
    listing_id: str
    seller_id: str
    item: Item
    listing_type: str  # "auction" | "fixed_price"
    starting_price: int
    buyout_price: Optional[int]
    current_bid: Optional[int]
    current_bidder_id: Optional[str]
    bids: List[Bid]
    created_at: datetime
    expires_at: datetime
    status: str  # "active" | "sold" | "expired" | "cancelled"

Deliverable: Marketplace data models ready


Marketplace APIs (6 tasks)

Task ID Task Status Notes
8.4 Implement browse API GET /api/v1/marketplace - Filtering, sorting, pagination
8.5 Implement listing creation API POST /api/v1/marketplace/listings - Auction + fixed price
8.6 Implement bidding API POST /api/v1/marketplace/listings/{id}/bid - Validate bid amounts
8.7 Implement buyout API POST /api/v1/marketplace/listings/{id}/buyout - Instant purchase
8.8 Implement listing cancellation DELETE /api/v1/marketplace/listings/{id} - Return item to seller
8.9 Implement my listings/bids API GET /api/v1/marketplace/my-listings, /my-bids

Deliverable: Full marketplace API


Auction Processing (3 tasks)

Task ID Task Status Notes
8.10 Implement auction processing task Periodic RQ job to end expired auctions
8.11 Implement bid notifications Notify when outbid (in-app notification)
8.12 Implement sale completion Transfer item, gold minus 5% fee

Auction Processing Flow:

Every 5 minutes:
  1. Query listings where expires_at <= now AND status = 'active'
  2. For each expired listing:
     - If has bids: Award to highest bidder, transfer gold (minus fee)
     - If no bids: Return item to seller, mark expired
  3. Send notifications to winners/sellers

Deliverable: Automated auction resolution


Marketplace UI (4 tasks)

Task ID Task Status Notes
8.13 Create marketplace browse UI templates/marketplace/browse.html - Grid/list view, filters
8.14 Create listing detail UI templates/marketplace/detail.html - Item, bids, timer
8.15 Create listing creation UI templates/marketplace/create.html - Form for creating listings
8.16 Create my listings/bids UI templates/marketplace/my-listings.html

Deliverable: Full marketplace UI


Testing & Validation (3 tasks)

Task ID Task Status Notes
8.17 Test auction flow Full auction cycle: list → bid → expire → award
8.18 Test tier restrictions Verify Premium+ only
8.19 Final Checkpoint: Integration test Complete buy/sell flow

Deliverable: Validated marketplace system


API Endpoints Summary

Method Endpoint Description
GET /api/v1/marketplace Browse listings (filter, sort, paginate)
GET /api/v1/marketplace/listings/{id} Get listing detail
POST /api/v1/marketplace/listings Create new listing
POST /api/v1/marketplace/listings/{id}/bid Place bid
POST /api/v1/marketplace/listings/{id}/buyout Instant purchase
DELETE /api/v1/marketplace/listings/{id} Cancel listing
GET /api/v1/marketplace/my-listings Get user's listings
GET /api/v1/marketplace/my-bids Get user's active bids

Files to Create/Modify

New Files:

  • /api/app/models/marketplace.py - MarketplaceListing, Bid
  • /api/app/services/marketplace_service.py - Marketplace operations
  • /api/app/api/marketplace.py - Marketplace API blueprint
  • /api/app/tasks/marketplace_tasks.py - Auction processing job
  • /public_web/templates/marketplace/browse.html
  • /public_web/templates/marketplace/detail.html
  • /public_web/templates/marketplace/create.html
  • /public_web/templates/marketplace/my-listings.html

Modified Files:

  • /api/app/__init__.py - Register marketplace blueprint
  • /api/app/services/character_service.py - Gold transfer, item transfer

Testing Criteria

Unit Tests

  • Listing creation validation
  • Bid validation (must exceed current bid)
  • Buyout validation (sufficient gold)
  • Fee calculation (5%)

Integration Tests

  • Create listing → item removed from inventory
  • Place bid → gold held in escrow
  • Outbid → gold returned to previous bidder
  • Auction ends → item transferred, gold transferred
  • Cancel listing → item returned

Manual Testing

  • Browse and filter listings
  • Create auction and fixed-price listings
  • Bid on auctions
  • Buyout items
  • Check notifications when outbid

Success Criteria

  • Premium/Elite tier restriction enforced
  • Listings created and displayed correctly
  • Bidding works with proper validation
  • Buyout works with instant purchase
  • Auctions expire and resolve correctly
  • 5% fee deducted on sales
  • Notifications sent when outbid
  • UI is responsive and functional

Dependencies

Requires (already implemented):

  • Character system (inventory, gold)
  • Item system
  • Authentication with tiers

Task Summary

Group Tasks Checkpoints
Marketplace Data Models 2 1
Marketplace APIs 6 0
Auction Processing 3 0
Marketplace UI 4 0
Testing & Validation 2 1
Total 17 2