diff --git a/app/Console/Commands/GenerateTemplate.php b/app/Console/Commands/GenerateTemplate.php
index f408553..c16e211 100644
--- a/app/Console/Commands/GenerateTemplate.php
+++ b/app/Console/Commands/GenerateTemplate.php
@@ -28,7 +28,7 @@ class GenerateTemplate extends Command
I created a form builder. Forms are represented as Json objects. Here's an example form:
```json
{
- "title": "Contact Form",
+ "title": "Contact Us",
"properties": [
{
"help": null,
@@ -219,7 +219,6 @@ class GenerateTemplate extends Command
{
$url = 'https://api.unsplash.com/search/photos?query=' . urlencode($searchQuery) . '&client_id=' . config('services.unslash.access_key');
$response = Http::get($url)->json();
- ray($response, $url);
if (isset($response['results'][0]['urls']['regular'])) {
return $response['results'][0]['urls']['regular'];
}
diff --git a/app/Http/Controllers/Forms/AiFormController.php b/app/Http/Controllers/Forms/AiFormController.php
new file mode 100644
index 0000000..aa371fb
--- /dev/null
+++ b/app/Http/Controllers/Forms/AiFormController.php
@@ -0,0 +1,38 @@
+middleware('throttle:4,1');
+ $completer = (new GptCompleter(config('services.openai.api_key')))
+ ->setSystemMessage('You are a robot helping to generate forms.');
+ $completer->completeChat([
+ ["role" => "user", "content" => Str::of(GenerateTemplate::FORM_STRUCTURE_PROMPT)
+ ->replace('[REPLACE]', $request->form_prompt)->toString()]
+ ], 3000);
+
+ return $this->success([
+ 'message' => 'Form successfully generated!',
+ 'form' => $this->cleanOutput($completer->getArray())
+ ]);
+ }
+
+ private function cleanOutput($formData)
+ {
+ // Add property uuids
+ foreach ($formData['properties'] as &$property) {
+ $property['id'] = Str::uuid()->toString();
+ }
+
+ return $formData;
+ }
+}
diff --git a/app/Http/Requests/AiGenerateFormRequest.php b/app/Http/Requests/AiGenerateFormRequest.php
new file mode 100644
index 0000000..6aac735
--- /dev/null
+++ b/app/Http/Requests/AiGenerateFormRequest.php
@@ -0,0 +1,20 @@
+
+ */
+ public function rules()
+ {
+ return [
+ 'form_prompt' => 'required|string'
+ ];
+ }
+}
diff --git a/resources/js/components/pages/forms/create/CreateFormBaseModal.vue b/resources/js/components/pages/forms/create/CreateFormBaseModal.vue
new file mode 100644
index 0000000..3132028
--- /dev/null
+++ b/resources/js/components/pages/forms/create/CreateFormBaseModal.vue
@@ -0,0 +1,114 @@
+
+ Start from a simple contact form Use our AI to create the form Start from a template