= Getting started :description: Create a free service, make your first request and connect your web or mobile app with the Kit. It takes about five minutes, and the Free plan needs no card. :keywords: getting started, backend for web app, backend for mobile app, free backend, create service, MongoDB API, sign-up and login, Ulabase Kit :group: Get started :order: 20 This page takes you from nothing to a running service. You create a free service, get its credentials, make your first request, and connect your app with the Kit. It takes about five minutes, and the Free plan needs no card. == 1. Create a service Sign in at https://ulabase.com and click **New service**. Pick a plan. **Free** is enough to build and test an app, and you can move up later. image::/assets/docs-images/create-service.png[Choosing the plan in the console] Give the service a name, choose a region and set the password of its `root` user, at least 8 characters. The service is ready in under a minute, with an address of its own such as `https://c0ffee.ulabase.app`. Your app talks to that address. NOTE: An **Enterprise** service runs on your MongoDB or on one we run for you. Choosing Enterprise opens a form to our team, and we set the service up with you. On your MongoDB, the service needs the connection string before it can start. See xref:custom-mongodb.adoc[Connecting your MongoDB]. == 2. Get the credentials The service opens on its **Home**: the address, two credentials and a snippet for your framework. image::/assets/docs-images/service-overview.png[The service's Home: the plan, the region and the address, a hint on one of the features, and the card to call the service] * **Basic Auth**, permanent. The `root` user of your service, with the widest permission of the service. Use it to set the service up and from your terminal. Your app's own users come later, from sign-up. * **Admin JWT**, 15 minutes. A token with administrator rights, for a quick test from a terminal. When it expires, click **Refresh** for a new one. The console does not store the `root` password, so it cannot show it later: write it down, since every example in this documentation uses it. To set a new one, type it in the **Basic Auth** box on the service's **Home** and click **Reset password**. image::/assets/docs-images/connect-credentials.png[The service's Home: the address, Basic Auth with the reset-password form, and the Admin JWT] == 3. Make the first request Open a terminal. Put the root password in a variable once; every example in this documentation reads it from there: [source,bash] ---- export ROOT_PASSWORD='your root password' curl -i -u root:$ROOT_PASSWORD https://c0ffee.ulabase.app/ ---- It answers `200` with the list of collections, which is empty. Now create a collection, add a document and read it back: [source,bash] ---- curl -i -u root:$ROOT_PASSWORD -X PUT https://c0ffee.ulabase.app/todos curl -i -u root:$ROOT_PASSWORD -X POST https://c0ffee.ulabase.app/todos \ -H 'Content-Type: application/json' \ -d '{ "title": "Try Ulabase", "done": false }' curl -u root:$ROOT_PASSWORD https://c0ffee.ulabase.app/todos ---- Three requests, and your service has a collection with data in it. Every collection works the same way: `GET` to read and filter, `POST` to add, `PATCH` to change, `DELETE` to remove. See xref:managing-data.adoc[Collections and documents]. TIP: The **API Tutorial** in the console runs these steps against your service, one click each. Then it creates an application user and gives it a permission. image::/assets/docs-images/api-tutorial.png[The interactive API tutorial in the console, running the first request against the service] == 4. Connect your app Install the Kit for your framework and paste the snippet from **Use with your framework**, on the service's Home: [source,bash] ---- npm install @ulabase/kit-react # or kit-ng, or kit-vue ---- [source,jsx] ---- import { RhAuthProvider } from '@ulabase/kit-react'; createRoot(document.getElementById('root')!).render( ); ---- Your app now has sign-up, sign-in, sessions that survive a reload, and calls to your data. Its users are the users of your service, each with their own permissions. The app never signs in as `root`. See xref:kit.adoc[the Ulabase Kit], or start from a ready-made app in React, Angular, Vue or an ecommerce shop: see xref:starters.adoc[Starters]. A mobile app talks to the same address over HTTPS, with the user's credentials or a token. See xref:users-and-permissions.adoc[Users and permissions through the API]. == What next * **Your users.** Turn on xref:signup-mgmt.adoc[Sign-up and login] for registration, email verification, password reset and login with Google. Then set xref:managing-users.adoc[users] and xref:managing-permissions.adoc[permissions] to decide who may do what. * **Your data.** Use xref:schemas.adoc[schemas] to validate documents, xref:aggregations.adoc[aggregations] for reports, xref:change-streams.adoc[change streams] for live updates in the UI. * **Payments, email, AI.** Charge your users with xref:stripe.adoc[Stripe billing], send xref:emails.adoc[email] from your own address, and let an agent use your data through the xref:mcp.adoc[MCP server]. The Free plan gives you 20 collections, 500 MB and 150 requests a minute, about 5 users at once. A Free service with no requests for 40 days is deactivated, and its data is kept for 30 days. xref:plans.adoc[What changes with Starter, Pro and Enterprise]. For any question, open a ticket from the **Support** page of your service. The answer arrives by email and stays under the ticket.