EventShot
Never Miss an Event Photo again, Take photos and upload directories on Starknet 🦊
视频
描述
📸 EventShot: Capturing Moments, Decentralized
EventShot is a decentralized platform designed to revolutionize event photography by seamlessly integrating QR code technology, real-time photo capturing, IPFS for decentralized storage, and StarkNet smart contracts for immutable record-keeping.
🚀 Core Features
1. Event Creation & QR Code Generation
- Event Hosts can effortlessly create events on the platform. 
- Upon creation, a unique QR code is generated for each event. 
- This QR code can be printed or shared digitally, serving as the gateway for attendees to participate. 
2. Attendee Engagement via QR Scanning
- Attendees scan the event's QR code using their devices. 
- Scanning directs them to the event's dedicated page on the web app, eliminating the need for manual searches or registrations. 
3. Real-Time Photo Capture & Upload
- Within the event page, attendees can capture photos in real-time. 
- Captured images are uploaded to IPFS, ensuring decentralized and tamper-proof storage. 
- Metadata, including uploader information and timestamps, are recorded on StarkNet smart contracts, guaranteeing authenticity and traceability. 
4. Immutable Record-Keeping with StarkNet
- Every photo upload is logged on StarkNet, providing a transparent and immutable history of contributions. 
- This ensures that event memories are preserved securely and verifiably. 
🛠️ Technical Architecture
- Frontend: A responsive web application facilitating event creation, QR code generation, and photo capturing.
- Backend: Integration with IPFS for decentralized storage of images.
- Blockchain Layer: StarkNet smart contracts manage event data, image metadata, and user interactions.
- QR Code Integration: Each event's unique QR code links directly to its corresponding page on the web app.
---
🎯 Use Cases
- Conferences & Seminars: Attendees can capture and share moments, fostering community engagement. 
- Weddings & Celebrations: Guests contribute to a collective photo album, preserving memories from multiple perspectives. 
- Festivals & Public Gatherings: Real-time photo sharing enhances the event experience and creates a decentralized media repository. 
🌟 Why EventShot?
- User-Friendly: Simplifies the process of event participation and photo sharing. 
- Decentralized Storage: Ensures that memories are preserved without reliance on centralized servers. 
- Immutable Records: StarkNet integration guarantees that all contributions are securely recorded. 
- Enhanced Engagement: QR code access and real-time uploads foster active participation. 
🔚 Important Links
live url- https://event-shots.vercel.app/
Frontend Github -https://github.com/Shuriken-labs/event-shots
Starknet SmartContract - https://github.com/Shuriken-labs/event-shot-cairo-contract
Backend Github - https://github.com/Shuriken-labs/event-shot-backend-starknet
本次黑客松进展
1. ByteArray Wars 🔥 The Problem: StarkNet’s ByteArray encoding was not playing nice. The Fight: Tried sending raw strings → Reverted. Manual hex splitting → Calldata mismatches. Finally reverse-engineered the ABI’s expected struct (data, pending_word, pending_word_len) and forced it into submission. 2. The "ENTRYPOINT_NOT_FOUND" Trap 🕳️ The Illusion: Thought the function didn’t exist. Reality: Our calldata formatting was slightly off. Breakthrough: Logged exact calldata sent vs. expected. Realized ByteArray needed chunked 31-byte hex strings + padding. 3. Nested Storage Hell 🌀 Data Structure: event_id → Vec<IImage> (where IImage = uploader + Vec<ByteArray>). Challenge: Flattening nested arrays in Cairo without iter(). Solution: Double for loops with manual indexing (at(i)). Edge Case: Empty arrays? Handled. Missing events? Handled. 4. Frontend ↔ Contract Sync 💥 Pain Point: JS byteArrayFromString ≠ Cairo’s struct. Fix: Made frontend reconstruct the exact ByteArray struct the contract demanded. Validated with raw calldata dumps. 5. The "It Works" Moment 🎉 After: Brutal ABI alignment. Countless panic!("Why?!") removals. Final Win: Images flow from frontend → backend → contract → flattened array without explosions.
技术栈
融资状态
n/a