Skip to content

Build indie artist platform with music industry code management and catalog system#11

Draft
Copilot wants to merge 6 commits intoSin-Estres-dev-patch-2from
copilot/create-core-artist-profile
Draft

Build indie artist platform with music industry code management and catalog system#11
Copilot wants to merge 6 commits intoSin-Estres-dev-patch-2from
copilot/create-core-artist-profile

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Feb 5, 2026

Implements a full-stack web application for indie artists to centralize professional music industry identifiers (IPI, ISNI, ISRC, ISWC, DDEX, UPC, UPN, EIN, UUID) and manage their music catalog with proper metadata.

Architecture

Stack: Next.js 16 App Router, TypeScript, Prisma 7.x, SQLite, Tailwind CSS

Database Schema:

  • ArtistProfile - Stores artist identity and 9 professional codes with unique constraints
  • TrackRecord - Music catalog entries with distribution metadata and foreign key to artist

API Design: 6 RESTful endpoints following resource-based patterns

  • POST/GET /api/profiles - Artist CRUD
  • GET/PUT /api/profiles/[profileId] - Single artist with relational includes
  • POST/GET /api/tracks - Track CRUD with query filtering

Key Implementation Details

Prisma 7.x Adapter Pattern:

import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3'

function createDatabaseConnection() {
  const adapter = new PrismaBetterSqlite3({ url: './prisma/dev.db' })
  return new PrismaClient({ adapter })
}

Next.js 16 Async Params:

export async function GET(
  req: NextRequest,
  context: { params: Promise<{ profileId: string }> }
) {
  const { profileId } = await context.params
  // ...
}

Naming Convention: Used domain-specific naming to avoid conflicts:

  • interestedPartyInfo for IPI
  • standardNameId for ISNI
  • intlStandardRecordingCode for ISRC
  • belongsToArtist for foreign key relationship

UI/UX

  • Color-coded professional code display (9 color scheme)
  • Suspense boundary for useSearchParams to prevent prerender errors
  • Responsive design with Tailwind utility classes
  • Form validation with required field indicators

Documentation

Created 6 documentation files covering setup, architecture, API reference, and quick reference guide for different user personas (artists vs. developers).

File Structure

