This should be really easy to do! But I am very busy with IRL things these days. So, here's some free thoughts:
- Flat database (SurrealDB, MongoDB)
- endpoints /api/register to finalize a registration prepped in the frontend; perhaps by first proving Bitcoin ownership or something? I dont know how "walled" you want it to be in that regard.
- Handle /.well-known/nostr.json?username=$name by just looking it up in the database.
- A registered user may interact with /api/update to change relay info.
- Authentication can be done using the nostr window object - in fact, this way you can have the user sign something using their nsec and validate against their npub to check authenticity.
Good luck!!