Mockomat
Changelog

What's shipped, what's
coming next.

Mockomat updates roughly every week. We release here first — full roadmap, no marketing fog. If something below changed how you work, we'd love to hear it.

Currently shipping v0.9 — Public Preview
Subscribe via RSS
v0.22.0
New
  • A call-volume chart for your whole workspace
    See total API calls per day across every project, with a quick switch between the last 7, 30, or 90 days. Hover any day for the exact count, and today shows as a partial bar so you're never comparing a half-finished day against full ones.
  • Your busiest endpoints, ranked
    A new Top Operations list ranks the endpoints consumers hit most over the last 30 days, each with a bar showing its share of traffic — so you can see at a glance where your usage is concentrated.
  • Drill into any project
    Expand a project in the list to reveal its own call-volume chart and top endpoints, plus a breakdown of which teammates drove the most calls in the last 30 days.
Improved
  • A clearer usage summary
    The top of the page now highlights calls today, this month, and over the last 90 days, alongside how many of your projects served traffic this month and whether usage is trending up or down versus the previous 30 days.
  • A clear prompt when analytics isn't on your plan
    If your plan doesn't include Endpoint Analytics yet, the page now shows a preview with a one-click path to upgrade instead of turning you away.
v0.21.0
New
  • Export, rebuilt as a wizard
    Export is now one guided flow that works the same way whether or not you have a project open — no more 'sometimes a dialog, sometimes a page'. Choose an instant OpenAPI spec download, or a full code package that runs in the background with live progress and a completion screen when it's ready. What's available follows your plan.
Improved
  • Every page opens with a short intro
    Projects, Modelling, Views, API design, Runtime, Analytics, the Data area, Admin, Export, Recycle Bin and Archive now each start with a one-line headline and a short explainer, so you always know what a page is for at a glance. On the modelling boards the intro floats as a tidy panel over the canvas and can be collapsed out of the way — it remembers your choice.
  • Table editor reorganised into tabs
    Creating or editing a table is now split into General, Tags, and Volume Tier tabs instead of one crowded form. The Tags tab has a new searchable, paginated picker that shows how many records carry each tag, and the volume-tier settings now live inline in their own tab rather than opening a second dialog on top of the first.
  • Edit a view's layout in a live side panel
    On the Runtime page, changing how a view presents — which columns show, their order, sorting, and title — now opens a full-height side editor that can collapse to a slim rail. The preview sits next to it and updates live as you make changes.
  • Recycle Bin icon shows when it has items
    The trash icon in the menu now fills in when there's something to recover and reverts to an outline when the bin is empty, so you can tell at a glance without opening it.
  • Info and warning messages refreshed
    The small info and warning cards across the app got a roomier, softer look that lines up with the rest of the button and surface styling.
  • New projects guide you on the board
    A brand-new project now shows a 'Start here' prompt right on the modelling canvas with a one-click add-table action, instead of a separate empty screen.
Fixed
  • Deleted tables stay deleted
    Tables, columns, and relations you removed no longer reappear after reloading the page.
v0.20.0
Improved
  • Recycle Bin and Archive use the same right-side panel as the rest of the app
    Clicking an item in Recycle Bin or Archive opens its details in the standard right side panel you already know from every other list — same shape, same close, same place. The page itself is a clean single column with one in-content toolbar above the list: filter chips for the type (Projects, Tables, Views, Operations, Data Sources, Import Models), a time-range dropdown, search, and sort, all in one strip. The old left filter rail is gone.
  • Restore everything asks before running
    The 'Restore everything in view' and 'Unarchive everything in view' actions now show a confirmation dialog before they fire, so a stray click on a long list can't flip a few hundred rows back in one move. Permanent delete still uses the existing type-to-confirm dialog.
  • Retention reminder at the top
    The 'items get permanently deleted N days after they land here' reminder used to sit at the bottom of the page. It now lives at the top, right where you read it once and move on. The link to change retention is still right next to the copy.
  • Mobile heroes line up with the rest of the page
    On phones the page hero now sits on the same left edge as the cards underneath it (it used to be a few pixels off), the gap below it is tightened up so the body content starts where you expect, and the headline size is gentler on smaller screens too.
  • Browser tab follows the page
    The title of your browser tab now matches the headline you actually see on the page — not a static page name. Switch language and the tab title follows immediately. Pages without a hero keep their existing section title, so existing bookmarks still mean the same thing.
  • Welcome page eyebrow
    The first thing visitors read on the Mockomat homepage is now 'Start now' (translated per language) instead of a generic 'Welcome'. Same hero below it — clearer first invitation.