indie-artist-app/
├── src/app/
│   ├── api/[profiles|tracks]/    # API routes
│   ├── profiles/[new|[id]]/      # Artist pages
│   └── tracks/new/               # Track creation
├── prisma/
│   ├── schema.prisma             # Database models
│   └── migrations/               # Version-controlled schema
└── src/lib/database.ts           # Prisma singleton with adapter

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • checkpoint.prisma.io
    • Triggering command: /opt/hostedtoolcache/node/24.13.0/x64/bin/node /opt/hostedtoolcache/node/24.13.0/x64/bin/node /home/REDACTED/work/Strezless/Strezless/indie-artist-app/node_modules/prisma/build/child {&#34;product&#34;:&#34;prisma&#34;,&#34;version&#34;:&#34;7.3.0&#34;,&#34;cli_install_type&#34;:&#34;local&#34;,&#34;information&#34;:&#34;&#34;,&#34;local_timestamp&#34;:&#34;2026-02-05T23:03:06Z&#34;,&#34;project_hash&#34;:&#34;f421b266&#34;,&#34;cli_path&#34;:&#34;/home/REDACTED/work/Strezless/Strezless/indie-artist-app/node_modules/.bin/prisma&#34;,&#34;cli_path_has (dns block)
    • Triggering command: /opt/hostedtoolcache/node/24.13.0/x64/bin/node /opt/hostedtoolcache/node/24.13.0/x64/bin/node /home/REDACTED/work/Strezless/Strezless/indie-artist-app/node_modules/prisma/build/child {&#34;product&#34;:&#34;prisma&#34;,&#34;version&#34;:&#34;7.3.0&#34;,&#34;cli_install_type&#34;:&#34;local&#34;,&#34;information&#34;:&#34;&#34;,&#34;local_timestamp&#34;:&#34;2026-02-05T23:03:16Z&#34;,&#34;project_hash&#34;:&#34;f421b266&#34;,&#34;cli_path&#34;:&#34;/home/REDACTED/work/Strezless/Strezless/indie-artist-app/node_modules/.bin/prisma&#34;,&#34;cli_path_has (dns block)
    • Triggering command: /opt/hostedtoolcache/node/24.13.0/x64/bin/node /opt/hostedtoolcache/node/24.13.0/x64/bin/node /home/REDACTED/work/Strezless/Strezless/indie-artist-app/node_modules/prisma/build/child {&#34;product&#34;:&#34;prisma&#34;,&#34;version&#34;:&#34;7.3.0&#34;,&#34;cli_install_type&#34;:&#34;local&#34;,&#34;information&#34;:&#34;&#34;,&#34;local_timestamp&#34;:&#34;2026-02-05T23:03:21Z&#34;,&#34;project_hash&#34;:&#34;f421b266&#34;,&#34;cli_path&#34;:&#34;/home/REDACTED/work/Strezless/Strezless/indie-artist-app/node_modules/.bin/prisma&#34;,&#34;cli_path_has (dns block)
  • fonts.googleapis.com
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node node /home/REDACTED/work/Strezless/Strezless/indie-artist-app/node_modules/.bin/next build (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

walk me through careful step by step instructions with the exact code to copy and paste to build a powerful, code-linked app designed to help indie artists sell more music, grow their fan base, get industry exposure, and level up professionally.

a promising start.

Brainstorm ideas to Build an app mainly tailored to indie artists but, can also be of use to any musical artist in whichever level of their career that he/she may find themselves when discovering said app after launched and in stores for free services in distribution.
I want the app to be able link the ipi, isni, isrc, iswc, ddex, upc, upn, ein, uuid, and more codes issued to the correct artist so maybe we can start by creating the main artist profile storage page.
The app should ultimately be a great asset for artists as it would ultimately help
-to Sell more music
-Grow their fan base
-Get more exposure in the industry
-Become more professional

Step 1: Core Artist Profile (Storage Page)
This isn't just a profile—it's your digital ID in the music ecosystem. Here's what it could include:

Personal Info: Name (stage name), birthdate (optional for age verification), contact email.
Artist Codes: IPI code? ISNI? These are unique to creators—like social security numbers for musicians.
If an artist doesn’t have one yet → offer automated generation or integration via services like ISNI.org or CISAC.
For pro status: auto-link to official registries so labels/distributors trust you instantly.
Pro Tip: Make onboarding smooth. Ask only what’s needed at first; advanced codes can be added later when they gain traction.

Step 2: Music Catalog Management
Now that we've got identity… let's store tracks!

Each song will need:

Title & Album Name (if applicable)
Duration & Genre Tags (to categorize properly)
Most importantly:
✅ UPC / UPN – Universal Product Code/Numbers assigned by distributors
✅ ISRC – International Standard Recording Code — every track needs one!
✅ DDEX Format compatibility – so data flows cleanly into stores

Suggestion:* Automate as much of this as possible.* When uploading songs from computer/phone -> auto-generate missing metadata if possible
We are going to build a web application for indie artists. We'll use Next.js for the frontend and backend (API routes) and Prisma with a SQLite database for simplicity. However, note that for production, you might want to use a more robust database like PostgreSQL.

The app will have two main parts:

Artist Profile Storage (Step 1)

Music Catalog Management (Step 2)

We'll start by setting up the project and then create the database schema for artists and their music.

Let's break down the steps:

Step 1: Set up a new Next.js project with TypeScript and Prisma.
Step 2: Define the database schema for Artist and Music (and any related tables).
Step 3: Create API endpoints to handle creating and updating artist profiles and music.
Step 4: Create frontend pages/forms for the artist profile and music catalog.

However, note that the problem is complex and we are only going to set up the foundation. We'll create a basic structure that can be extended.

Let's start:

Step 1: Create a new Next.js project.

Open your terminal and run:

bash
npx create-next-app@latest indie-artist-app --typescript --tailwind
cd indie-artist-app
Step 2: Install Prisma and SQLite.

bash
npm install prisma @prisma/client
npx prisma init --datasource-provider sqlite
Step 3: Define the schema in prisma/schema.prisma.

We'll create two main models: Artist and Music. Also, we might need a model for the codes (like IPI, ISNI, etc.) but for simplicity, we'll include them in the Artist model for now. Similarly, for music, we'll include ISRC, UPC, etc. in the Music model.

However, note that an artist might have multiple music records, so it's a one-to-many relationship.

Let's edit prisma/schema.prisma:

prisma
generator client {
provider = "prisma-client-js"
}

datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}

model Artist {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedat

// Personal Info
name String
stageName String?
birthDate DateTime?
email String @unique

// Artist Codes
ipiCode String? // IPI code (Interested Parties Information)
isniCode String? // International Standard Name Identifier
iswcCode String? // International Standard Musical Work Code (for compositions)
ddex String? // DDEX (Digital Data Exchange) identifier
upn String? // Universal Product Number
ein String? // Employer Identification Number (for tax purposes, if applicable)
uuid String? @unique @default(cuid()) // Internal unique identifier

// Relations
musics Music[]

// You can add more fields as needed
}

model Music {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedat

title String
album String?
duration Int // in seconds
genre String?

// Codes
upc String? // Universal Product Code
upn...


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 5 commits February 5, 2026 23:14
Co-authored-by: Sin-Estres-dev <174596748+Sin-Estres-dev@users.noreply.github.com>
Co-authored-by: Sin-Estres-dev <174596748+Sin-Estres-dev@users.noreply.github.com>
Co-authored-by: Sin-Estres-dev <174596748+Sin-Estres-dev@users.noreply.github.com>
Co-authored-by: Sin-Estres-dev <174596748+Sin-Estres-dev@users.noreply.github.com>
Copilot AI changed the title [WIP] Add core artist profile storage page Build indie artist platform with music industry code management and catalog system Feb 5, 2026
Copilot AI requested a review from Sin-Estres-dev February 5, 2026 23:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants