banner image

Jewar App

A mobile application tailored to the local communities in the Red Sea.
Download Jewar App Download Jewar App

Empowering and Building the Future of the Red Sea

Jewar was launched as one of RSG's Socioeconomic empowerment and community engagement initiatives. It is a mobile application tailored to the local communities surrounding The Red Sea destination. The aim of Jewar is to facilitate sustainable opportunities and establish consistent engagement with the local communities.

image
banner image
Jewar App
A mobile application tailored to the local communities in the Red Sea.
Download the app
background background

Empowering and Building the Future of the Red Sea

Jewar was launched as one of RSG's Socioecenomic empowerment and community engagment initiatives. It is a mobile application tailored to the local communities surrounding the Red Sea Destination. The aim of Jewar is to facilitate sustainable opportunities and establish consistent engagement with the local communities.

Jewar App Objectives

Objectives

Enhance local community participation in the destination development.

Promote jobs and development programs to the local community.

Facilitate continuous interaction and feedback collection.

What Jewar Offers

What Jewar Offers

Jobs

Be on the lookout of the latest job opportunities with Red Sea Global and partners and apply to them directly.

Programs & Events

Learn about the latest Educational and volunteering programs and events  and register for them.

Announcements

Learn about the latest project developments and other updates in the Red Sea region, in addition to local stories & content.

Submit Suggestions

Submit your suggestions to the Red Sea Global team directly.

Jobs
Programs & Events
Announcements
Suggestion

Our Features

An error occurred while processing the template.
Java method "com.sun.proxy.$Proxy1077.getLatestArticle(long)" threw an exception when invoked on com.sun.proxy.$Proxy1077 object "hu.webtown.liferay.service.wrapper.redsea.journal.article.JournalArticleLocalServiceOverride@e0ca867"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign journalArticle = journalArtic...  [in template "20097#20123#45214" in macro "getTabButton" at line 191, column 9]
	- Reached through: @getTabButton sliderTabData.classPK?n...  [in template "20097#20123#45214" at line 37, column 65]