Fixed
  • Mobile Dashboard and Blueprints no longer show two heroes
    On phones the Dashboard and Blueprints pages rendered their hero twice — one at the top of the screen, one inside the page. Only the one at the top is shown now.
  • Recycle Bin detail no longer feels like a panel inside a panel
    When you opened a row's details you saw two close buttons and a second 'Item details' header inside the side panel. The detail content now sits flat inside the standard panel — one close, one title, all the content.
  • Cleaner browser tab titles
    Some tab titles ended with a stray dash before the brand suffix. Titles now end cleanly.
v0.19.0
New
  • Sorting controls in the field-settings panel
    The column-settings popover on any list now has a Sort toggle per column, with an ascending/descending button beside it, plus a 'Default Sorting' section where you choose which column a list sorts by out of the box and in which direction. Columns stay sortable by default until you decide otherwise, and your choices are remembered per list.
Improved
  • Create a workspace without leaving the page
    The + next to Workspaces — in the switcher dropdown and the workspace panel — now opens the create dialog right where you are, instead of sending you to the workspace settings page first. As you type a name, the dialog previews the address your workspace will live at.
  • Your active project follows you
    Pick a project from the list and it stays selected as you move between Build, API, and the rest of the app — and it's still selected after a reload. Selecting a project keeps you on the list instead of jumping you elsewhere, and changing the workspace filter or the page size clears the selection so the new view starts fresh.
v0.18.0
New
  • OpenAPI import, rebuilt as a real wizard
    Importing an OpenAPI spec is no longer one tall card — it's a three-step wizard with a rail at the top telling you where you are. Step 1: enrich an existing project or spin up a new one (guests skip this step since they have a single session workspace). Step 2: pick a dialect, drop a file or paste content, and watch the parser tell you which version it detected and how fast. Step 3: pick which schemas should become tables before you commit. Optional 'Import schema' tile now sits beside 'Start from blueprints' on the welcome strip so the path is discoverable from the first screen.
  • Relations editor with side-by-side tables
    Editing a relation on the modelling board now opens a three-column dialog: the source table on the left, the editor card in the middle (name, cardinality, direction, on-delete), and the target table on the right. A live SVG connection diagram above the columns updates as you toggle. The records-tab Relations list is also flatter — one row per relation instead of nested inside the table card, so you can sort and search. On phones the existing bottom-sheet flow is still the right shape, and the pencil glyph on the board routes there automatically when the viewport is narrow.
  • Dedicated Data area
    Data Sources, Raw Dumps, Raw Data Import, Raw Data, Density, Tag Management, Mock Fields, and Publish now live under their own top-level Data tab in the main nav (visible on enterprise plans). The admin area keeps everything that's genuinely platform-scoped (users, tenants, sessions, jobs, …) and is the cleaner for it.
  • Project drivers + smarter volume tiers
    You can now declare volume drivers per project (e.g. 'active users', 'transactions per day') and have table volume tiers infer themselves from those drivers instead of being set table-by-table. The volume-tier dialog was rebuilt around the new pipeline; existing per-table tiers stay where you put them and are now visible at a glance with a new chip on each table card.
  • Density and Tag Management pages
    Two new pages under the Data area. Density lets you top up the mock pool for a specific tag-group from a chosen source dump and watch records move in real time. Tag Management lets you enrich, reduce, or merge pool tag-groups; merge is irreversible so it asks you to type the source name to enable the action — no accidental merges.
  • Admin notifications management
    Admins now have a dedicated Notifications page (under Manage) for sending and reviewing notifications at scope. The compose dialog has a scope section — Global, specific tenants, or specific users — that reuses the same picker as system hints. Useradmins see only their own tenant's notifications; system admins see everything.
Improved
  • One button system across the app
    Every button in the app — primary, secondary, destructive — now follows one global tonal system. 8px corners, Inter type, even padding, 38px height. Destructive actions (Delete buttons across tables, dialogs, side panels) are now a soft red that doesn't shout. Secondary actions on dialog footers read as deliberate companions to the primary, not as equally weighted alternates. Pages stop fighting each other on shape and shadow.
  • Inline docs links on field-help and dialogs
    Every help glyph on a form field and every dialog title can now anchor to the right docs page in one click. The help popover got a body slot for the explanation and a separate link slot for 'Read docs →'. Dialog titles grew a small docs pill next to the close button. No more flipping between tabs to figure out what a field expects.
  • Admin pages on the unified surface
    The admin area no longer paints its own dark canvas — it sits on the same surface as the rest of the app. Pages inside it read more consistently, scroll behaviour matches Build / API / Run, and the import wizard's own dark island is unchanged.
  • Smaller, cleaner left submenu
    The expandable/collapsible groups in the admin and project sidebars are gone — only two groups remain under admin so a static layout reads cleaner. Headers are still there as labels, but you no longer have to click them open.
v0.17.0
New
  • Activity feed, rebuilt
    Every activity surface — the dedicated page, the dashboard widget, the public feed — now uses one shared component. Rows are grouped under day headers (Today, Yesterday, explicit dates), each row carries a typed badge and a project chip in the project's own colour, and a side panel opens the full payload of any single event. Same data, much faster to scan.
  • Publish widget on the dashboard
    Admins now get a Publish tab in the dashboard stream that mirrors the publish-zone header on the Publish page: a status badge (In sync · Changes pending · Initial publish · Workspace empty), workspace + production record counts, an optional delta, last-published timestamp, and a one-click Open Publish button. No more visiting the page just to check 'is anything pending?'.
  • Account → Invoices in the standard layout
    The invoices page under your account now sits inside the same wrapper as the rest of the account area — intro strip at the top, content centred at the standard width. The admin /admin/invoices view is unchanged.
Improved
  • Not-found and unauthorized pages with context
    Hit a 404 or a 403 and you now get a page that actually explains what happened — what you were trying to reach, what's likely missing (a plan, a role, a moved URL), and a couple of action cards pointing you somewhere sensible instead of a generic 'page not found'.
  • Project selector polish
    The project-select page now uses the shared action-card primitive, surfaces a plan-limit pill so you can see your project budget at a glance, and confirms workspace switches with a toast.
  • Mail status and type badges, everywhere
    The colour-coded badges used for emails — status (sent / queued / failed / read) and type (transactional / contact / digest) — are now shared components, so they look identical in the System Emails tab, the Contact Messages tab, and the side-panel detail views.
v0.16.0
New
  • Inline attribute editor on the modelling board
    Clicking an attribute on the board now turns that row into an in-place editor — name, type, mapping, required, list, search, sort, filter — instead of opening a full-screen dialog. Picking a pool field for the mapping opens a side popover that points back to the row and never covers another table. Power-user moves: Cmd/Ctrl+Enter saves, Esc cancels, ↓/↑ auto-saves and moves to the next attribute. The records-view edit dialog stays as it was — that's a different surface and still the right tool there.
  • Custom plan invitations end-to-end
    Admins can now create a hidden plan and immediately issue an inquiry code that emails a redeem link to a chosen recipient. Free plans attach on the spot; paid plans hand off to Stripe checkout. Recipients without an account get a signup-with-invitation flow so they don't have to sign up first, then accept. Logged-in users with the code can paste it on a new 'Redeem' page under their account.
  • Action-card primitive
    A reusable card tile (icon + title + body + optional pill + CTA) now powers the new error pages, the project-select grid, and a handful of empty-state surfaces. Same look across the app instead of one-off cards per page.
Improved
  • Contact form, simplified
    The contact page shed a handful of one-off subcomponents (hero block, identity card, dropzone, smart-fields panel, subject pills) and folded everything into one tighter form. Same fields, same behaviour, less surface to maintain.
  • Notification on workspace switch
    Switching workspaces now drops a small confirmation toast so you know the switch took, even when the URL change is the only visible signal.
v0.15.0
New
  • Cookie preferences you can actually manage
    The cookie banner on the marketing site and the in-app consent surface were both rewritten. Three categories (essential, analytics, marketing), per-category toggles, choice persists per user (not per device), and there's a footer link to reopen the panel any time.
  • Session-expired screen
    When your session ends mid-flow, you now see a clear 'Session expired' screen with a Sign-in button — not a silent redirect. After you sign back in, we drop you exactly where you were, with the same workspace and project selected.
Improved
  • Analytics respect consent
    Our self-hosted Umami analytics script only loads after you grant the analytics category, and only when the production analytics ID is set. Dev and staging stay quiet — no tracking outside production.
  • Cleaner auth screen branding
    The login / signup / forgot / reset / verify screens share a single brand panel layout, with the topbar shown across all of them so navigation back to the marketing site is one click.
v0.14.0
New
  • Tips appear live in the Learn-more dialog
    Open the Learn-more dialog on any major page and the TIP section now shows a fresh, page-specific tip — pulled live from a curated catalog. Projects pages get project tips, the modelling board gets board tips, the API page gets API tips, and so on. Open the dialog again — different tip. If no tip exists in your language, you'll see the English one; if the catalog is empty, the original baked-in tip still shows up.
  • Admin → Content → Tips
    A new Tips tab joins the FAQ tab under Admin → Content. Same admin UX you already know — search, inline edit, drag to reorder, soft delete, language switch from the toolbar. Each tip has a title, a body, and a category. Categories use the same pop-out picker as the FAQ admin, with add / rename / delete inline.
  • Tip categories aligned to your pages
    We ship the catalog seeded with six categories — projects, modelling, api, views, runtime, general — so the wiring works out of the box. The general category is reserved for surfaces that aren't tied to a specific page (think login, welcome, dashboard) — coming soon.
  • All tips localised per language
    Tips follow the same per-row language model as FAQ items. Add a translation of an existing tip by selecting the right language in the content toolbar, then creating the row. Switching the app's language switches which tips show up.
Improved
  • Sharper positioning across the marketing site
    The landing page hero, sub-line, body copy, three-step story, footer tagline, and meta description have all been rewritten around one canonical line: 'Visual data modelling, live API. Real records, served the moment you save.' The three pillars on the marketing page are now Model → Map → Serve.
  • Welcome page tells the same story
    Sign in and the welcome screen now leads with the same headline and lead paragraph as the marketing site, so the moment-of-arrival never feels like a different product.
  • Six languages, fully in sync
    Every translatable string on the landing site (573 keys per locale) and inside the app (4,171 keys per locale) is now structurally identical across English, German, Spanish, French, Italian, and Turkish. 65 missing in-app keys were translated this pass — mostly across the FAQ admin, project collaboration link settings, and a few global UI strings.
v0.13.0
New
  • Public contact form
    Visitors can reach out from the marketing site without an account. Each submission gets a ticket id, lands in your admin inbox, and triggers a confirmation reply to the sender — all rate-limited and origin-checked.
  • Contact-message triage in admin
    A new Contact Messages tab on /admin/mails lists every inbound submission with status workflow (new → read → replied → archived). Click a row, the side panel shows the full message, sender details, smart fields, and routing metadata. Status auto-promotes to read the moment you open the panel.
  • System email detail panel
    Click any row in the System Emails tab to see the template, the resolved subject, the recipient (with mailto link), parsed template variables, send attempts, sent timestamp, and the last error if delivery failed. Read-only — admins triage, the pipeline owns delivery.
  • Resume where you left off
    We now remember the last workspace and project you visited. Sign in from a fresh tab and you land back in the right context instead of a generic welcome page.
  • Notification preferences (foundation)
    Per-row email and in-app notification preferences are now persisted on your user record, ready for the upcoming notification settings page.
Improved
  • Workspace switching is reliable
    Switching workspaces in the project list no longer strands the page in a half-state. Click any project in the new workspace and it activates immediately. The 'All workspaces' tree node correctly drops the workspace filter and stays highlighted.
  • URL is the single source of truth for scope
    The active workspace, project, and section are now derived from the URL on every navigation. Bookmark a deep link, share it, hit refresh — the app picks up exactly where the URL points, no hidden state to confuse it.
  • Empty states everywhere
    Tables and tile grids now always show a hint when there's no data — 'No items yet' for fresh views, 'No results' with a clear-search button when a filter narrowed everything down. No more silent blank screens after a refresh.
  • Consistent hint surfaces
    Every empty / loading / error / no-results card across the app is now the same component, with consistent spacing above and below. The api/graphql page, the modelling board's empty state, and the data-table empty state all share the same look — no per-page reinventions.
  • Welcome page intro reframed
    The intro strip on the welcome page now positions Mockomat as a visual, collaborative platform for data modelling — instead of repeating the hero's pitch line right below it.
  • Project selector hero
    Picking a project on the /projects page now leads with the same intro-strip used elsewhere, properly centred in a max-width column with breathing room from the top nav.
  • Modelling board empty state, centred
    The 'No tables yet' card on a fresh project sits visibly between the toolbar and the blueprint slider on tall screens, instead of pinning to the top.
  • Tab content has room to breathe
    Material tabs across the app (api/graphql, mails, etc.) now get consistent padding under the tab strip, so the first row of content isn't crammed against the header.
Fixed
  • Selecting a project after switching workspaces no longer fails silently — clicks now register and the project becomes the active one.
  • Selecting another row after a workspace switch no longer reads from the previous workspace's stale selection cache.
  • The raw-data viewer no longer renders 'Missing translation for Select columns' inside its own hint card.
  • System email status and type chips now show their proper labels instead of raw enum keys.
  • The 'Select a Table' hint on the api/graphql page is now compact and centred instead of stretching the full pane width.
v0.12.0
New
  • API key permission scopes
    Each API key now carries a scope: Runtime (mock endpoints only, the existing default), Management (schema CRUD via the GraphQL API), or Full (both). Create a management-scoped key, hand it to an AI agent, and it can model your project programmatically.
  • Scope selector in key creation
    The "Create API Key" dialog includes a scope dropdown. The token list shows the scope of every key at a glance.
  • Anonymous users are real users
    Guest collaborators now get a proper user record behind the scenes. They receive real-time board events, keep their notes when they register, and show up in project analytics — no more invisible participants.
  • Automatic guest cleanup
    Anonymous user records whose sessions have expired are soft-deleted automatically every hour. No manual housekeeping needed.
Improved
  • Project-scoped key isolation
    Management-scoped keys are bound to one project. A key created for Project A cannot read or write Project B — enforced at every resolver, not just the API boundary.
  • SSE works for everyone
    Anonymous collaborators now receive the same real-time events (note created, cursor moved, schema changed) as registered users. No more one-way collaboration.
  • Display names fall back gracefully across the app: first + last name, then display name, then email, then empty — consistent everywhere.
Fixed
  • Gravatar lookup no longer crashes when processing anonymous users with no email address.
  • Notification broadcasts no longer fail when a recipient has a null email. The SSE key computation handles anonymous and registered users uniformly.
  • Anonymous collaborator limit no longer locks out users after their first interaction. Existing participants are recognized and bypass the count check.
v0.11.0
New
  • Cancel at period end
    Cancelling a subscription no longer deletes it on the spot. Your plan stays active until the current billing period ends, then downgrades to Starter automatically.
  • Cancellation-pending indicator
    After you cancel, the subscription page shows a clear banner telling you when your plan will end. The cancel button disappears so you can't double-cancel.
  • Real-time subscription updates
    Plan changes, payment failures, and cancellations push a live event to every open tab. The subscription page refreshes itself — no manual reload needed.
  • Login-time Stripe sync
    Each login quietly checks your subscription against Stripe. If a webhook was missed — payment failed, plan cancelled externally — the app corrects itself on the next sign-in.
Improved
  • Plan enforcement uses the source of truth
    Feature gates and usage dashboards now read the plan from the tenant record, not the login token. Upgrading or downgrading takes effect everywhere immediately.
  • Faster plan-change propagation
    The in-memory plan cache is cleared the moment a plan changes. No more 60-second window where old limits still apply.
  • Dashboard widget resize handles are larger and easier to grab.
  • Dashboard edit-mode button uses a wrench icon instead of a pencil for clearer intent.
Fixed
  • Stripe cancellation webhook no longer fails silently. Previously, the handler tried to cancel the subscription a second time via the Stripe API — which errored because Stripe had already deleted it — so the database was never updated.
  • View detail queries no longer break when a field reference was left bare.
v0.10.0
New
  • Live cursors & presence
    Open the same modelling board as a colleague and you'll see their cursor move in real time. Coloured badges on each table show who's editing what; stacked avatars in the toolbar show everyone online.
  • Stripe payments
    Subscribe to Starter, Professional, or Business directly from the app. Upgrade, downgrade, or cancel at any time — changes take effect immediately.
  • Plan limits & upgrade prompts
    Hit a table, view, or API-key limit and the UI tells you exactly what's restricted and offers a one-click upgrade. Feature gates disable buttons you can't use yet with an explanation tooltip.
  • Preview access control
    Share a project publicly, via a secret token link, or keep it private. Set the mode per project in the settings dialog.
  • FAQ
    A searchable FAQ page with categories. Related articles appear contextually on other pages where they're most useful.
  • Workspace roles
    Invite teammates as Readonly, Reporter, Editor, or Maintainer. Each role sees only the actions it's allowed to perform.
Improved
  • Full mobile experience
    Dialogs go full-screen on phones, side panels become overlays, the top navigation collapses to a burger menu, and picker overlays fill the viewport. The app is now usable end-to-end on mobile.
  • Email confirmation flow
    A dismissible hint reminds you to verify your email. Resend the link from your profile page. No more hard error screens for unverified accounts.
  • API Design page: expanded operation items now scroll properly instead of overflowing off-screen.
  • Projects can have cover images, teasers, and complexity indicators.
v0.9.0
New
  • GraphQL API Designer
    A dedicated workspace for shaping the operations your mock will expose. Pick which queries, mutations, and subscriptions exist; choose which fields each one returns; restrict scope per table. The live panel runs each operation against your data so you see exactly what consumers will get.
  • Dashboard with widgets
    A configurable home view with nine widget types — KPIs, recent activity, runtime usage, top projects, quick actions and more. Drag to rearrange, add or remove anything you don't need. Layout sticks per workspace.
  • API access tokens
    Generate scoped keys (`mck_…`) to call your mocks from CI, scripts, and external services. Name them, set expiration, revoke at any time. The full key is shown once at creation — copy it then.
  • Code export
    Export a generated client and server scaffold for your model. Jobs run in the background with live progress; download the bundle when ready.
  • Analytics
    See request counts, top operations, and runtime usage over time for any project.
  • Contextual help & guided tours
    Toggle help mode in the top bar and every form field grows a short explanation. First-time visitors get a step-by-step tour of the modelling board.
Improved
  • Reworked pricing page with a side-by-side feature comparison and a per-plan limit summary.
  • Restructured legal pages (imprint, privacy, terms) with consistent layout.
  • Footer navigation expanded with all the places you actually want to go.
v0.8.0
New
  • Workspaces in project create / edit
    Every project now belongs to a workspace. Defaults to your personal one; pick another from the dropdown when creating or editing. Useful when you need to separate client work, internal tools, or experiments.
v0.7.0
New
  • Board notes & threaded comments
    Click empty space on the modelling board to anchor a note. Each note holds a chat-style thread — your messages on the right, others on the left, with avatars. Notes minimise to a single bubble that stays pinned at its original position. Delete the last comment to remove the note.
  • Notification centre
    A bell in the top bar with an unread count. Mentions, replies, and project events arrive in real time over the same connection — no polling, no refresh.
  • Profile pictures via Gravatar
    Your Gravatar is picked up automatically on signup. Used in note comments, the user menu, and anywhere a user is shown.
Improved
  • German UI now uses "Anmerkung" instead of "Notiz" — closer to "annotation" than "memo".
  • Deleted comments stay visible as a placeholder ("This comment was deleted.") so threads remain readable.
v0.6.1
New
  • Pricing page, redesigned
    Plans on the left, a sticky features legend on the right, and per-plan limits expand inline. Click a price's asterisk to jump to the VAT note. Multiple plans can be expanded at once for comparison.
Fixed
  • Guest sessions can no longer create more than one session project. Earlier guests who hit this will have their existing workspace returned instead of a fresh one.
v0.6.0
Improved
  • Drag to reorder columns
    In the View editor, the manual "display order" number input is gone. Grab the handle on each field and drop it where you want.
  • Wider edit dialogs
    View and Attribute editors now open at a roomier 1600 / 1100 px so the inline editor on the right has space to breathe.
  • Click again to deselect a mock field
    In the attribute mapping panel, clicking the currently-selected mock field clears it. (Previously it did nothing.)
Fixed
  • Saving column overrides on an existing view no longer fails with a server error.
  • Empty-state icon in the mock-field picker no longer renders cropped.
v0.5.0
New
  • End-to-end search in mock data
    Mark attributes as `searchable` in the modelling editor and the same field becomes a search column at runtime. Sort and filter follow the same path. Search applies only to fields you opt in — no surprise full-text scans.
Fixed
  • The data-table search box no longer disables itself when a filter returns zero results — you can clear the term and keep going.
  • Mock runtime queries that previously returned an empty list now return your imported data correctly.
v0.4.0
New
  • Guest workspaces (24 h)
    Click "Start modelling" on the landing page and you get a session-scoped workspace that sticks around for 24 hours. Tables, attributes, relations, the lot.
  • Reset workspace
    A trash icon next to the guest banner clears your workspace if you want to start over.
  • Auto-migration on signup
    Sign up or log in while in a guest workspace and your project moves to your account automatically. Nothing lost.
v0.3.0
New
  • Named import configurations
    Save your current field mappings, name them, and reload them on the next file with the same shape. "Save As" creates a copy without overwriting.
  • Direct links to the wizard
    From a raw dump preview, "Start Import" jumps to the wizard with that file already selected. URLs encode the active dump or config so you can bookmark or share a state.
v0.2.0
New
  • Sign up, log in, sessions persist
    Token-based auth with session restore — close the tab and your workspace is still there when you come back.
  • Three-tier access
    Basic features for everyone, Modelling / Processing / Data on the higher plans, admin tools for staff.
  • My Work
    Personal landing page with your projects, your APIs, your imported data and your activity in one place.
v0.1.8
New
  • Themed component library
    Buttons, inputs, cards, dialogs, data tables, and side panels — all built on a shared set of design tokens. Dark theme first, light variant for every component.
  • Responsive layout shell
    App shell with sidebar navigation, collapsible top bar, and breakpoint-aware page structure. The same layout works from 360 px to ultrawide.
Improved
  • Typography scale revised — body text is 14 px, headings follow a modular scale, monospace used for data and code.
  • Colour palette distilled to 5 semantic roles with 3 intensity steps each. Every component references tokens, not hex codes.
