The JobClass Mobile App is a native iOS and Android app for your JobClass job board. Job seekers search jobs, apply with their resume and follow up with employers; employers post job ads, manage their companies and answer candidates. Everything happens on the phone, with the same job ads, accounts and messages as on the website.

The app has no back-end of its own: everything goes through the REST API of your JobClass website. A job ad posted from the app shows up on the website, an application sent from the app reaches the employer on the website, and your admin panel controls both.

Highlights

  • Your own brand: the app name, store identifiers, colors, icon, launch screen and social sign-in IDs 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.
  • Both sides of hiring: job seekers apply with a saved or uploaded resume and follow their applications; employers post job ads, manage companies and move candidates through the hiring stages.
  • 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

  • JobClass 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 JobClass installation.
  • The Mobile App settings of your admin panel (Admin panel → Settings → Mobile App), used for push notifications, Google sign-in and app links.
  • At least one active job type and one active salary type in your admin panel: the posting form requires a job type and a pay period.

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, icon files and social sign-in IDs. 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.
assets/locales/The iOS permission messages (photo library, camera) in 18 languages.
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.
__tests__/Automated tests, run with npm test.
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, a central button, Messages and Account. The central button depends on the account type: Post a job for employers and visitors, Resumes for signed-in job seekers. Browsing and searching don't require an account.

Home

  • Country selector (top left): the job ads, cities and salaries follow the selected country, chosen among the countries activated in your admin panel.
  • Saved jobs (the heart at the top) and the search bar, which opens the Search tab.
  • Categories: the top-level categories (job sectors) of your website. All shows the full list with subcategories.
  • Featured jobs: the premium (promoted) job ads.
  • Companies hiring: companies with open jobs, with their number of jobs. See all opens the companies directory.
  • Latest jobs: the latest job ads, loaded page by page while scrolling. Pull down to refresh.

Search and filters

The Search tab looks through job titles, skills and company names as the user types. The available filters are:

  • Category and subcategory.
  • Location: a city of the selected country, found by its name.
  • Job type: full-time, part-time, internship, etc. (the job types of your admin panel).
  • Salary: minimum and maximum.
  • Date posted: any time, last 24 hours, last 3 days, last 7 days or last 30 days.
  • Sort: best match, newest first, lowest salary or highest salary.

Save search (above the results) saves the current search on the website: the user then receives the new matching jobs by email, and finds the search under Saved searches. The heart icon on each result saves the job ad (the user is asked to sign in first when needed).

Job ad page

  • The company logo and name, the job title, and the salary sticker with its pay period (for example per month), or Salary not disclosed. Negotiable and Featured labels when they apply.
  • Key facts: job type, location, start date (As soon as possible when none is set) and category, followed by the custom fields of the job ad (as set up per category in the admin panel).
  • The description, with Read more for long ones.
  • The company card: logo, name, number of open jobs and contact name. Tapping it opens the company page.
  • A safety tip, Report and Block employer, and similar jobs. Share and save buttons sit at the top.
  • At the bottom: Call when the employer didn't hide their phone number, and Apply now. When the job ad has an application link, the button becomes Apply on company site and opens that page.
  • On the user's own job ad, the buttons become Manage and Edit job ad.

Signing In and Account

  • Create an account: the user chooses Looking for a job (job seeker) or Hiring (employer), then enters a name, an email address (or a phone number when your website allows it, with the phone as authentication field option of the SMS settings) and a 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.
  • Sign in with an email address or a phone number. Continue with Google and Continue with Facebook are shown when these providers are enabled on your website and configured in the app. An account created this way has no type yet: right after sign-in, the app asks once whether the user is looking for a job or hiring.
  • 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 job ad go through the same step.
  • Two-step verification: users who turned it on for their account type the code they receive after their password.

The Account tab adapts to the account type:

Job seekerEmployer
StatsResumes, saved jobs, unread messagesLive job ads, total views, unread messages
MenuYour resumes, Your applications, Saved jobs, Saved searches, MessagesYour job ads, Applications received, Your companies, Saved jobs, Saved searches
Central tab buttonResumesPost a job

