Learn how to setup your first Nuxt project powered by indobase.
Head to the Indobase Console.
If this is your first time using indobase, create an account and create your first project.
Then, under Add a platform, add a Web app. The Hostname should be localhost.
Cross-Origin Resource Sharing (CORS)
Adding localhost as a platform lets your local app talk to indobase. For production, add your live domain to avoid CORS errors.
Learn more in our CORS error guide.
You can skip optional steps.
Create a Nuxt project.
npx nuxi@latest init my-app && cd my app
Install the JavaScript indobase SDK.
npm install indobase
Find your project's ID in the Settings page.
Create a new file utils/indobase.js and add the following code to it, replace <PROJECT_ID> with your project ID.
import { Client, Account} from 'appwrite';
export const client = new Client();
client
.setEndpoint('https://<REGION>.cloud.indobase.io/v1')
.setProject('<PROJECT_ID>'); // Replace with your project ID
export const account = new Account(client);
export { ID } from 'appwrite';
Add the following code to app.vue.
<script setup>
import { ref } from 'vue';
import { account, ID } from './utils/indobase.js';
const loggedInUser = ref(null);
const email = ref('');
const password = ref('');
const name = ref('');
const login = async (email, password) => {
await account.createEmailPasswordSession({
email,
password
});
loggedInUser.value = await account.get();
};
const register = async () => {
await account.create({
userId: ID.unique(),
email: email.value,
password: password.value,
name: name.value
});
login(email.value, password.value);
};
const logout = async () => {
await account.deleteSession({ sessionId: 'current' });
loggedInUser.value = null;
};
</script>
<template>
<div>
<p>
{{ loggedInUser ? `Logged in as ${loggedInUser.name}` : 'Not logged in' }}
</p>
<form>
<input type="email" placeholder="Email" v-model="email" />
<input type="password" placeholder="Password" v-model="password" />
<input type="text" placeholder="Name" v-model="name" />
<button type="button" @click="login(email, password)">Login</button>
<button type="button" @click="register">
Register
</button>
<button type="button" @click="logout">
Logout
</button>
</form>
</div>
</template>
Run your project with npm run dev -- --open --port 3000 and open Localhost on Port 3000 in your browser.