Phase 1: Project scaffold

- Quarkus Maven project with all dependencies
- SQLite DatabaseService with DAO methods
- MusicBrainz REST client with DTOs
- ArtistService, ReleaseGroupService, CacheService, FeedService
- HTMX web controllers (ReleasesPage, ArtistsPage, ArtistController, FeedController, SettingsController)
- RSS feed builder using Rome library
- Qute templates with daisyUI theme switching
- Base layout with navbar, search, theme picker, settings modal
This commit is contained in:
2026-07-02 15:29:16 +02:00
commit f0be591faf
26 changed files with 1646 additions and 0 deletions
@@ -0,0 +1,31 @@
<div class="card bg-base-100 shadow-xl mt-1 max-h-64 overflow-y-auto">
{#if artists.isEmpty()}
<div class="p-3 text-sm text-base-content/60">No artists found</div>
{:else}
{#for artist in artists}
<div class="flex items-center justify-between p-3 hover:bg-base-200 border-b border-base-200 last:border-b-0">
<div class="flex-1 min-w-0">
<span class="font-medium">{artist.name}</span>
{#if artist.disambiguation}
<span class="text-sm text-base-content/60">— {artist.disambiguation}</span>
{/if}
<br>
<span class="text-xs text-base-content/40">{artist.area}</span>
</div>
<div class="ml-2 flex-shrink-0">
{#if artist.alreadyTracked}
<span class="badge badge-success badge-sm">✓ Added</span>
{:else}
<button class="btn btn-primary btn-xs"
hx-post="/api/artists/{artist.mbid}/track"
hx-target="#artist-list"
hx-swap="innerHTML"
onclick="this.closest('#search-results').innerHTML=''; document.querySelector('[name=q]').value=''">
+ Add
</button>
{/if}
</div>
</div>
{/for}
{/if}
</div>