Inspiration
- Prism was named because I envisioned its function to be analagous to that of a prism, which breaks light into a spectrum; the app breaks financial flows into clear, auditable channels for creators and the platform.
- The glass/prism metaphor emphasizes transparency and clarity in value-sharing.
- Content value should be measured beyond raw views, hence I wanted Prism to reward creators based on retention, engagement, and session quality.
- The internet is an extremely powerful tool that can inspire people to create true value, so I thought a dynamic and incentivised share structure could help encourage more thoughtful content creation.
- As a fun aside, after choosing the name 'Prism', I researched different technologies and I discovered Prisma ORM. I thought it would have been funny to use it for this project.
What it does
- Tracks gifts and payouts for live sessions and produces a tamper-evident ledger.
- Generates Merkle snapshots so any payout or ledger entry can be independently verified.
- Applies a transparent profit-sharing model (Creator | Platform | Fraud Reserve) with clear settlement reporting.
- Provides a user-facing Transparency Explorer to browse entries, view Merkle roots, and inspect proofs.
To ensure fairness and reward quality content:
- Quality Score: Each creator’s live session is assigned a score (0–100), calculated using factors such as viewer engagement, watch duration, and contribution diversity. This prevents manipulation by single high spenders and aligns rewards with genuine audience appreciation.
- Base Distribution: Funds are split into Creator 65% / Platform 30% / Fraud Reserve 5%.
- Tiered Boosts: Depending on Quality Score, the creator’s share increases above the 65% base and platform share decreases commensurately, rewarding engaging sessions.
Quality Score → Creator Share Tiers:
- 0–39 → 65%
- 40–69 → 70%
- 70–84 → 75%
- 85–100 → 80%
How I built it
- Frontend: LynxReact (cross-platform single-codebase UI)
- Backend: Node.js + Express, Prisma ORM, PostgreSQL (Prisma Migrate for schema)
- Cryptography: Node
cryptowith SHA-256 for Merkle hashing and snapshot signing - Dev Tooling: Docker, Jest
Challenges I ran into
- This was my first time building a fullstack project solo as someone with mainly frontend experience. I had to learn backend patterns and migrations quickly and oftentimes only strung things together as I went along.
- LynxJS lacks some native HTML elements by default, like
<input>; implementing a text input field requires custom native components, which I didn't have time to do. This got in the way of my implementation of an AI chatbot that I left until the end as I wanted to finish core functionality first, so I had to scrap the idea. - Per-transaction rounding caused small mismatches; I tried to minimise errors as much as possible, but there's still an error margin of +/- 0.5 (in my limited testing).
- I resolved an embedded-git/submodule issue when merging the frontend into the main repo that I didn't realise until the last day, so my commits made in /frontend were all lumped into one rather than following a chronological sequence.
Accomplishments that I'm proud of
- I managed to build a working fullstack prototype alone, covering a comprehensive flow of gifts → settlement → Merkle snapshot → frontend verification.
- I implemented Merkle proof generation and verification in the Transparency Explorer as someone who didn't know much about cryptography going in.
- I learned and applied new technologies (Lynx, Prisma) and cryptographic concepts under a tight timeline.
- I practised user-centric design patterns, like hiding technical details about Merkle roots by default to avoid scaring the average TikTok creator while at the same time enabling deep auditability for power users.
What I learned
- How Merkle trees and inclusion proofs work and how to present them to users.
- Trade-offs of cross-platform UI with Lynx and the need for native component bridges for certain controls.
- The importance of reproducible developer workflows: migrations, Docker, and repository hygiene.
What's next for Prism
- We could replace heuristic fraud checks with ML-based anomaly detection trained on classic AML signals.
- Use ML/AI to analyze live-session transcripts and surface patterns that correlate with retention and monetization.
- I could try implementing native input components in Lynx for a polished mobile AI assistant.
- Expand transparency features: historical snapshots, signed roots anchored immutably, and downloadable proof packages for auditors.
- Harden tests and CI for Merkle logic.
Built With
- css
- docker
- jest
- lynx
- postgresql
- prisma
- react
- typescript



Log in or sign up for Devpost to join the conversation.