AuthentiFind is a high-performance service built in Rust that scrapes secondhand luxury marketplaces to discover high-value fashion items. It then cross-references these items with a digital ledger to verify their authenticity and track their provenance, providing buyers with confidence and a rich history for each piece.
- Language: Rust
- Asynchronous Runtime:
tokio - Networking:
reqwestfor HTTP requests - Data Parsing:
scraperfor HTML parsing - Database:
sqlxwith PostgreSQL or SQLite - Cryptography:
sha2or similar for generating unique identifiers - Serialization:
serdefor handling data (JSON, etc.) - Web Framework (Optional):
AxumorActix-web
- Objective: Build a robust, asynchronous web scraper capable of extracting specific item data from target websites.
- Key Tasks:
- Initialize a Rust project with
tokioas the async runtime. - Implement a scraping module that uses
reqwestto fetch the HTML content of a search results page. - Use the
scrapercrate to parse the HTML, targeting specific CSS selectors to extract item details: name, price, URL, and any listed serial numbers or unique identifiers. - Structure the output into a clean, well-defined Rust struct.
- Initialize a Rust project with
- Success Criteria: The application can be run from the command line with a search term and successfully prints the structured data of found items to the console.
- Objective: Create a standalone system for item registration and verification that acts as a source of truth.
- Key Tasks:
- Define a database schema for storing items and their history using
SQLx. - Create a
ledgermodule with core functions:register_item(details): Accepts item details, generates a unique SHA-256 hash from key properties (e.g.,brand+serial_number), and saves the new item "token" to the database.check_provenance(identifier): Queries the database for an item using its serial number or other unique ID and returns its known history.
- Define a database schema for storing items and their history using
- Success Criteria: The ledger module can successfully register a new item, assign it a unique hash, and retrieve its history programmatically.
- Objective: Combine the Scraper Engine and the Digital Ledger into a single, cohesive application.
- Key Tasks:
- Refactor the project to include both the
scraperandledgermodules. - Modify the scraper's main loop: after an item's data is successfully extracted, its serial number is passed to the
ledger::check_provenance()function. - Augment the final output. The application should now present the scraped listing data alongside any historical information found in the ledger (e.g., "Provenance Found: Yes" or "Provenance: Not Found").
- Implement a basic notification system, such as a formatted printout to the console or a webhook message to a Discord channel.
- Refactor the project to include both the
- Success Criteria: The end-to-end system can find an item online, automatically query the internal ledger for its history, and present a unified report to the user.
- Objective: Expose the core functionality through a web API and add user-facing features.
- Key Tasks:
- Wrap the integrated logic in a web server using
AxumorActix-web. - Create API endpoints:
POST /api/searches: To start a new scraping job.GET /api/items/{id}: To view details and provenance of a found item.
- Implement a user account system to allow users to manage their "digital collection" of items they've purchased and registered.
- Wrap the integrated logic in a web server using
- Success Criteria: The system is fully operational as a web service, capable of being controlled and queried via HTTP requests.