Summary\n- Add a basic models.User entity and migrate it via GORM.\n\nModel\n- Fields: id (uuid), email (unique, indexed), password_hash (string), display_name (string), role (string; default viewer), timestamps.\n\nStorage\n- Extend storage.Init to AutoMigrate(&models.User{}).\n- Add store methods: CreateUser, GetUserByEmail, ListUsers.\n\nReferences\n- internal/storage/store.go (migrations, store methods)\n- internal/models (add user.go)\n\nAcceptance Criteria\n- DB migration creates users with unique email.\n- Can create and fetch a user via the store layer.\n- No API endpoints yet (handled in Auth sub-issue).\n\nNotes\n- Use uuid for id, consistent with servers.\n- Do not expose password_hash in any JSON marshal tags.
Summary\n- Add a basic
models.Userentity and migrate it via GORM.\n\nModel\n- Fields:id(uuid),email(unique, indexed),password_hash(string),display_name(string),role(string; defaultviewer), timestamps.\n\nStorage\n- Extendstorage.InittoAutoMigrate(&models.User{}).\n- Add store methods:CreateUser,GetUserByEmail,ListUsers.\n\nReferences\n-internal/storage/store.go(migrations, store methods)\n-internal/models(adduser.go)\n\nAcceptance Criteria\n- DB migration createsuserswith uniqueemail.\n- Can create and fetch a user via the store layer.\n- No API endpoints yet (handled in Auth sub-issue).\n\nNotes\n- Useuuidforid, consistent with servers.\n- Do not exposepassword_hashin any JSON marshal tags.