Working with Data
Alchemify gives you full CRUD access to your database tables, right in the browser.
List view
Section titled “List view”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.
Pagination
Section titled “Pagination”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.
Sorting
Section titled “Sorting”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.
Searching
Section titled “Searching”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.
Detail view
Section titled “Detail view”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
Creating a record
Section titled “Creating a record”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.
Smart widgets
Section titled “Smart widgets”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 type | Widget |
|---|---|
| Email input with browser validation | |
| URL | URL input |
| Phone | Telephone input |
| Color | Native color picker |
| Multiline | Textarea (regardless of column length) |
| Currency | Number input with $ prefix |
| Percent | Number input with % suffix |
| Rating | Clickable 1–5 star picker |
| Date / Datetime | Date or datetime picker |
Tables without display types work exactly as before — widgets fall back to the column’s data type.
File uploads
Section titled “File uploads”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.
Validation
Section titled “Validation”When you submit a form, Alchemify validates each field. If the column has a display type, semantic validation runs first:
| Display type | Rule |
|---|---|
| Must be a valid email address | |
| URL | Must be a valid URL |
| Phone | Digits, spaces, parentheses, and hyphens only |
| Color | Must be a hex color (#rrggbb) |
| Percent | Must be 0–100 |
| Rating | Must be 1–5 |
Otherwise, validation falls back to the column’s data type:
| Column type | Rule |
|---|---|
| Integer fields | Must be a whole number |
| Numeric fields | Must be a valid number |
| UUID fields | Must match UUID format (e.g. 550e8400-e29b-41d4-a716-446655440000) |
| JSON fields | Must be valid JSON |
| Required fields | Cannot 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.
Editing a record
Section titled “Editing a record”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.
Deleting a record
Section titled “Deleting a record”Click Delete on the detail view. A confirmation dialog appears — once confirmed, the record is removed and you’re returned to the list view.
What you can see and do
Section titled “What you can see and do”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.