use-database
diff --git a/packages/contact/create-table.js b/packages/contact/create-table.js
new file mode 100644
index 0000000..144c50b
--- /dev/null
+++ b/packages/contact/create-table.js
@@ -0,0 +1,65 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+//--kind nodejs:default
+//--param POSTGRES_URL $POSTGRES_URL
+
+const { Client } = require('pg')
+
+async function main(args) {
+    console.log('Starting create-table action')
+    const client = new Client({ connectionString: args.POSTGRES_URL });
+
+    const createSchema = `CREATE SCHEMA IF NOT EXISTS demo;`
+
+    const createTable = `
+    CREATE TABLE IF NOT EXISTS demo.contacts (
+        id serial PRIMARY KEY,
+        name varchar(50),
+        email varchar(50),
+        phone varchar(50),
+        message varchar(300)
+    );
+    `
+
+    try {
+        console.log(`Connecting to ${args.POSTGRES_URL}`);
+        await client.connect();
+        console.log('Connected to database');
+        await client.query(createSchema);
+        console.log('Schema demo created');
+        await client.query(createTable);
+        console.log('Contact table created');
+        return { result: 'OK' };
+    } catch (e) {
+        if (e instanceof AggregateError) {
+            for (const err of e.errors) {
+                console.error('[ERROR] - ', err.message || err);
+            }
+        } else if (e instanceof Error) {
+            console.error('[ERROR]  - ', e.message);
+        } else {
+            console.error('[ERROR] - ', e);
+        }
+        return { result: 'ERROR' };
+    } finally {
+        console.log('Closing connection');
+        if (client) {
+            await client.end();
+        }
+    }
+}
diff --git a/packages/contact/write.js b/packages/contact/write.js
new file mode 100644
index 0000000..c98c2ba
--- /dev/null
+++ b/packages/contact/write.js
@@ -0,0 +1,51 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+//--kind nodejs:default
+//--param POSTGRES_URL $POSTGRES_URL
+
+const {Client} = require('pg')
+
+async function main(args) {
+    const client = new Client({connectionString: args.POSTGRES_URL});
+
+    // Connect to database server
+    await client.connect();
+
+    const {name, email, phone, message} = args;
+
+    try {
+        let res = await client.query(
+            'INSERT INTO demo.contacts(name,email,phone,message) VALUES($1,$2,$3,$4)',
+            [name, email, phone, message]
+        );
+        console.log(res);
+    } catch (e) {
+        console.log(e);
+        throw e;
+    } finally {
+        client.end();
+    }
+
+    return {
+        body: args.body,
+        name,
+        email,
+        phone,
+        message
+    };
+}
diff --git a/web/index.html b/web/index.html
index b00a1d0..2521b40 100644
--- a/web/index.html
+++ b/web/index.html
@@ -33,7 +33,7 @@
     <div class="w-50 p-4 border rounded bg-light shadow">
         <h2 class="text-center mb-4">Get In Touch</h2>
         
-        <form method="POST" action="/api/v1/web/opstutorial/contact/submit" enctype="application/x-www-form-urlencoded">
+        <form method="POST" action="/api/v1/web/opstutorial/contact/submit-write" enctype="application/x-www-form-urlencoded">
             <div class="mb-3">
                 <label for="name" class="form-label">Name</label>
                 <input type="text" class="form-control" id="name" name="name" placeholder="Insert your name">