The LaraClassifier Mobile App is a native iOS and Android app for your LaraClassifier website. Your visitors browse, search, post and manage classified ads from their phone, with the same listings, accounts and messages as on the website.

The app has no back-end of its own: everything goes through the REST API of your LaraClassifier website. A listing posted from the app shows up on the website, a message sent from the website shows up in the app, and your admin panel controls both.

Highlights

  • Your own brand: the app name, store identifiers, colors, icon and launch screen are all set in a single file, brand.json.
  • 18 languages: English, Arabic, Bengali, Chinese, French, Georgian, German, Hebrew, Hindi, Italian, Japanese, Portuguese, Romanian, Russian, Spanish, Thai, Turkish and Ukrainian, with a right-to-left layout for Arabic and Hebrew.
  • A complete account: post and edit listings with photos and custom fields, take them offline, chat with buyers, save listings, manage search alerts and the profile.
  • Light and dark modes, following the phone setting or the user's choice, and layouts adapted to tablets.

To connect the app to your website, rebrand it and publish it in the stores, read Publishing the Mobile App on Google Play and the App Store.

Requirements

Your website

  • LaraClassifier 19.1.13 or later. The app relies on API endpoints and fixes added in that version, so update your website first.
  • HTTPS with a valid certificate: iOS and Android block plain HTTP connections in published apps.
  • The API token of your website: the APP_API_TOKEN value in the /.env file of your LaraClassifier installation.
  • The Mobile App settings of your admin panel (Admin panel → Settings → Mobile App), used for push notifications, Google sign-in and app links.

Your computer (to build the app)

  • Node.js 22.13 or later (the current LTS version is recommended) with npm, on Windows, macOS or Linux.
  • A free Expo account (expo.dev). The apps are built in the cloud by Expo (EAS Build), so you need neither Xcode nor Android Studio.

To publish

  • A Google Play Console account (one-time registration fee) for Android.
  • An Apple Developer Program membership (yearly fee) for iOS.

What's in the Package

File or folderContent
brand.jsonThe app name, store identifiers, version, colors and icon files. The only file you need to edit to rebrand the app.
.env.exampleTemplate of the connection settings (API address and token of your website), to copy to .env.local.
assets/brand/Placeholder app icon, Android adaptive icon, launch image and favicon, to replace with your own.
src/The source code of the app (TypeScript, React Native, Expo), with its texts in 18 languages in src/i18n/locales/.
app.config.ts, eas.jsonBuild configuration, generated from brand.json. You normally don't edit them.
docs/The full documentation of the app, to open in your browser.

Try It on Your Phone

You can run the app on your own phone in a few minutes, connected to your website:

  1. Unzip the package and open a terminal in the app folder.
  2. Install the dependencies with npm install.
  3. Copy .env.example to .env.local and enter the API address and token of your website:
    EXPO_PUBLIC_API_URL=https://www.your-website.com/api
    EXPO_PUBLIC_API_TOKEN=your-app-api-token
  4. Start the app with npx expo start.
  5. Install Expo Go on your phone (App Store or Google Play), sign in with your Expo account and scan the QR code shown in the terminal.
Expo Go is for testing only. Your users install the real app that you build and publish in the stores. If your website runs on your computer (localhost or a local domain), your phone can't reach it directly: see the "Testing with a website on your computer" section of the publishing article.

Browsing and Search

Five tabs sit at the bottom of the screen: Home, Search, Sell (the central button), Messages and Account. Browsing and searching don't require an account.

Home

  • Country selector (top left): the listings, cities and prices follow the selected country, chosen among the countries activated in your admin panel.
  • Search bar: opens the Search tab.
  • Categories: the top-level categories of your website, with the icons set in the admin panel. All shows the full list with subcategories.
  • Featured: the premium (promoted) listings.
  • Fresh listings: the latest listings, loaded page by page while scrolling. Pull down to refresh.

Search and filters

Results update as the user types. The available filters are:

  • Category and subcategory.
  • Location: a city of the selected country, found by its name.
  • Price: minimum and maximum.
  • Sort: best match, newest first, lowest price or highest price.