Both include Profile and security, Preferences and an About section that links to the terms and privacy pages.

  • Edit profile: name, email, phone, photo, account type, and the option to hide the phone number on job ads. Change password asks for the current password.
  • Delete my account: permanently removes the account, its resumes, job ads and messages 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 applications for employers, replies for both sides, and the other notifications of your website (job ad, payment and account updates), once push is enabled in Admin panel → Settings → Mobile App. Tapping a notification opens the conversation or the job ad. 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 job ads (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.

For Job Seekers

Applying for a job

Apply now on a job ad opens the application form:

  1. Your resume: one of the user's saved resumes (the most recent one is preselected), or Upload a file from the phone (PDF, Word or the other file types allowed by your upload settings, within the maximum file size). A file uploaded by a signed-in user is also added to their resumes.
  2. Cover letter: 20 to 500 characters, with a counter.
  3. Your contact details: name, email (the employer replies to this address) and an optional phone number, prefilled from the profile.

Send application starts a conversation with the employer, with the resume attached. The employer is notified by email (with the resume) and by push. The candidate follows up in the Messages tab and in Your applications.

Guests can apply without an account: they upload a file and give their name and email. The employer answers them by email.

Your applications

Account → Your applications lists the jobs the user applied for, with the company, the date of the application, a New reply marker, and the application status set by the employer: New, Under review, Shortlisted, Interview, Hired or Not selected. Tapping one opens the conversation with the employer.

Resumes

The Resumes button (central tab for job seekers, or Account → Your resumes) lists the user's resumes:

  • Add a resume: a name and a file from the phone (PDF, Word or text file).
  • Tapping a resume opens its file in the in-app viewer, through a temporary secure link from your website.
  • The ⋮ button gives Open, Rename (change the name or replace the file) and Delete. Employers who already received a resume keep their copy.

For Employers

Posting a job ad

The central Post a job button opens a form in 3 steps:

  1. The company: one of the user's companies, or New company with its name, a short description and a logo from the phone library (resized and compressed on the phone to fit the maximum picture size of your website). The company logo is the image of the job ad.
  2. The job: job title, category, job type, salary (from, to, pay period and Negotiable; leave the amounts empty to keep the salary private), job description, and the custom fields of the chosen category.
  3. Location and contact: city, start date (optional), application link (optional: candidates then apply on that page instead of in the app), contact 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 job ad goes live right away or after review. Guests can post when your website allows it. Job seeker accounts are first asked to switch to an employer account in their profile.

Managing job ads

Account → Your job ads has three tabs: Live, In review and Archived. Each job ad shows its number of applications (highlighted when some are new), which opens the Messages tab. The … button of each job ad gives these actions:

ActionAvailable forResult
View job adAllOpens the job ad page.
EditAllThe posting form with all its fields filled in. The job ad can be moved to another of the user's companies; Edit next to the company opens the company form (name, description, logo).
Take offlineLiveHides the job ad, which moves to Archived.
Put back onlineArchivedPublishes the job ad 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 job ad and its applications permanently, after a confirmation.

Companies

  • Companies directory (Account → Companies, or See all next to Companies hiring on Home): the companies with open jobs in the selected country, searchable by name.
  • Company page: logo, name, description, website, and the open jobs of the company.
  • Your companies (employers, Account → Your companies): add a company (name, description, logo, and optional website, email, phone and address), edit it or delete it. Its job ads stay online with the company name they were posted with. Changing the name or the logo of a company updates its job ads.

Messages

  • The Messages tab lists the conversations, with All, Unread and Important filters. Each application is a conversation.
  • Employers see the candidate's name (or the name given by a guest candidate), the job and the application status. Candidates see the company, its logo and the status of their application.
  • A conversation shows its messages and a reply field. A message with a resume shows Resume attached: tapping it opens the file. While the conversation is open, new messages are fetched every 15 seconds.
  • Change status (employers, at the top of the conversation) moves the application to New, Under review, Shortlisted, Interview, Hired or Not selected. With Tell the candidate by email ticked, your website emails the candidate.
  • A long press on a conversation (or the ⋮ button inside it) marks it as read, unread or important, blocks the other person, or deletes it.

Saved Jobs and Saved Searches

  • The heart icon saves a job ad. Account → Saved jobs (or the heart at the top of the Home tab) shows the saved jobs of the selected country; tapping the heart again removes one. Saved jobs are shared with the website.
  • Account → Saved searches lists the searches saved in the app (Save search in the Search tab) or on the website, with their email frequency. 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 (job ad 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 employer (job ad page) and Block this user (conversation options): the blocked user's job ads, saved jobs and conversations are hidden from the person who blocked them. Account → Blocked users lists them, with an Unblock button.
Note: JobClass has no server-side block list, so blocks are stored on the device. Handle reports from your admin panel (remove the job ad, 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, job types, messages) switch. For Arabic and Hebrew, the layout turns right-to-left after the app restarts.
  • Country: changes the job ads, companies, cities and salaries 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, custom fieldsCountry and city pickers, category lists, fields of the job ad form and job ad details.
Job types and salary typesThe Job type filter and field, and the pay period shown next to salaries (per month, per hour, etc.).
Languages and their translationsLanguages offered in the Language screen; translated categories, job types and messages.
Job ad form: guests can post, title and description lengthsWhether the Post a job button asks guests to sign in; form validation.
Job ads review / verificationWhether new job ads go to In review before going live.
Security: password lengthPassword hints on the sign-up and change password screens.
Upload: file types and maximum file sizeResume files accepted when applying and in the Resumes screen.
Upload: maximum picture sizeCompany logos and profile photos 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 job ads appear under Featured jobs. On Android, Promote opens the payment page of your website. iOS users promote their job ads 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).

Why does the central button show "Resumes" instead of "Post a job"?

The user is signed in with a job seeker account: job seekers apply for jobs, employers post them. A user who hires can switch the account type in Account → Edit profile.

Can people apply without an account?

Yes. Guests upload their resume and give their name and email with the application. Signed-in users can also pick one of their saved resumes.

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

Yes, 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 employers 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 job ads on the website.

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

No. Categories, job types, 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 JobClass 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