Skip to content

Working with Data

Alchemify gives you full CRUD access to your database tables, right in the browser.

Click a table name in the sidebar to see its list view — a paginated table showing rows with their columns. The total row count is displayed in the header.

  • Click any row to open its detail view.
  • If you have insert permission, a New button appears in the top right.

Tables are paginated — by default you see 25 rows per page. A pagination bar below the table shows:

  • Row range — e.g., “Showing 1–25 of 142”
  • Page size selector — choose 10, 25, 50, or 100 rows per page
  • Prev / Next buttons — navigate between pages

Switching tables, searching, sorting, or changing page size all reset you to the first page.

Click any column header to sort the table by that column. Click again to reverse the direction, and a third time to clear the sort. A small arrow icon shows the current sort direction. Null values always sort last.

If the table has text columns, a search box appears in the card header. Type to filter rows — the search runs against all text columns and updates after a short delay. The search is case-insensitive and matches anywhere in the value (e.g., searching “al” matches “Alice” and “California”). The row count in the header updates to reflect the filtered results.

The detail view shows every field for a single record. Column names are converted to human-friendly labels — for example, created_at shows as “Created on” and id shows as “ID”. Foreign key values link to the referenced record — click them to navigate.

Values with a display type are formatted automatically: email addresses become clickable mailto: links, URLs become external links, colors show a swatch, currencies show $ formatting, percentages show %, ratings show filled stars, and booleans show a green checkmark or gray X icon. Boolean columns are detected automatically from the database type — no manual configuration needed. The same formatting applies in the list view.

Actions available (based on your permissions):

  • Edit — opens the edit form pre-filled with the current values
  • Delete — shows a confirmation dialog, then removes the record
  • Back to list — returns to the list view

Click New on the list view to open the create form. Fields are generated automatically from the table’s columns:

  • Text fields (text, email, url, phone, color) → text input
  • Multiline fields → textarea
  • Numbers (integer, currency, percent, rating) → number input
  • Required booleans → Yes/No radio buttons
  • Optional booleans → checkbox
  • Date fields → date picker
  • Datetime fields → datetime picker

Auto-generated columns (like UUIDs, created_at, updated_at, updated_by) are skipped — the database fills those in. Required fields are marked with a red asterisk.

When the AI Builder creates or alters a table, it can assign a display type to columns (e.g., “add an email column”). Alchemify uses this to show smarter input widgets:

Display typeWidget
EmailEmail input with browser validation
URLURL input
PhoneTelephone input
ColorNative color picker
MultilineTextarea (regardless of column length)
CurrencyNumber input with $ prefix
PercentNumber input with % suffix
RatingClickable 1–5 star picker
Date / DatetimeDate or datetime picker

Tables without display types work exactly as before — widgets fall back to the column’s data type.

Columns with the file type show a file upload widget instead of a text input. When you ask the AI for a file upload field (e.g., “add a photo column”), it uses the file type automatically. You can:

  • Click or drag to upload a file
  • Download an uploaded file
  • Replace a file with a new upload (click the upload icon)
  • Clear the field (if the column is optional)

The file is uploaded immediately when selected — the returned file ID is stored in the form. Files are managed through the /view/files page, which shows all your uploaded files with download and delete actions.

When you submit a form, Alchemify validates each field. If the column has a display type, semantic validation runs first:

Display typeRule
EmailMust be a valid email address
URLMust be a valid URL
PhoneDigits, spaces, parentheses, and hyphens only
ColorMust be a hex color (#rrggbb)
PercentMust be 0–100
RatingMust be 1–5

Otherwise, validation falls back to the column’s data type:

Column typeRule
Integer fieldsMust be a whole number
Numeric fieldsMust be a valid number
UUID fieldsMust match UUID format (e.g. 550e8400-e29b-41d4-a716-446655440000)
JSON fieldsMust be valid JSON
Required fieldsCannot be empty

Error messages appear directly below the invalid field. Fix the value and the error clears immediately — no need to re-submit. Server-side errors (like unique constraint violations) still appear as a banner at the bottom of the form.

Click Edit on the detail view. The form is pre-filled with the record’s current values. Change what you need and click Save Changes.

Click Delete on the detail view. A confirmation dialog appears — once confirmed, the record is removed and you’re returned to the list view.

Your permissions depend on your role. Alchemify uses database-level security, so:

  • You only see rows you’re authorized to access
  • The New button only appears if you can insert into that table
  • Edit and Delete only appear if you have update/delete permissions

This is all enforced by PostgreSQL — the app reflects what the database allows.