The heart icon on each result saves the listing (the user is asked to sign in first when needed).

Listing page

  • Photo carousel, price, Negotiable label, title, city, date and number of views.
  • The custom fields of the listing (as set up per category in the admin panel) and its description.
  • The seller, with a link to all their listings, and a safety tip.
  • Message seller opens a contact form with quick replies (guests enter their name and email). Call is shown when the seller didn't hide their phone number.
  • Share, save and similar listings, plus Report and Block seller.
  • On the user's own listing, the buttons become Edit listing and Manage.

Signing In and Account

  • Sign in or create an account with an email address, or with a phone number when your website allows it (the phone as authentication field option of the SMS settings).
  • Continue with Google and Continue with Facebook are shown when these providers are enabled on your website and configured in the app.
  • Forgotten password: email accounts receive a reset link (which opens your website); phone accounts receive a code by SMS and choose their new password in the app.
  • Verification: when your website requires a confirmed email or phone, the app shows the next step (a code to type for phones, a link to open for emails) with a send again button. Guests posting a listing go through the same step.
  • Two-step verification: users who turned it on for their account type the code they receive after their password.
  • Creating an account requires accepting the terms of use and the privacy policy, which open the pages of type Terms and Privacy of your website. The About section of the Account tab links to the same pages.
  • The Account tab shows the user's stats (live listings, total views, unread messages) and links to every account page.
  • Edit profile: name, email, phone, photo, and the option to hide the phone number on listings. Change password asks for the current password.
  • Delete my account: permanently removes the account after a confirmation (required by the App Store and Google Play).
  • Signing in on the app signs the user out of the app on their other devices. Their website session is not affected.

Notifications and Links

  • Push notifications: new messages, listing approved or expired, payments and account changes, once push is enabled in Admin panel → Settings → Mobile App. Tapping a notification opens the conversation or the listing. Users choose which types they receive in the notification preferences of their account on the website, as for emails.
  • Links to your website: a link to one of your listings (shared by email, chat or social networks) opens straight in the app when it is installed.

Both features need a few setup steps on your side: see Mobile App: Push Notifications, Social Sign-In and App Links.

Posting a Listing

The central Sell button opens a form in 3 steps:

  1. Photos and title: photos from the phone library (the first one is the cover), title, category, and the seller type (individual or professional) when your website shows it. Photos are resized and compressed on the phone to fit the maximum picture size of your website.
  2. Details: price, Open to offers, description, and the custom fields of the chosen category.
  3. Location and contact: city, name, email and an optional phone number. Guests also accept the terms of use.

When your website rejects a value (a title that is too short, for example), the error is shown next to the field and the form goes back to the step that contains it. Depending on your settings, the new listing goes live right away or after review. Guests can post when your website allows it.

Managing Listings

Account → My listings has three tabs: Live, In review and Archived. The … button of each listing gives these actions:

ActionAvailable forResult
View listingAllOpens the listing page.
EditAllThe posting form with all its fields filled in. Photos added or removed are saved immediately.
Take offlineLiveHides the listing, which moves to Archived.
Put back onlineArchivedPublishes the listing again.
PromoteLive, In review (Android only)Opens the promotion page of your website, already signed in, to pick a premium plan and pay with your payment add-ons.
DeleteAllDeletes the listing permanently, after a confirmation.

Saved Listings

The heart icon saves a listing. Account → Saved listings (or the heart at the top of the Home tab) shows the saved listings of the selected country; tapping the heart again removes one. Saved listings are shared with the website.

Messages

  • The Messages tab lists the conversations, with All, Unread and Important filters. Unread conversations have a blue dot.
  • A conversation shows its messages and a reply field. While it is open, new messages are fetched every 15 seconds.
  • A long press on a conversation (or the ⋮ button inside it) marks it as read, unread or important, or deletes it.

Users are told about new messages by push notification (when enabled) and by email, as configured on your website.

Search Alerts

