Skip to content

Backend API: Complete Data & Future Roadmap #3

Description

@tacticalnoot

Problem

The frontend downloads a ~25MB JSON snapshot because the backend /smols endpoint returns incomplete data. This causes:

  • ❌ Cloudflare Pages 25 MiB file limit errors
  • ❌ Slow initial page load (every user downloads 25MB)
  • ❌ Stale data (snapshot requires manual updates)

Current Symptoms

Many items from /smols return:

  • Tags: [] (empty)
  • Address: null
  • Minted_By: null

Phase 1: Immediate Fix (Remove 25MB Snapshot)

1.1 Enhanced GET /smols

Return complete, flat data for each smol:

{
  "Id": "abc123",
  "Title": "Cosmic Vibes",
  "Address": "GABC...XYZ",
  "Creator": "GABC...XYZ",
  "Minted_By": "GDEF...123",
  "Mint_Token": "CDXYZ...",
  "Tags": ["electronic", "chill"],
  "Plays": 142,
  "Views": 89,
  "Created_At": "2025-12-15T10:30:00Z",
  "Lyrics": "Stars align..."
}

Key: If Tags is empty, populate from wherever styles/genres are stored.

1.2 New: GET /smols/tags

Aggregated tag counts (so frontend doesn't download all songs for tag cloud):

{ "tags": [{ "tag": "electronic", "count": 245 }] }

1.3 New: GET /smols/artist/:address

Songs filtered by wallet for artist pages:

{
  "discography": [...],
  "minted": [...],
  "collected": [...],
  "stats": { "publishedCount": 42, "mintedCount": 15, "collectedCount": 8 }
}

Logic:

  • discography = Address === :address OR Creator === :address
  • minted = discography where Mint_Token exists
  • collected = Minted_By === :address BUT Address !== :address

Field Reference

Field Description
Id Song UUID
Title Display title
Address Publisher wallet (for tipping)
Creator Original creator wallet
Minted_By Who minted/collected this
Mint_Token Stellar smart contract token
Tags Genre tags
Lyrics Full lyrics text
Plays/Views Counts
Created_At ISO timestamp

Phase 2: Future Roadmap

Discovery & Engagement

Endpoint Purpose
GET /smols/trending Time-decayed popularity
GET /smols/similar/:id Recommend songs with similar tags
GET /smols/new Latest drops with pagination
GET /search?q=... Full-text search

User Features

Endpoint Purpose
GET /user/:address/history Listening history
GET /user/:address/playlists User-created collections
POST /user/:address/follow Follow artists

Artist Analytics

Endpoint Purpose
GET /artist/:address/stats Plays over time, top tracks
GET /artists/top Leaderboard

Real-Time

Endpoint Purpose
WS /activity/mints Live mint stream
GET /tokens/prices Batch token price lookup

Success Criteria

Phase 1 Complete = Frontend deletes 25MB snapshot file, Cloudflare deploys successfully

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions