RankDude

Test log

Atoms test data

Raw results for the Atoms review. The verdict is in the review.

Tested
26 October 2026
Tester
Miles Foster
Account
Bought for this review at the public price
Tests
8
Screenshots
7
Environment
Google Chrome on desktop, with a separate headless Chrome for the live-app checks and the phone speed run

Results

IDTestKey measurementScore
T01Prompt to Working AppBrief to the first version: 17 min5/5
T02Spec AccuracyChecks passed, of 24 without keys: 224/5
T03Sign-in & Access ControlScripted attacks blocked: 2 of 24/5
T04Database & AdminChecks proved: 6 of 65/5
T05Iteration & Credit BurnChanges that worked first time: 8 of 8 run3/5
T06Publish, Speed & MobileTime to go live: about 1 min3/5
T07Export & OwnershipCode export: ZIP, whole project3/5
T08Pricing & Cost to FinishPlan bought, per month: $203/5
Overall (in the review)3.8/5
T01

Prompt to Working App

5/5Tested
Method
The Fitting Room brief was pasted word for word (1,689 characters) into Atoms' home page in Build mode at 16:21 UTC on 26 October 2026.
Brief to the first version
17 min
Brief to a live app
29 min
Prompts, fixes and approvals
1, 0, 0
Credits for the first build
20.46
Remark
Under 30 minutes and 5 prompts or fewer is a 5. At 29 minutes it only just makes the band, and I counted the time to a live address, not to a perfect app.

Atoms builder with the pasted Fitting Room brief in the chat on the left, the app preview on the right and the publish dialog open showing Published, App Status Live and the address 18xyhxh.pub.atoms.world

Atoms builder with the pasted Fitting Room brief in the chat on the left, the app preview on the right and the publish dialog open showing Published, App Status Live and the address 18xyhxh.pub.atoms.world
T01-1 The brief in the chat (left) and the publish dialog on the live address.
Raw notes

The Fitting Room brief was pasted word for word (1,689 characters) into Atoms' home page in Build mode at 16:21 UTC on 26 October 2026. The clock stops when the app is live and the checks pass: 25 of 30 on the full scale, applied here as 20 of the 24 checks that need no keys of mine.

Alex, the engineer agent, said it would confirm the plan first, then built straight on. It asked for two keys, a Resend key for emails and an optional sender address; I skipped both, because emails are outside this review. The first version appeared about 17 minutes after the brief, and the chat said the build, lint and home-page check passed.

I published at 16:50 UTC and the Atoms address answered about a minute later, 29 minutes after the brief. The app live then is the one that passed 22 of the 24 checks when I ran them, in 1 prompt, with no fix prompt and no hand edits to the app.

The first build used 20.46 credits.

  • I ran the 24 checks after the app was live, not at the 29-minute mark, because setting up the logins took longer than the build; the app did not change in between.
T02

Spec Accuracy

4/5Tested
Method
The checks were run against the live app, by hand and by short scripts, with a note per check.
Checks passed, of 24 without keys
22
Left out, need the owner's keys
6
Not shown, one login only
2
Invented classes or prices
0
Remark
22 of 24 is 91.7%, in the 80% to 92% band: 4.

Atoms test app live home page: Fitting Room, Small classes. Strong, precise Pilates, with a studio photo, a See the timetable button and the prices $95 for the 5-class pass and $24 for a single class

Atoms test app live home page: Fitting Room, Small classes. Strong, precise Pilates, with a studio photo, a See the timetable button and the prices $95 for the 5-class pass and $24 for a single class
T02-1 The live home page after the first build.
Raw notes

The checks were run against the live app, by hand and by short scripts, with a note per check. The six that need your own Stripe and email keys (C24 to C29) are left out, so the thresholds are applied to the 24 that remain: 5 needs 93% or more (23 or more), 4 needs 80% (20), 3 needs 60% (15), 2 needs 33% (8) and 1 is below that.

22 of 24 checks passed, which is 91.7%, just under the 93% a 5 needs. Passing: the three role screens (C04), the timetable with the three seeded classes, days, times and durations (C05), instructors, capacity and places left (C06), booking with a confirm step, My bookings, and cancelling with the place freed and the credit returned (C07 to C09), the full-class rule (C10), the message when there are no credits (C11), another member's bookings staying hidden (C12), the coach seeing only their own classes with the members booked and Attended saved (C13 to C15), the admin adding, editing and deleting classes (C16 to C18), every booking, the CSV and the counts per class (C19 to C21), the Ask the studio form and the admin's list of messages (C22, C23), log-out and log-in again (C02) and all ten seed facts with nothing invented (C30).

Two checks could not be shown: sign-up as a new member with an email and password (C01) and the password reset email (C03). Atoms refused every extra test address, so I had one login. They are counted as not passed, not as failed by the app.

The pages hold only the brief's facts. The marketing lines are the builder's own words, such as 'Small classes. Strong, precise Pilates.', and the single $24 class can be seen but not bought in the app. The studio photo on the home page is a generated image.

  • Member B and member C were made by editing booking rows in the data panel, and the 'full class' was filled the same way, so the capacity rule was shown with those rows and one real login.
T03

Sign-in & Access Control

4/5Tested
Method
Log-in, log-out and the role screens on the live app, then two attacks with the app's own requests: asking for another member's bookings, and calling an admin-only action as a member.
Scripted attacks blocked
2 of 2
Password reset
not shown
Weak spot
the first visitor to choose Admin becomes admin
Remark
Both attacks are blocked and sign-in works, but the first-admin rule is a weak spot the owner has to know about, and the reset was not shown: 4.

Atoms test app log-in page with three cards: Member, Coach and Admin, each with a Continue button, and a line about the first admin being set up automatically

Atoms test app log-in page with three cards: Member, Coach and Admin, each with a Continue button, and a line about the first admin being set up automatically
T03-1 The live app's log-in page: Member, Coach or Admin.
Raw notes

Log-in, log-out and the role screens on the live app, then two attacks with the app's own requests: asking for another member's bookings, and calling an admin-only action as a member. Atoms refused every test address except the owner's own login, so the member, coach and admin screens were all tried with that one account by switching its role in the data panel.

Both attacks were blocked. The member's bookings request takes no user id: adding a user id of another member changed nothing, and it returned only my own rows. Every admin request, the bookings list, the export, the member list and the delete-class action, answered with an HTTP 403 'You do not have access to this area' for a member.

Sign-in is Atoms' own account page, with Google or an email, and an app user needs an Atoms account. The app's welcome page asks for a name and a role. The first person to choose Admin becomes the admin at once; later coaches and admins wait for approval in the admin's Accounts tab. That is a good rule, but it also means a stranger who opens a brand new app before its owner would become the admin, and Alex told me to sign up as admin first.

Atoms' sign-in page checked the address and then showed no message at all when it refused my plus addresses: the form just stayed where it was. The password reset runs on that same Atoms page, so I could not show it.

  • Atoms' own security scan ran before publishing ('Security checked'); a 'Hard-coded credentials found' line was listed in the dialog and I did not open it.
T04

Database & Admin

5/5Tested
Method
The six data checks: the form and bookings write real records, they survive a reload, a redeploy and a design change, the admin can view, filter, edit and delete them, and they export as a file.
Checks proved
6 of 6
Tables in the data panel
6
Database space used
30 MB of 10 GB
Remark
Six of six proved is a 5.

Atoms Cloud database panel showing the bookings table with id, user id, class id, session date, member name and member email columns, a Filter button, a search box and the note Double-click any cell to edit

Atoms Cloud database panel showing the bookings table with id, user id, class id, session date, member name and member email columns, a Filter button, a search box and the note Double-click any cell to edit
T04-1 The bookings table in the data panel, with a filter, a search and editable cells. Emails hidden.
Raw notes

The six data checks: the form and bookings write real records, they survive a reload, a redeploy and a design change, the admin can view, filter, edit and delete them, and they export as a file.

Proved (six): the Ask the studio form and the bookings wrote records; they were still there after reloads and after eight republishes, including the colour change (E03); the admin viewed, edited and deleted rows in the app, and in the data panel searched, filtered, edited cells and deleted rows; and the admin's CSV of bookings downloaded with the right columns.

The data panel shows six tables (bookings, classes, inquiries, orders, profiles and users) and 30 MB used of 10 GB. Atoms' support assistant said the panel exports one table at a time as CSV and that only the workspace owner can export.

Deleting a class in the app also removed its bookings and returned the credits, which the app said in a message. The booking rows of the deleted class were gone from the admin list afterwards.

  • I did not run the data panel's own CSV export or its Database Connection String; the CSV I tested is the app's.
T05

Iteration & Credit Burn

3/5Tested
Method
The twelve scripted changes, one prompt each, on the live app, which I republished with Update after each.
Changes that worked first time
8 of 8 run
Changes not run
4
Credits for the eight
75.86
Credits left
18.68
Remark
Eight first-try changes is the 3 band (6 to 8) of the twelve. Only eight were run, and I do not guess the other four.

Atoms test app live timetable with a Class row of filters and a Coach row with All coaches, Lena Park and Tomás Reyes, a Mat Flow class card and the Made by Atoms badge, in dark green and cream

Atoms test app live timetable with a Class row of filters and a Coach row with All coaches, Lena Park and Tomás Reyes, a Mat Flow class card and the Made by Atoms badge, in dark green and cream
T05-1 The timetable with the Coach filter, in dark green and cream.
Raw notes

The twelve scripted changes, one prompt each, on the live app, which I republished with Update after each. I stop when fewer than 20 credits are left and never buy more. After each change I ran a short check that the three classes, the bookings, the form messages and the timetable data were all still there, not all 24 checks.

Eight of the twelve ran, and all eight worked first time: a phone number field with 'No phone' shown on the admin's Accounts list (E01), Instructor renamed Coach everywhere, with no 'instructor' left in the live app's text (E02), dark green and cream (E03; the first draft already used those colours), an About page with the brief's address, phone and email (E04), Power Reformer's capacity set to 4 (E05), a filter on the timetable by coach (E06), the planted credit bug (E07) and a second email when an admin cancels a booking, with a new Cancel button for admins (E08).

Alex asked before changing the profiles table in E01. In E07 I first asked it to remove the refund of the credit on cancelling, and it did; when I reported that as a bug, it said the refund had not broken, that my earlier message had asked for it to go, and put it back. The E08 email could not be sent without a key, and the admin saw 'The email to the member could not be sent'; the cancel and the credit worked.

Two of my own scripts overlapped and sent the E06 prompt twice and the E03 prompt twice; the repeats changed nothing. The eight used 75.86 credits, from 94.54 to 18.68, and those repeats are in that figure. The dearest change, E06, used 17.62 credits with its repeat.

  • The four unrun changes (the phone layout, the admin-only export, the waiting list and the dark mode) could have changed this grade either way; the 24 checks were not re-run in full after each change.
T06

Publish, Speed & Mobile

3/5Tested
Method
Publish to the Atoms address, timed, then three Lighthouse phone runs on the home page of https://18xyhxh.pub.atoms.world/.
Time to go live
about 1 min
Phone speed score (median of 3)
62
Largest paint
13.2 s
Page weight
2.1 MB
Remark
A median of 62 is in the 50 to 74 band: 3. The app is also on the vendor address only.
Raw notes

Publish to the Atoms address, timed, then three Lighthouse phone runs on the home page of https://18xyhxh.pub.atoms.world/.

Publish ran a security scan and then went live: the address answered in about a minute. Each Update after a change was about the same. The address is a random name on pub.atoms.world that can be edited. The live app carries a 'Made by Atoms' badge. The pricing page lists 'Remove Atoms badge' under Pro, but the publish dialog marks it Pro+, and the badge stayed on my plan.

The three phone scores were 61, 62 and 66, median 62. The largest contentful paint was 13.2 seconds and first paint about 3.8 seconds, with a layout shift of 0.002. The page weighs 2.1 MB.

Custom domains: 'Connect existing domain' and a link to buy one on IONOS, marked as a beta feature. I did not connect one. A timetable with 100 seeded classes, layout faults at three widths and a real phone were not tested.

  • Home page only, no seeded classes, no domain, no layout fault count and no real phone.
T07

Export & Ownership

3/5Tested
Method
The Download Project button in the code panel, then the ZIP unpacked in a new empty folder outside the repo, a read of its files and dependencies, `npm install` with scripts turned off and the front end's build.
Code export
ZIP, whole project
Front end built on my machine
yes, 15 s
Back end started
not run
Remark
The code is all there and the front end builds, but log-in and the SDK need rework and the back end was not run: 3.

Atoms code panel with a file tree of the project's backend folders, the file studio.py open with its Python code and a Download Project button at the bottom of the file tree

Atoms code panel with a file tree of the project's backend folders, the file studio.py open with its Python code and a Download Project button at the bottom of the file tree
T07-1 The code panel with the Download Project button.
Raw notes

The Download Project button in the code panel, then the ZIP unpacked in a new empty folder outside the repo, a read of its files and dependencies, `npm install` with scripts turned off and the front end's build. Nothing from the ZIP was run except that build.

The ZIP is a 2.2 MB full-stack project: a FastAPI (Python) back end with SQLAlchemy and Alembic that reads a standard DATABASE_URL, and a React and Vite front end. The 557 front-end packages installed in a minute and the build finished in about 15 seconds and prerendered two pages.

It is not free of Atoms. The log-in is a standard OpenID flow whose issuer and client ID are settings, so it points at Atoms' sign-in service until you replace it, and the front end calls Atoms' own web SDK (@metagptx/web-sdk). I did not start the back end, because the test machine has no Python.

Atoms' terms of service, read on 26 October 2026 (effective 13 January 2026), section 5.3: 'Atoms makes no claim to ownership of: All content (including code) generated using our Services'; you may freely use it commercially, modify it and distribute it.

  • The back end was not started and the 24 checks were not re-run on the export.
T08

Pricing & Cost to Finish

3/5Tested
Method
The pricing page (monthly and yearly views), the plan page with the credit meter and the cancel dialog were read on 26 October 2026, with a screenshot at each step.
Plan bought, per month
$20
Credits used, of 115
96.32
Remark
The twelve changes did not all fit in the entry plan's credits, there is no top-up button and the running cost of 1,000 bookings is not known: 3.

Atoms Plans and credits page: Pro 20 plan, Credits remaining 18.68 of 115, 100 monthly credits reset on Nov 26 and free credits remaining this cycle 10.36 of 25

Atoms Plans and credits page: Pro 20 plan, Credits remaining 18.68 of 115, 100 monthly credits reset on Nov 26 and free credits remaining this cycle 10.36 of 25
T08-1 The credit meter at the end of my test.
Raw notes

The pricing page (monthly and yearly views), the plan page with the credit meter and the cancel dialog were read on 26 October 2026, with a screenshot at each step. Atoms charges in credits, not in dollars per prompt.

The owner bought Pro at the entry tier, 100 credits for $20 a month; the dashboard showed 115 credits, which is the 100 plus 15 free daily credits. The test used 96.32 of the 115: the first build 20.46 and the eight changes 75.86. At the plan's $20 per 100 credits, the first build is about $4.09, if all its credits were plan credits.

Pro also comes at 250 credits for $50 and 350 for $70, and Max starts at $100 for 500. Billed yearly the entry Pro tier is $15.80 a month, 21% less, and other yearly tiers are 18% less. There is no button to buy extra credits: the FAQ says to upgrade to a higher plan, and it shows no automatic top-up, so the plan cannot bill beyond its price.

Unused credits are not kept, apart from a few cases such as an upgrade, bonus credits and invites, and then only for one month. The plan renews itself every month; the dialog on the downgrade says it stays active until 26 November 2026 and that unused credits are then reset. I have not read what 1,000 bookings a month would cost.

  • Yearly prices were read, not bought. I did not try the Max plan.

Coverage

Tested

  • One brief built and published, then 24 of the 30 written checks (C24 to C29 need keys), run on the live app
  • Two access attacks on the live app's requests
  • Six database and admin checks, using the data panel and the app's CSV
  • Eight of the twelve changes, one at a time, until the credits fell under my floor
  • Publishing to the Atoms address, timed, and three phone speed runs
  • The code download, installed and built in a clean folder
  • One question sent to Atoms Support
  • The plan page, the credit meter, the pricing page and the cancel dialog

Not tested or limited

  • Payments and emails need your own keys, so the six checks C24 to C29 were left out and the actions test is not graded; Atoms asked for a Resend key and I skipped it, and the app says its emails only send once that key is added
  • Support: my question went to Atoms Support on 26 October 2026 at 22:04 UTC. Only the AI assistant had answered when this was written, so support is not graded
  • Changes E09 to E12 were not run: I stop at 20 credits and 18.68 were left. The 12-change total is not estimated
  • Atoms refused my test addresses (info+member@ and the other plus addresses) with 'reached the account registration limit', so I had one real login. I switched its role between member, coach and admin in the data panel, and made 'member B' and 'member C' by editing booking rows by hand. The sign-up and the password reset (C01, C03) were not shown
  • Speed was measured on the home page only, with no 100 seeded classes, no layout fault count and no real phone; no custom domain was connected
  • The back end of the downloaded code was not started, because the test machine has no Python; only the front end was installed and built
  • I did not confirm the plan downgrade, so the Pro plan is still active until 26 November 2026 and I could not see what the downgrade does to the live app

Still to test

  • Payments and the declined card with your own Stripe key
  • Atoms Support's answer from a person
  • Changes E09 to E12 with more credits
  • The downloaded back end started against my own database
  • A custom domain and a timetable with 100 seeded classes
  • Layout faults at three widths and on a real phone
  • Uptime on the test app
What these results meanRead the full Atoms review