----
1<#if serviceLocator??> 
2    <#assign journalArticleService=serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
3	 
4	<#if sliderBackground?? && (sliderBackground.getData())?? && sliderBackground.getOptionsMap()[sliderBackground.getData()]??> 
5		<#assign sliderBackgroundValue = sliderBackground.getOptionsMap()[sliderBackground.getData()] /> 
6	</#if> 
7	 
8	<#if sliderBackgroundValue?? && "darkblue" == sliderBackgroundValue> 
9		<#assign headingColor = "white" /> 
10	</#if> 
11	 
12	<#assign headingSize = "medium" /> 
13	<#if getterUtil.getBoolean(largeTitle.getData())> 
14		<#assign headingSize = "large" /> 
15	</#if> 
16     
17    <!-- begin sections/textImageSliderTabs --> 
18	<section class="textImageSliderTabs<#if sliderBackgroundValue??> textImageSliderTabs--${sliderBackgroundValue}</#if>"> 
19		<div class="textImageSliderTabs__inner wrapper" data-text-image-slider-tabs> 
20   			<div class="textImageSliderTabs__head"> 
21		    	<!-- begin components/heading --> 
22				<div class="heading heading--${headingSize} textImageSliderTabs__title<#if headingColor??> heading--${headingColor}</#if>"> 
23          		<#if (sliderTitle.getData())??> 
24          			<h3 class="heading__subtitle">${sliderTitle.getData()}</h3> 
25				</#if> 
26        	</div> 
27 
28        	<!-- end components/heading --> 
29        	 
30			<div class="textImageSliderTabs__tabSlider swiper" data-map-tabs-slider> 
31				<div class="textImageSliderTabs__tabs swiper-wrapper" data-text-image-slider-tabs-tabs data-map-tabs-slider-slider> 
32					<#if textImageSliderTabItem.getSiblings()?has_content> 
33						<#list textImageSliderTabItem.getSiblings() as cur_textImageSliderTabItem> 
34							<#assign sliderTabData = jsonFactoryUtil.createJSONObject(cur_textImageSliderTabItem.getData()) /> 
35				 
36							<#if sliderTabData?? && sliderTabData.classPK??> 
37								<@getTabButton sliderTabData.classPK?number cur_textImageSliderTabItem?index cur_textImageSliderTabItem?is_last/> 
38							</#if> 
39						</#list> 
40					</#if> 
41				</div> 
42			</div> 
43 
44        	<div class="textImageSliderTabs__selectWrapper"> 
45 
46          		<!-- begin components/select --> 
47          		<div class="select select--noLabel textImageSliderTabs__select" data-input-label="select--filled" 
48               			data-custom-select data-custom-select-theme="noLabel"> 
49            		<select id="tabs-select" name="tabs-select" class="select__select" data-input-label-input 
50                    data-custom-select-input name="tabs-select" required data-text-image-slider-tabs-select> 
51              			<option value="" class="select__option" disabled="disabled" data-empty="1"></option> 
52              			<#if textImageSliderTabItem.getSiblings()?has_content> 
53							<#list textImageSliderTabItem.getSiblings() as cur_textImageSliderTabItem> 
54								<#assign sliderTabData = jsonFactoryUtil.createJSONObject(cur_textImageSliderTabItem.getData()) /> 
55					 
56								<#if sliderTabData?? && sliderTabData.classPK??> 
57			        				<@getSelectOption sliderTabData.classPK?number cur_textImageSliderTabItem?index/> 
58								</#if> 
59							</#list> 
60						</#if> 
61            		</select> 
62					<span class="input__error"></span> 
63          		</div> 
64 
65          		<!-- end components/select --> 
66        	</div> 
67  		</div> 
68        	 
69      	<div class="textImageSliderTabs__content"> 
70        	<div class="textImageSliderTabs__info"> 
71          		<div class="textImageSliderTabs__textSlider swiper" data-text-image-slider-tabs-slider> 
72            		<div class="textImageSliderTabs__textItems swiper-wrapper"> 
73					    <#if textImageSliderTabItem.getSiblings()?has_content> 
74							<#list textImageSliderTabItem.getSiblings() as cur_textImageSliderTabItem> 
75								<#assign sliderTabData = jsonFactoryUtil.createJSONObject(cur_textImageSliderTabItem.getData()) /> 
76								 
77								<#if sliderTabData?? && sliderTabData.classPK??> 
78						        	<@getSliderItem sliderTabData.classPK?number cur_textImageSliderTabItem?index/> 
79								</#if> 
80							</#list> 
81						</#if> 
82		            </div> 
83          		</div> 
84          		 
85          		<!-- begin components/sliderNav --> 
86          		<div class="sliderNav<#if backgroundColorValue??> sliderNav--${backgroundColorValue}</#if> textImageSliderTabs__nav textImageSliderTabs__nav--desktop" 
87               		data-text-image-slider-tabs-nav data-slider-nav> 
88 
89            		<!-- begin components/arrowButton --> 
90		            <button 
91	              		class="arrowButton arrowButton--prev arrowButton--<#if backgroundColorValue??>${backgroundColorValue}<#else>default</#if> sliderNav__arrow sliderNav__arrow--prev" 
92		              	data-slider-nav-prev> 
93		              	<span class="arrowButton__arrow"></span> 
94		            </button> 
95 
96            		<!-- end components/arrowButton --> 
97 
98		            <!-- begin components/arrowButton --> 
99		            <button 
100	              		class="arrowButton arrowButton--next arrowButton--<#if backgroundColorValue??>${backgroundColorValue}<#else>default</#if> sliderNav__arrow sliderNav__arrow--next" 
101		              	data-slider-nav-next> 
102		              	<span class="arrowButton__arrow"></span> 
103		            </button> 
104 
105            		<!-- end components/arrowButton --> 
106      			</div> 
107 
108          		<!-- end components/sliderNav --> 
109    		</div> 
110 
111        	<div class="textImageSliderTabs__sliderWrapper"> 
112          		<div class="textImageSliderTabs__slider swiper" data-text-image-slider-tabs-image-slider> 
113            		<div class="textImageSliderTabs__items swiper-wrapper"> 
114            			<#if textImageSliderTabItem.getSiblings()?has_content> 
115							<#list textImageSliderTabItem.getSiblings() as cur_textImageSliderTabItem> 
116								<#assign sliderTabData = jsonFactoryUtil.createJSONObject(cur_textImageSliderTabItem.getData()) /> 
117					 
118								<#if sliderTabData?? && sliderTabData.classPK??> 
119			        				<@getImage sliderTabData.classPK?number cur_textImageSliderTabItem?index/> 
120								</#if> 
121							</#list> 
122						</#if> 
123            		</div> 
124          		</div> 
125    		</div> 
126 
127        	<!-- begin components/sliderNav --> 
128        	<div class="sliderNav<#if backgroundColorValue??> sliderNav--${backgroundColorValue}</#if> textImageSliderTabs__nav textImageSliderTabs__nav--mobile" 
129             	data-text-image-slider-tabs-nav-mobile data-slider-nav> 
130 
131          		<!-- begin components/arrowButton --> 
132          		<button 
133            		class="arrowButton arrowButton--prev arrowButton--<#if backgroundColorValue??>${backgroundColorValue}<#else>default</#if> sliderNav__arrow sliderNav__arrow--prev" 
134            		data-slider-nav-prev> 
135        			<span class="arrowButton__arrow"></span> 
136          		</button> 
137 
138          		<!-- end components/arrowButton --> 
139 
140          		<!-- begin components/arrowButton --> 
141          		<button 
142            		class="arrowButton arrowButton--next arrowButton--<#if backgroundColorValue??>${backgroundColorValue}<#else>default</#if> sliderNav__arrow sliderNav__arrow--next" 
143            		data-slider-nav-next> 
144            		<span class="arrowButton__arrow"></span> 
145          		</button> 
146 
147          		<!-- end components/arrowButton --> 
148    		</div> 
149 
150        	<!-- end components/sliderNav --> 
151  		</div></div> 
152	</section> 
153     
154	<#macro getImage classPK index> 
155	    <#assign journalArticle = journalArticleService.getLatestArticle(classPK) /> 
156	    <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale.toString())) /> 
157	    <#assign rootElement = document.getRootElement()> 
158	    <#assign imageXPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='image']")> 
159	 
160	    <#local image = ""> 
161	 
162	    <#if imageXPathSelector?? && imageXPathSelector.selectSingleNode(rootElement)??> 
163	        <#local image = imageXPathSelector.selectSingleNode(rootElement).getStringValue()?trim> 
164	    </#if> 
165	 
166	    <#if image?has_content> 
167	        <#attempt > 
168	            <#local imgJson = jsonFactoryUtil.createJSONObject(image)> 
169	            <#recover > 
170	                <#local imgJson = ''> 
171	        </#attempt> 
172	    </#if> 
173	    <div class="textImageSliderTabs__item swiper-slide" 
174	        <#if index==0> 
175	        	data-text-image-slider-tabs-slide-type="current" 
176	        </#if> 
177
178	        <div class="textImageSliderTabs__itemImage"> 
179	            <#if (imgJson.url)?has_content> 
180	                <img 
181	                    class="textImageSliderTabs__itemImg" 
182                        data-fileentryid="${imgJson.fileEntryId}" 
183	                    src="${imgJson.url}" 
184	                    alt="${imgJson.alt}" /> 
185	            </#if> 
186	        </div> 
187	    </div> 
188	</#macro> 
189	 
190	<#macro getTabButton classPK index last> 
191        <#assign journalArticle = journalArticleService.getLatestArticle(classPK) /> 
192        <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale.toString())) /> 
193        <#assign rootElement = document.getRootElement() /> 
194         
195        <#assign titleXPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='tabTitle']") /> 
196        <#assign title = titleXPathSelector.selectSingleNode(rootElement).getStringValue() /> 
197         
198        <#if index == 0> 
199	        <button class="textImageSliderTabs__tab textImageSliderTabs__tab--active swiper-slide<#if last> textImageSliderTabs__tab--margin</#if>" 
200	          	data-text-image-slider-tabs-tab="${index}">${title} 
201	  		</button> 
202  		<#else> 
203  			<button class="textImageSliderTabs__tab swiper-slide<#if last> textImageSliderTabs__tab--margin</#if>" data-text-image-slider-tabs-tab="${index}">${title} 
204      		</button> 
205  		</#if> 
206	</#macro> 
207	 
208	<#macro getSelectOption classPK index> 
209        <#assign journalArticle = journalArticleService.getLatestArticle(classPK) /> 
210        <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale.toString())) /> 
211        <#assign rootElement = document.getRootElement() /> 
212         
213        <#assign titleXPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='tabTitle']") /> 
214        <#assign title = titleXPathSelector.selectSingleNode(rootElement).getStringValue() /> 
215         
216        <#if index == 0> 
217	        <option value="${index}" class="select__option" selected="selected">${title}</option> 
218  		<#else> 
219  			<option value="${index}" class="select__option">${title}</option> 
220  		</#if> 
221	</#macro> 
222	 
223	<#macro getSliderItem classPK index> 
224        <#assign journalArticle = journalArticleService.getLatestArticle(classPK) /> 
225        <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale.toString())) /> 
226        <#assign rootElement = document.getRootElement() /> 
227 
228        <#assign titleXPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='tabTitle']") /> 
229        <#assign title = titleXPathSelector.selectSingleNode(rootElement).getStringValue() /> 
230         
231        <#assign descriptionXPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='tabDescription']") /> 
232        <#assign descriptionList = descriptionXPathSelector.selectNodes(rootElement) /> 
233         
234        <#assign ctaXPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='cta']") /> 
235        <#assign ctaURLXPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='ctaURL']") /> 
236        <#assign ctaNode = ctaXPathSelector.selectSingleNode(rootElement) /> 
237        <#assign ctaUrl = ctaURLXPathSelector.selectSingleNode(ctaNode).getStringValue() /> 
238         
239        <#assign ctaLabelXPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='ctaLabel']") /> 
240        <#assign ctaNode = ctaXPathSelector.selectSingleNode(rootElement) /> 
241        <#assign ctaLabel = ctaLabelXPathSelector.selectSingleNode(ctaNode).getStringValue() />   
242         
243      	<#assign sameCTALookOnMobileAndDesktopXPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='sameCTALookOnMobileAndDesktop']") /> 
244      	<#assign ctaNode = ctaXPathSelector.selectSingleNode(rootElement) /> 
245        <#assign sameCTALookOnMobileAndDesktop = sameCTALookOnMobileAndDesktopXPathSelector.selectSingleNode(ctaNode).getStringValue()  />  
246		 
247        <div class="textImageSliderTabs__textItem swiper-slide" 
248            <#if index == 0> 
249            	data-text-image-slider-tabs-slide-type="current" 
250    	    </#if> 
251
252			<!-- begin components/heading --> 
253	 
254			<#if (descriptionList?size > 1)> 
255				<div class="textImageSliderTabs__contentInner"> 
256					<ul> 
257						<#list descriptionList as cur_tabDescription> 
258							<li>${cur_tabDescription.getStringValue()}</li> 
259						</#list> 
260					</ul> 
261					<@getButton ctaLabel ctaUrl sameCTALookOnMobileAndDesktop, "textImageSliderTabs__button" /> 
262				</div> 
263			<#elseif (descriptionList?size == 1)> 
264				<div class="heading textImageSliderTabs__heading"> 
265					<#if (title)?has_content> 
266						<h3 class="heading__subtitle">${title}</h3> 
267					</#if> 
268					<p class="heading__text">${descriptionList[0].getStringValue()}</p> 
269					<@getButton ctaLabel ctaUrl sameCTALookOnMobileAndDesktop, "heading__button" /> 
270				</div> 
271			</#if> 
272 
273			<!-- end components/heading --> 
274		</div> 
275    </#macro> 
276 
277	<#macro getButton ctaLabel ctaUrl sameCTALookOnMobileAndDesktop class> 
278		<#if ctaLabel?trim?has_content && ctaUrl?trim?has_content> 
279			<#if sameCTALookOnMobileAndDesktop?has_content && sameCTALookOnMobileAndDesktop?trim == "true"> 
280				<a href="${ctaUrl}"  
281					class="button button--gold ${class}" data-wave-button> 
282					<span class="button__text">${ctaLabel}</span> 
283				</a> 
284			<#else> 
285				<!-- begin components/button --> 
286				<a href="${ctaUrl}" 
287					class="button button--gold ${class} heading__button--desktop" 
288					data-wave-button> <span class="button__text">${ctaLabel}</span> 
289				</a> 
290				 
291				<!-- end components/button --> 
292		 
293				<!-- begin components/moreButton --> 
294				<a href="${ctaUrl}" 
295					class="moreButton moreButton--gold ${class} heading__button--mobile"> 
296					<span class="moreButton__text">${ctaLabel}</span> 
297				</a> 
298		 
299				<!-- end components/moreButton --> 
300			</#if> 
301		</#if> 
302	</#macro> 
303</#if> 

