Mobile App developer

HBO
Junior
Medior
Senior
Fulltime
Deventer

Als Mobile App developer werk je met moderne technologieën zoals C#, Angular, Blazor en MAUI, en krijg je veel ruimte om mee te denken over nieuwe functionaliteiten.

Solliciteer Direqt!

Wat ga je doen?

Bij Synigo Pulse in Deventer werk je aan een slimme, overzichtelijke mobiele app die dagelijks wordt ingezet door medewerkers van grote Nederlandse organisaties. Denk aan zorginstellingen, gemeenten, onderwijsinstellingen en de zakelijke markt – allemaal gebruikers van het platform. Synigo Pulse helpt haar klanten om hun werkdag eenvoudiger en overzichtelijker te maken.

Om het development team te versterken, zoekt Synigo Pulse een ervaren mobile app developer met gevoel voor frontend en oog voor gebruikerservaring. Je werkt met moderne technologieën zoals C#, Angular, Blazor en MAUI, en krijgt veel ruimte om mee te denken over nieuwe functionaliteiten.

Concreet betekent dit:

  • Je ontwikkelt en onderhoudt de frontend van de mobile app (voor Android & iOS).
  • Je werkt nauw samen met backend developers voor een soepele integratie.
  • Je vertaalt UI/UX-designs naar een intuïtieve gebruikerservaring.
  • Je test, verbetert en optimaliseert de app continu.
  • Je denkt mee over de technische architectuur van nieuwe features.
No items found.

Wat heeft Synigo Pulse te bieden?

  • Werken aan een app die ertoe doet, samen met een betrokken en gezellig team.
  • Een fijne werkplek in Deventer, met ruimte om deels thuis te werken.
  • Ruimte om te groeien – zowel technisch als persoonlijk.
  • Een marktconform salaris met goede secundaire arbeidsvoorwaarden.
  • Flexibele werktijden.
Solliciteer Direqt!

Wie ben jij?

  • Minimaal 3 jaar ervaring in mobile app ontwikkeling.
  • Goede kennis van C#, Angular, Blazor en MAUI.
  • Je hebt een sterk gevoel voor frontend en UI/UX.
  • Je werkt gestructureerd en houdt van nette, goed leesbare code.
  • Je communiceert helder en werkt graag samen.
  • Ervaring met Git of andere versiebeheersystemen.

Wie is Synigo Pulse?

Synigo Pulse is een hecht en energiek team met één ambitie: informatiebronnen bij elkaar brengen in een persoonlijke werkplekomgeving.

Video over Synigo Pulse

Bekijk de video om een voorproefje te nemen van hoe het bedrijf is.

Past deze vacature bij jou?

Neem contact met mij op, ik vertel je graag meer!

Misschien lijkt deze baan je geweldig, of zoek je toch net iets anders. Bel of mail gerust, ik help je graag!

Solliciteer Direqt!

Past deze vacature bij jou?

Neem contact met mij op, ik vertel je graag meer!

Misschien lijkt deze baan je geweldig, of zoek je toch net iets anders. Bel of mail gerust, ik help je graag!

Solliciteer Direqt!
// Array of keywords to block const blockedKeywords = [ // Keywords related to spam services 'speedyindexbot', 'service for indexing', '200 links for free', // Keywords related to drugs 'Купить', 'Кокаин', 'Доставка', 'Киев', 'Закладки', 'Чистый', 'САЙТ', 'Erectile dysfunction', 'TruePills', 'Viagra', 'Sildenafil', 'Cialis', 'Levitra', // Keywords related to gambling 'free casino games', 'no download', 'no registration', 'real money', 'casino', 'blackjack', 'gambling', 'slots', // Keywords related to unsolicited promotions 'social ads visits', 'cyber-monkey', 'onion', // Keywords related to heating and fireplaces (specific spam) 'Печи', 'камины', 'Москва', 'интернет магазин', 'отопления', // Common spam keywords 'free', 'win', 'winner', 'claim', 'urgent', 'discount', 'deal', 'prize', 'credit', 'loan', 'debt', 'insurance', 'money', 'cash', 'payout', 'cheap', 'buy', 'purchase', 'order now', 'limited time', 'offer', 'sale', 'exclusive', 'click here', 'subscribe', 'unsubscribe', 'newsletter', 'pills', 'medication', 'pharmacy', 'investment', 'profit', 'earn', 'income', 'work from home', 'weight loss', // Keywords related to adult content 'sex', 'porn', 'adult', 'xxx', 'nude', 'naked', 'hentai', 'escort', 'prostitution', // Keywords related to drugs 'drug', 'cocaine', 'heroin', 'meth', 'weed', 'cannabis', 'marijuana', 'lsd', // Keywords related to cryptocurrencies 'crypto', 'bitcoin', 'ethereum', 'blockchain', 'nft', 'ico', 'token' ]; const form = document.querySelectorAll('form'); for (let index = 0; index < form.length; index++) { const formEl = form[index]; const messageInput = formEl.querySelectorAll('textarea'); const submitBtn = formEl.querySelector('input[type="submit"]') // Create the error message div const errorMessage = document.createElement('div'); errorMessage.className = 'error-message'; errorMessage.style.display = 'none'; errorMessage.style.color = 'red'; formEl.insertBefore(errorMessage, submitBtn); /** * Check if the message contains any blocked keywords. * @param {string} message - The message to check. * @return {string|undefined} - The first blocked keyword found or undefined. */ function checkForBlockedKeywords(message) { return blockedKeywords.find(keyword => message.includes(keyword.toLowerCase())); } /** * Toggle the error message display and submit button state. * @param {boolean} containsBlockedKeyword - Whether the message contains a blocked keyword. * @param {string} [blockedKeyword=''] - The blocked keyword found. */ function toggleErrorDisplay(containsBlockedKeyword, blockedKeyword = '') { if (containsBlockedKeyword) { submitBtn.disabled = true; submitBtn.classList.add('disabled'); submitBtn.style.opacity = '0.5'; errorMessage.style.display = 'block'; errorMessage.textContent = `The message contains a blocked keyword: ${blockedKeyword}`; } else { submitBtn.disabled = false; submitBtn.classList.remove('disabled'); submitBtn.style.opacity = '1'; errorMessage.style.display = 'none'; } } // Add input event listener to each textarea for (let i = 0; i < messageInput.length; i++) { const element = messageInput[i]; element.addEventListener('input', function() { const message = element.value.toLowerCase(); const blockedKeyword = checkForBlockedKeywords(message); toggleErrorDisplay(!!blockedKeyword, blockedKeyword); }); } // Add submit event listener to the form formEl.addEventListener('submit', function(event) { let blockedKeyword = false; for (let i = 0; i < messageInput.length; i++) { const element = messageInput[i]; const message = element.value.toLowerCase(); blockedKeyword = checkForBlockedKeywords(message); } if (blockedKeyword) { event.preventDefault(); alert(`The message contains a blocked keyword: ${blockedKeyword}`); } }); }