Account → Search alerts lists the searches the user saved on the website. Tapping one runs the search in the app; the trash icon deletes it.

Reporting and Blocking

The App Store and Google Play require these tools in apps with user-generated content:

  • Report (listing page): the user picks a reason (the report types of your admin panel), adds details and sends the report to your website, which notifies you as for reports made on the website.
  • Block seller (listing page) and Block this user (conversation options): the blocked user's listings, saved listings and conversations are hidden from the person who blocked them. Account → Blocked users lists them, with an Unblock button.
Note: LaraClassifier has no server-side block list, so blocks are stored on the device. Handle reports from your admin panel (remove the listing, ban the user) as you do for the website.

Language, Country and Appearance

  • Language (Account → Preferences): Same as device by default, or any language activated on your website. Both the app's texts and the content sent by your website (category names, messages) switch. For Arabic and Hebrew, the layout turns right-to-left after the app restarts.
  • Country: changes the listings, cities and prices shown.
  • Appearance: same as the device, light or dark.

A language activated on your website but not translated in the app shows the app's texts in English and your website's content in that language.

Admin Panel Settings Used by the App

The app follows the settings of your admin panel. Changing them never requires an app update:

Admin panel settingEffect in the app
Countries, cities, categories, category icons, custom fieldsCountry and city pickers, category lists, fields of the listing form and listing details.
Languages and their translationsLanguages offered in the Language screen; translated categories and messages.
Listing form: pictures limit, show listing type, title and description lengthsNumber of photos per listing, the Sold by field, form validation.
Listing form: guests can submit listingsWhether the Sell button asks guests to sign in.
Listings review / verificationWhether new listings go to In review before going live.
Security: password lengthPassword hints on the sign-up and change password screens.
Upload: maximum picture sizePhotos are compressed on the phone to fit it.
Report typesReasons offered in the report form.
Pages of type Terms and PrivacyLinked from the sign-up form and the About section of the Account tab.
Premium plans and payment add-onsPromoted listings appear under Featured. On Android, Promote opens the payment page of your website. iOS users promote their listings on the website, since Apple requires its own in-app purchase system for digital services sold in iOS apps.
SMS: phone as authentication fieldChoice between email and phone on the sign-in and sign-up screens.
Social login: Google, FacebookSocial sign-in buttons (with the client IDs of the app).
Mobile App: push notifications, app linksPush notifications; links that open in the app.

FAQ

The app shows "Setup required".

EXPO_PUBLIC_API_URL or EXPO_PUBLIC_API_TOKEN is missing from .env.local. Add it and restart the app with npx expo start --clear.

The app shows "Couldn't load this" or "Can't reach the server".

The usual causes are a wrong API address, a wrong API token or a certificate problem. See Mobile App Troubleshooting.

Categories or cities are empty in some languages.

Your website returns the translation of the language asked by the app, and falls back to the FALLBACK_LOCALE_FOR_DB language set in its /.env file. Set it to the language of your categories and cities data (usually en).

Can my users sign in with Google, Facebook or a phone number?

Yes (since version 1.1 of the app), when these options are enabled on your website. Google and Facebook also need the client IDs of the app, as explained in Mobile App: Push Notifications, Social Sign-In and App Links.

Can users buy premium plans in the app?

On Android, yes: Promote opens the payment page of your website with the user signed in, and works with your payment add-ons. On iOS, no: Apple requires in-app purchases for digital services, so iOS users promote their listings on the website.

Do I need to publish an app update when I change my website?

No. Categories, countries, languages, custom fields, settings and content are read from your website while the app runs. You only rebuild the app to change its name, icon or colors, or to install a new version of the app.

Support

Before opening a ticket, check Mobile App Troubleshooting. Then contact us through the Help Center with your purchase code, your LaraClassifier version, the app version, the platform (iOS or Android) and the steps to reproduce the issue.

Support covers the app as delivered. Customizations, store account setup, and store review issues caused by your content or your store listing are not covered.

Was this article helpful?

Thank you for your feedback!

Still need help? Create a support ticket

Create a Ticket