Overview

Jewar was launched as one of RSG's Socioecenomic empowerment and community engagment initiatives. It is a mobile application tailored to the local communities surrounding the Red Sea Destination. The aim of Jewar is to facilitate sustainable opportunities and establish consistent engagement with the local communities.

image
image

What Jewar Offers

A look inside Jewar and what it offers.

Download the app
image

What Jewar Offers

A look inside Jewar and what it offers.

Download the app
image

Overview

As part of our community development initiatives aiming to upskill the local community, Red Sea Global (RSG) is offering a six-month online general English language program. This program will train 600 young people from the local communities around The Red Sea and AMAALA, equipping them with the language skills they’ll need to succeed in the international tourism industry.

Registration for the program will be open from October 17 to October 22, 2022. And the duration of this program is six months.

Empowering and Building the Future of the Red Sea

  1. shape 1

    Apply for jobs announced by Red Sea Global and its subsidiaries.
  2. shape 2

    Participate in educational, cultural enrichment, and volunteer programs in the Red Sea region.
  3. shape 3

    View the latest news and project developments in the Red Sea region.
  4. shape 4

    Participate in questionnaires and submit suggestions and opinions.
Program objectives
This program will train 600 young people from the local communities around The Red Sea and AMAALA, equipping them with the language skills they’ll need to succeed in the international tourism industry. Registration for the program will be open from October 17 to October 22, 2022. And the duration of this program is six months.
image
  • icon
    Gain the skills and confidence to engage with the Kingdom’s international visitors
  • icon
    Participate in the development of a world-class tourism destination
  • icon
    Open new long term and rewarding career paths
  • icon
    Learn the language skills you need to succeed in the Kingdom’s burgeoning tourism industry

