## ADDED Requirements

### Requirement: Shared Postgres database
The system SHALL use a single shared PostgreSQL database for all data. The canonical schema SHALL live in `db/schema.sql` until the Laravel admin takes over migration ownership.

#### Scenario: Schema applied to a fresh database
- **WHEN** `db/schema.sql` is applied to an empty database
- **THEN** the `users`, `tags`, and `scans` tables exist with the defined columns and constraints

### Requirement: Users table
The `users` table SHALL store id, unique email, password hash, name, phone, and created_at.

#### Scenario: Unique emails
- **WHEN** a second row is inserted with an email that already exists
- **THEN** the database rejects the insert

### Requirement: Tags table
The `tags` table SHALL store a unique public `tag_code`, owner reference, status (`unset`, `active`, `suspended`), item type, description, photo URL, phone, address, notes, and timestamps.

#### Scenario: Unique tag codes
- **WHEN** a second row is inserted with a tag_code that already exists
- **THEN** the database rejects the insert

#### Scenario: Status values
- **WHEN** a row is inserted with a status not in the allowed set
- **THEN** the database rejects the insert

### Requirement: Scans table
The `scans` table SHALL record tag scans with timestamp, optional latitude/longitude, whether location was shared, optional scanner phone, and whether an alert was sent.

#### Scenario: Recording a scan
- **WHEN** a scan of a tag is recorded
- **THEN** a row exists with tag reference, timestamp, and location flags