v0.1.7
Improved
  • Import wizard redesigned
    The three-step import flow was collapsed into two steps after testing showed users skipped the preview step entirely. Column mapping now uses drag-and-drop instead of dropdown menus — completion time dropped by 40%.
  • Modelling board onboarding
    First-time users now see a contextual hint overlay instead of a modal tutorial. Each hint appears only when the user encounters the relevant feature, not all at once.
Fixed
  • Several participants couldn't find the "add relation" action — moved it from the toolbar overflow menu to a visible button on each table card.
v0.1.6
Improved
  • Keyboard navigation
    Tab order now follows visual layout. Escape closes any open dialog or panel. Arrow keys navigate table rows and board elements.
  • Loading states replaced with skeleton screens across all data-heavy views.
  • Error messages rewritten — every one now tells you what happened and what to do next.
Fixed
  • Importing a 50k-row dataset no longer times out. The import pipeline now streams in batches of 500 with progress reporting.
  • Relation lines on the modelling board no longer overlap table headers at certain zoom levels.
v0.1.5
New
  • GraphQL query engine
    A four-stage pipeline — request parsing, query planning, database query building, and result assembly. Supports nested relations, pagination, and field-level filtering out of the box.
  • Live preview panel
    Run a query against your imported data directly from the modelling board. The response panel shows the GraphQL result alongside the generated database query for debugging.
v0.1.4
New
  • Import wizard
    A step-by-step flow: pick a source file, map columns to your model's attributes, preview a sample, and kick off the import. Progress streams live via server-sent events.
  • Data source catalogue
    The acquisition pipeline feeds a catalogue of pre-processed, open-licensed datasets. Browse by domain, preview row counts and schemas, import with one click.
v0.1.3
New
  • Modelling board
    An infinite canvas where tables are cards you can drag, resize, and connect. Each table expands to show its attributes; click an attribute to configure type, constraints, and mock-field mapping.
  • Relation editor
    Draw a line between two tables to create a relation. Pick the cardinality (1:1, 1:N, N:M), choose the join fields, and the board draws the connector with the correct notation.
  • View builder
    Create a named view that selects a subset of fields across one or more tables. Views become the unit the API designer works with later.
v0.1.2
New
  • User research
    Interviewed 12 developers who regularly build against mock or staging APIs. Key finding: nobody wants to write seed scripts — they want to point at a schema and get data. Second finding: the main workflow is solo, but sharing the result is always a team event.
  • Three personas defined
    Solo Backend Dev (builds alone, shares the mock URL), Team Lead (needs visibility into who modelled what), and QA Engineer (consumes the mock but never edits the schema). Every feature since has been evaluated against these three.
  • Wireframes for core flows
    Low-fidelity screens for project creation, the modelling board, import wizard, API designer, and preview. Tested against all three personas in a paper-prototype walkthrough.
v0.1.1
New
  • Service boundaries defined
    Four services: API (NestJS), Client (Angular), Mailer (Express), and the data acquisition pipeline (Python). Each service owns its own domain and communicates through well-defined contracts.
  • Database strategy
    Relational database for metadata and user management, document store for mock data collections, key-value store for sessions, queues, and rate limiting. Each chosen for what it's good at — no single-database compromise.
  • Domain-driven structure
    The API codebase is organised by domain: modelling, mock-runtime, import, project, tenant, codegen. Each domain owns its entities, services, and resolvers. No cross-domain imports.
v0.1.0
New
  • Problem statement
    Frontend and integration teams waste days writing seed scripts, maintaining mock servers, and keeping test data in sync with evolving schemas. Mockomat eliminates that by letting you model a schema visually and get a working GraphQL API backed by real data — in minutes.
  • Scope definition
    V1 scope: visual data modelling, open-data import, a mock GraphQL runtime, guest sessions for zero-friction trial, and a tiered plan structure. Out of scope for V1: real-time collaboration, self-hosted deployments, and custom data generation.
  • Tech stack decisions
    NestJS for the API (TypeScript end-to-end, GraphQL-native), Angular for the client (strong typing, reactive signals), Astro for the landing page (static-first, fast). Deployment via containerised services behind a reverse proxy.