Write to us

Have any suggestions or issues you need help with? 

Contact us
image

Jewar App - FAQs

FAQs

See the most frequently asked questions

  • Jewar App is a mobile app that is tailored to the local community around The Red Sea destination. The app allows users to stay up-to-date on the latest news, jobs, and programs offered by RSG and its partners, apply for open positions, participate in educational, cultural, volunteer, and enrichment programs, learn about the latest news and developments of projects in the region, and submit suggestions and feedback about the Red Sea destination.
  • Currently, the app targets the local community in Umluj, Alwajh, Duba, and surrounding villages.
  • Yes, you can use Jewar App if you are not in the Red Sea region. However, the content and initiatives are exclusive to residents of the Red Sea region.
  • Yes, Jewar App is owned by Red Sea Global, which is one of the most ambitious development companies in the world. It is wholly owned by the Public Investment Fund of Saudi Arabia.
  • Jewar App offers many benefits to users, including:

    • Staying up-to-date on the latest news, jobs, and programs offered by Red Sea Global and its partners.
    • Applying for open positions at Red Sea Global Company and its subsidiaries.
    • Participating in educational, cultural, volunteer, and enrichment programs in the Red Sea region.
    • Learning about the latest news and developments of projects in the Red Sea region.
    • Submitting suggestions and feedback about the Red Sea destination.
  • Jewar App is currently available in Arabic and English.
  • Jewar App is compatible with smartphones and tablets running iOS and Android operating systems.
  • You can submit suggestions or feedback about the Red Sea destination by clicking the "Feedback" tab in the app.
  • You can contact Red Sea Global through the "Contact Us" page on the company's website.
background background

Wrire to us

Have any suggestions or issues you need help with? 

Contact us Contact us

Get in touch

To learn more about Red Sea Global, please get in touch.

Contact us