TL;DR
- Build a Google Forms‑style survey builder with AppWizzy in ~30–40 minutes on PHP + MySQL.
- AI generates frontend, backend, and DB; you iterate via chat and keep full code and hosting control.
- Features: admin login, public links, text/multiple‑choice/checkbox, DB storage, dashboards with charts and text cloud.
- Errors fixed via chat (routes, schema, forms); responses persisted; versioning enables named snapshots and rollbacks.
- Modern Gen‑Z styling applied; export source or run in AppWizzy’s VM with pause to save compute costs.
Fact Box
- Built end‑to‑end in about 30–40 minutes of guided interaction with AppWizzy.
- Runs as a classic PHP app with server‑rendered pages and a MySQL database in a dedicated VM.
- Seeds a default admin: username 'admin', password 'password' (for demo; change in real use).
- Supports question types: short text, multiple choice, and checkbox (multi‑select).
- Responses page adds bar charts and a text cloud; checkbox answers counted per option, not as one string.
Google Forms and Typeform are great… until you need something that’s really yours: your design, your backend, your database, your rules.
In this article, I’ll walk through how I built a fully functional survey builder – Google Forms-style – using AppWizzy (Flatlogic’s AI software engineer) on top of PHP + MySQL.
We’ll go from idea → working app in about 30-40 minutes of real work, including:
- Creating surveys with:
- Short text questions
- Multiple choice
- Checkbox (multi-select)
- Public survey links (no login required for respondents)
- Admin interface with login and survey list
- Answer submission and storage in your own database
- Results dashboard with charts and a text cloud
- A more modern “Gen‑Z” UI (glassmorphism, new palette, modern typography)
All of this is generated, wired, and debugged by AI – while you keep control of the code and hosting.
What is AppWizzy, in Practice?
AppWizzy is Flatlogic’s AI engineer: you describe the app you want in plain English, and it:
- Spins up a dedicated cloud environment (VM with PHP, database, etc.)
- Generates the frontend, backend, and database
- Let’s you interactively iterate via chat:
- Stores your data in your environment (no third‑party SaaS database)
- Gives you full source code and a version history so you can:
- Roll back to any working version
- Export and self-host if you want
In this guide, you’ll see how the process feels in real life – including the bugs, the fixes, and the way you collaborate with the AI as if it were a junior engineer.
1. Describe the Survey App in Plain English
We start at the AppWizzy interface and describe the app we want to create. Here’s roughly what I told it (you can paste something very close to this yourself):
I'd like to easily build simple survey apps, like Google Forms, where I can quickly create surveys, add questions, and support different response types: short text, checkboxes, and multiple choice. I want to see results in a simple dashboard and (optionally) download them. Roles: keep it simple - just an admin who creates surveys, and users who fill them via a public link.No schema design, no routing, no controllers, no picking a chart library. Hit Generate and let AppWizzy’s AI engineer start working.
2. First Scaffold: Landing Page & Environment
AppWizzy spins up an isolated environment (a VM) and links you to your new app. The very first version of the app is minimal:
- A landing page with a call to action like “Beautiful surveys. Get started now.”
- A first pass at a survey creation form
On the infrastructure side:
- A database (e.g., MySQL) is provisioned inside the same environment
- The backend is built as a PHP app (not a single-page React frontend)
– a classic web app with server‑rendered pages - There’s a “Pause VM” button:
- Pausing the environment stops compute usage
- You can resume later without losing your app or data
Under the hood, the AI explains its plan in a verbose, “senior dev” style: it talks about migrations, database tables, controllers, etc. You see exactly what’s happening technically, but you don’t have to type the code yourself.
3. Making Survey Creation Real (Saving to the DB)
On the first attempt, the “Create survey” form looks OK, but… nothing gets saved. When I enter:
- Survey title: AppWizzy User Survey
- Leave description empty
…and hit save, the AI tells me in the console: I recommend we proceed with implementing the backend logic to save the surveys to the database. So I ask it to do that. The AI then:
- Creates the necessary database tables for surveys.
- Updates the form handling code so submissions are persisted.
- Adds a simple success page after saving.
When I try again, I get a validation message: “At least one question is required.” Which is correct – a survey with zero questions is useless. So now we need questions.
4. Adding Questions & Question Types
Next, we extend the app to handle questions and response types. Conceptually, we want:
- A Survey with many Questions
- Each Question to have:
- A type: short text, multiple choice, checkbox
- A prompt (e.g., “What’s your name?”)
- For multiple-choice and checkbox questions:
- A list of options (“USA”, “UK”, “Poland”, “Other”)
AppWizzy’s AI sets up:
- surveys table
- questions table
- question_options table
- Later, a responses/answers table (for captured answers)
On the UI side, the survey builder gets:
- A “Add short text” button
- A “Add multiple choice” button
- A “Add checkbox” option
For example, I create:
- Survey: AppWizzy User Survey
- Question 1 (short text): “What’s your name?”
I add the question, hit Save survey, and the survey is created successfully. The app even gives me a “View survey” link. Perfect. I click it. And… 404.
5. Debugging with AI: Fixing Routes & DB Errors
Here’s where working with AppWizzy feels like working with a junior dev who writes fast but occasionally breaks things. When “View survey” returns a 404, I just:
- Copy the error message / URL
- Paste it back into the AI chat:
“Survey creation now works, but when I access the survey page, I get a 404 error.”
The AI examines the route setup and controllers, then fixes the routing so the survey page loads. Refresh, try again… Now the survey page exists, but I get a new error: Column not found …
Same process:
- Copy the exact error
- Paste to AI:
“Now I get this error when I try to visit the survey page: [error text]”
It updates the SQL query and schema to match the expected columns. After that, I can open the survey page without an error. But we’re not done yet – submitting answers is still broken.
6. Adding a Simple Admin Interface (Login & Dashboard)
Before finishing the survey submission, I want some structure:
- Only an admin should be able to:
- Log in
- Create surveys
- View the list of surveys
- View responses
- Regular users should only see the public survey page and fill in answers.
I tell the AI:
Add a simple admin interface. I should be able to log in with a login and password, see a list of surveys, and only the logged-in admin should be allowed to create surveys. I was expecting something super minimal (a hardcoded password), but the AI decides to build a slightly more robust system.It creates:
- A user’s table in the database
- A login page at e.g. /login
- A logout endpoint
- A session-based auth mechanism
- A basic admin dashboard listing all surveys
It even seeds a default admin user:
- Username: admin
- Password: password (obviously change this for real use)
From now on:
- Visiting the app sends me to the login page.
- After logging in, I see an Admin dashboard with a list of surveys:
- Survey titles
- Links to view each survey
- Links to view responses (once implemented)
Again, this is all classic PHP with server-rendered pages, not a fancy SPA.
7. Submitting Answers: The “Bad Request” Phase
Time to actually submit some answers. I:
- Log in as admin.
- Create a new survey, e.g.:
- Title: AppWizzy User Survey #3
- Questions:
- Short text: “What’s your name?”
- Save survey.
- Click View survey.
- Hit Submit answers without entering anything…
and get:
Bad request. Answers are required. That’s fair – we didn’t fill anything in. But even when I do fill in answers, I notice something off. In one iteration, I click Submit answers and get a “Thank you” page, but there are no actual form fields visible. So the backend says, “Thanks,” but no answers were captured. So I tell the AI:
When I click “Submit answers,” I see the thank you page, but I never entered any answers. Also, how do I view answers in the admin interface? The AI inspects the form and discovers:
- The input name attributes are wrong/mismatched, so:
- The server sees an empty answers[] array
- This triggers the “Bad request/answers required” logic
It fixes the form fields so:
- Each question renders the appropriate input:
- Short text → <input type=”text”…>
- Multiple choice → radio buttons
- Checkbox → multiple checkboxes
- The backend gets a properly structured answers payload.
8. Building the Responses Table & “View Responses” Page
Next step: actually store and view responses. The AI:
- Creates a table for responses (and possibly another for individual answer items).
- Adds logic in the controller to:
- Insert a response record when users submit the survey
- Associate answers with survey and question IDs
- Adds a “View responses” button on the admin survey list page.
At first, clicking “View responses” results in a database error – classic off‑by‑column‑name situation. Again, I just:
- Copy the error
- Paste into the chat:
“When I click ‘View responses’ I get this error…”
The AI updates the query and the schema, and on the next try:
- View responses loads
- I can see the answers I submitted earlier
For example:
- “What’s your name?” → Philip
- “What’s the reason you are using AppWizzy?” → Speed, save money
Now the core loop works:
- Admin creates a survey
- Users fill it
- Admin sees answers
Time to make this more interesting.
9. Multiple Choice, Checkboxes & Real-World UX
To stress test the app, I created a more realistic survey:
- Title: AppWizzy User Survey #6
Questions:
- Short text
“What’s your name?” - Multiple choice
“What’s your country?”
Options:- USA
- UK
- Poland
- Other
- Checkbox / multi-select
“What’s the reason you are using AppWizzy?”
Options:- Speed
- Save money
- I do not have experience with software development
I save the survey, open it, and fill:
- Name: Philip
- Country: Poland
- Reason: Speed and Save money
Submit.
Then I go to the admin dashboard → View responses and confirm that:
- The responses are properly stored.
- The multiple-choice and checkbox answers are visible.
I submit another response:
- Name: John Doe
- Country: USA
- Reason: I do not have experience with software development
Now the responses table shows two records.
At this point, the app is already usable:
- Create surveys
- Send links to users
- Collect structured data
- Review responses
But we can do better: visualization.
10. Adding a Results Dashboard with Charts & Text Cloud
I tell the AI: Now, let’s add some visualizations on the responses page: charts, a small dashboard, etc.
It updates the “View responses” page to include:
- For multiple choice questions (e.g. “What’s your country?”)
→ A bar chart showing number of responses per option
(Poland: 1, USA: 1, etc.) - For checkbox questions (e.g. reasons for using AppWizzy)
→ Another bar chart showing how many times each option was selected:- Speed: 1
- Save money: 1
- I do not have experience…: 1
- For text questions (e.g. open comments)
→ A simple text cloud to visualize frequently used words.
Initially, checkbox answers were stored as comma-separated strings, so the chart would count “Speed, Save money” as one unique value. I ask the AI to:
Treat each selected option as a separate count, not one long string.
It changes the logic:
- Splits checkbox answers by comma
- Trims spaces
- Aggregates counts per option for the chart
Now:
- Multiple-choice charts show the distribution per country.
- Checkbox charts show the popularity of reasons.
- The text cloud surfaces common phrases from free-text answers.
This is already better than many out‑of‑the‑box survey tools, and it’s 100% your code, your database, your UI.
11. Public Links: No Login for Respondents
Admin pages are login-protected, but survey respondents shouldn’t need credentials. To verify:
- I copied the public survey link.
- Open it in a new browser window / another profile (no logged-in session).
- Fill in the survey as a new user (e.g., Daniela fromthe UK, multiple reasons).
- Submit.
Then I go back to the admin dashboard and view responses:
- The answers from the anonymous public link appear correctly.
- The charts have been updated to include the new data.
So the model is:
- Admin: login → create/manage surveys → view dashboards
- Respondent: open link → fill survey → see “Thank you” page
12. Versioning: Save the First Stable Version
Once the app is fully working end-to-end, I save a version snapshot. In AppWizzy, there’s a version control sidebar where you can:
- Name your versions (e.g., First stable working version).
- Save the current state of code and database structure.
- Roll back later if a future experiment breaks something.
I saved a first stable version: v1 – basic survey + responses + charts.
From now on, I can safely experiment with design and advanced features knowing I can always revert.
13. Gen‑Z Styling: Modernizing the UI
The app works, but the UI feels a bit old-school. So I ask the AI to refresh the styling: Everything works now. Please update the styling so the app looks more Gen-Z: modern, softer, maybe some purple accents, light backgrounds, modern typography, glassmorphism, etc. The AI proposes a plan:
- New color palette (modern accent color, lighter background)
- Updated typography (cleaner font, better hierarchy)
- Redesigned buttons and forms with softer shapes
- A bit of glassmorphism for panels and cards
It then goes through:
- The public landing page
- The survey pages
- The admin dashboard
…updating CSS, templates, and headings. After refreshing the app, I see:
- A more modern landing page
- Fresher colors and typography
- Some glass-like panels for cards and content areas
Initially, the admin area still looked slightly less polished than the public page, but that’s easy to fix with a follow-up prompt like: “Make the admin dashboard match the new Gen‑Z style of the public page.” This is the nice part: design iteration is literally a conversation, not a separate front-end project. Later, when I checked the app again, all pages had the updated design consistently applied.
14. Hosting, Control & Next Steps
At this point, we have:
- A survey builder (create forms with text, multiple choice, and checkbox)
- A public survey page
- A login-protected admin interface
- Persistent storage in your own MySQL database
- A results dashboard with charts and a text cloud
- A more modern Gen‑Z UI
- Version control for all your app iterations
- A dedicated environment where you can pause to save costs
Because this is built with AppWizzy:
- You can export the source code and host it anywhere (your own VPS, AWS, etc.).
- Or keep it on AppWizzy’s managed environment.
- All data stays within your infrastructure – not on a generic survey SaaS.
Ideas to Extend This App
If you want to keep going, here are some natural next steps:
- Conditional logic (show/hide questions based on answers)
- Email notifications when new responses arrive
- CSV / Excel export of results
- Multi-language surveys
- Custom themes per survey
- Embedding surveys inside your existing site or SaaS
- Integrations with your CRM / ERP (also built with Flatlogic tools)
All of this can be done with the same workflow:
- Describe the feature in natural language.
- Let the AI implement it.
- Test.
- Paste any errors back to the AI.
- Repeat.
Wrap-Up
In about 30-40 minutes of guided interaction with AppWizzy, we went from: “I need something like Google Forms, but fully mine…”, to:
- A working PHP/MySQL survey builder
- Admin login + survey list
- Short text, multiple choice, checkbox questions
- Public survey links
- Answer storage in our own DB
- A results dashboard with charts
- A refreshed, modern design
If you’ve been thinking about replacing third‑party survey tools with something that’s actually under your control – or you want surveys tightly integrated into your own SaaS or internal tools – this is a very realistic way to do it without spinning up a huge dev project.
If you have an idea for another type of app you’d like to see built with AppWizzy – onboarding flows, internal request forms, small CRMs, micro‑SaaS tools – send it my way. I’m happy to record a walkthrough and turn it into another guide.