| Metadata | Value |
|---|---|
| Status | Active |
| Version | 1.1.0 |
| Last Updated | 2026-09-10 |
| Author | Sangeetha Grantha Team |
| Document Type | Evidence record |
[!NOTE] Historical evidence: results, counts, commands, and observations below belong to the original work described here. The editorial update date is not a new test or corpus verification. For present behavior, use current quality checks.
Date: 2026-01-02
Scope: modules/frontend/sangita-admin-web vs modules/backend/api
A comprehensive scan of the Frontend (Sangita Admin Web) and Backend (API) reveals that while core entity management (Krithis, Composers, Ragas, etc.) is well-supported, there are critical gaps in the Lyric Variant management workflow and API path mismatches in the Notation management workflow.
The following operations are defined in the Frontend client and used in the UI, but NO corresponding routes were found in the Backend codebase, leading to 404 errors during execution.
| Feature | Frontend Method | UI Path | Implementation Status |
|---|---|---|---|
| Lyric Variants | createLyricVariant |
/admin/krithis/{id}/variants (POST) |
MISSING. No POST endpoint for variants. |
| Lyric Variants | updateLyricVariant |
/admin/variants/{id} (PUT) |
MISSING. No PUT endpoint for variants. |
| Lyric Variants | saveVariantSections |
/admin/variants/{id}/sections (POST) |
MISSING. No endpoint to save variant sections. |
Impact: Users cannot add or edit details of lyric variants (language, script, lyrics) or manage their sectional breakdowns. This is a blocking issue for the Content Management workflow.
The Frontend uses a different URL structure than what the Backend defines for the Notation Management feature. These will likely result in 404 errors unless a global rewrite rule exists (none observed).
| Feature | Frontend Request Path | Backend Defined Path | Status |
|---|---|---|---|
| Create Notation | /admin/krithis/{id}/notation/variants |
/v1/krithis/{id}/notation/variants |
Mismatch (Frontend adds /admin) |
| Update Notation | /admin/notation/variants/{variantId} |
/v1/notation/variants/{variantId} |
Mismatch (Frontend adds /admin) |
| Delete Notation | /admin/notation/variants/{variantId} |
/v1/notation/variants/{variantId} |
Mismatch (Frontend adds /admin) |
| Create Row | /admin/notation/variants/{variantId}/rows |
/v1/notation/variants/{variantId}/rows |
Mismatch (Frontend adds /admin) |
| Update Row | /admin/notation/rows/{rowId} |
/v1/notation/rows/{rowId} |
Mismatch (Frontend adds /admin) |
| Delete Row | /admin/notation/rows/{rowId} |
/v1/notation/rows/{rowId} |
Mismatch (Frontend adds /admin) |
Impact: Notation editing functionality will fail.
| Operation | Frontend Path | Backend Path | Status |
| :— | :— | :— | :— |
| Search Krithis | /krithis/search | /v1/krithis/search | ✅ Matched |
| Get Krithi | /krithis/{id} | /v1/krithis/{id} | ✅ Matched |
| Create Krithi | /krithis | /v1/krithis | ✅ Matched |
| Update Krithi | /krithis/{id} | /v1/krithis/{id} | ✅ Matched |
| Get Sections | /admin/krithis/{id}/sections | /v1/admin/krithis/{id}/sections | ✅ Matched |
| Save Sections | /admin/krithis/{id}/sections | /v1/admin/krithis/{id}/sections | ✅ Matched |
| Get Variants | /admin/krithis/{id}/variants | /v1/admin/krithis/{id}/variants | ✅ Matched |
| Get Tags | /admin/krithis/{id}/tags | /v1/admin/krithis/{id}/tags | ✅ Matched |
| Transliterate | /admin/krithis/{id}/transliterate | /v1/admin/krithis/{id}/transliterate | ✅ Matched |
| Operation | Frontend Path | Backend Path | Status |
| :— | :— | :— | :— |
| Composers | /admin/composers (CRUD) | /v1/admin/composers | ✅ Matched |
| Ragas | /admin/ragas (CRUD) | /v1/admin/ragas | ✅ Matched |
| Talas | /admin/talas (CRUD) | /v1/admin/talas | ✅ Matched |
| Temples | /admin/temples (CRUD) | /v1/admin/temples | ✅ Matched |
| Tags | /admin/tags (CRUD) | /v1/admin/tags | ✅ Matched |
| Operation | Frontend Path | Backend Path | Status |
| :— | :— | :— | :— |
| List Imports | /admin/imports | /v1/admin/imports | ✅ Matched |
| Scrape | /admin/imports/scrape | /v1/admin/imports/scrape | ✅ Matched |
| Review Import | /imports/{id}/review | /v1/imports/{id}/review | ✅ Matched |
| Audit Logs | /audit/logs | /v1/audit/logs | ✅ Matched |
| Dashboard Stats | /admin/dashboard/stats | /v1/admin/dashboard/stats | ✅ Matched |
The following endpoints exist in the Backend but are not currently utilized by the Frontend:
POST /v1/admin/krithis/{id}/validate
/v1/health
/v1/composers, /v1/ragas etc.
client.ts public methods, but Admin UI mostly uses the specific /admin/ stats or CRUD endpoints. (Verified client.ts does define these, so they are technically covered, just maybe rarely used in Admin flow).AdminLyricVariantRoutes.kt (or update AdminKrithiRoutes.kt) to support:
POST /v1/admin/krithis/{id}/variantsPUT /v1/admin/variants/{id}POST /v1/admin/variants/{id}/sectionsclient.ts to remove the extra /admin prefix for notation routes to match Backend’s /v1/ structure, OR update Backend AdminNotationRoutes.kt to nest under /admin.
/v1/, but logically they are admin actions. The Frontend matches the “Admin” intent. Updating Backend to route("/v1/admin") in AdminNotationRoutes.kt is likely the cleaner semantic fix.