Full-stack engineer
U bouwt aan het systeem waarop een zaal met honderden mensen tegelijk zit te bieden. Realtime bieden, de studio waarmee de host de avond draait, en de betaalstroom erachteraan. Van databasekolom tot de knop op de telefoon van de gast.
Amsterdam, hybride
32 tot 40 uur
Vast contract
Medior of senior
Salaris in overleg
Wat u gaat doen
VeilingMaster draait vier veilingvormen op één avond: stille veiling, live veiling, loterij en donaties. Het meeste werk zit in de momenten waarop veel mensen tegelijk iets doen en er geld aan vastzit. Dit is werk dat nu op de rol staat, geen wensenlijst.
Realtime bieden dat ook op slecht zaalwifi klopt
Biedingen lopen via Supabase Realtime naar de telefoons van gasten en naar het grote scherm in de zaal. De uitdaging is niet de websocket, maar de randgevallen: twee gasten die binnen dezelfde 200 milliseconden hetzelfde bod doen, een telefoon die drie minuten offline was en met een verouderde stand terugkomt, en een host die tegelijk een zaalbod invoert. De regel die bepaalt wie wint, staat als constraint in Postgres, niet in de client. U werkt aan beide kanten.
De betaalstroom na de hamerslag
Zodra een kavel is afgehamerd, gaat er een betaallink naar de winnaar en loopt de betaling via Stripe en iDEAL. Daarna komen webhooks binnen die soms twee keer aankomen, soms in de verkeerde volgorde, en soms pas de volgende ochtend. U bouwt de verwerking die daar idempotent mee omgaat, plus de facturen en de afrekening richting het goede doel.
De studio waarin de host de avond draait
Eén scherm waarop de commissie kavels in de wachtrij zet, zaalbiedingen invoert, afhamert en ziet wat er op het grote scherm staat. Dit wordt gebruikt door vrijwilligers die het product die avond voor het eerst zien, terwijl er honderden mensen kijken. Ontwerp en foutafhandeling wegen hier zwaarder dan features.
Loterij, donaties en de saaie helft
De trekking met animatie op het grote scherm, de donatiethermometer, de gastenlijst met uitnodigingen per mail, en de rapportage die de penningmeester de week erna nodig heeft. Ook migraties, RLS-policies en het opruimen van code die we vorig seizoen te snel hebben geschreven.
Hoe een week eruitziet
Het grootste deel van uw tijd is bouwen. De rest is review, overleg en contact met gebruikers. In het najaar en in de weken rond het lustrumseizoen verschuift dat richting support.
Maandag
Kort teamoverleg over wat er die week af moet. Daarna een dag zonder afspraken.
Dinsdag
Kantoordag. Pairen aan het lastigste stuk van uw taak, en reviews van collega’s.
Woensdag
Geen overleg in de agenda. Meestal de dag waarop het grootste stuk af komt.
Donderdag
Kantoordag met een demo. U laat zien wat werkt, niet wat af is op papier.
Vrijdag
Opruimen, documenteren, laatste release vroeg in de middag als er die avond geen event draait.
Zaterdag
Soms dienst tijdens een echte veiling. Betaald en gecompenseerd met een vrije dag.
Wat we zoeken
We hechten meer aan wat u kunt leren dan aan wat u al kent. Wie de stack nog niet kent, leert die hier. Wat we niet kunnen bijbrengen, staat bij must-have.
Must-have
- Twee jaar of meer werkervaring waarin uw zelfstandig features van begin tot eind hebt opgeleverd
- Comfortabel in JavaScript of TypeScript en in een component-framework, welk dan ook
- SQL dat verder gaat dan select star, want de meeste bugs bij ons zitten in de data, niet in de UI
- U schrijft code voor de collega die het over een jaar leest, en u legt keuzes vast
- Nederlands op gespreksniveau, omdat onze gebruikers en het product Nederlandstalig zijn
Nice-to-have
- Next.js met de App Router, React Server Components
- Postgres op niveau: row level security, indexen, transacties
- Betaalintegraties, Stripe in het bijzonder
- Realtime en websockets, of concurrency in het algemeen
- Oog voor interface, of de wil om dat op te bouwen
- Ervaring met events, horeca of vrijwilligersorganisaties
Herkent u zich in de helft van de must-haves en vindt u de rest interessant, solliciteer dan. We hebben liever een gesprek te veel dan een goede kandidaat die zichzelf wegstreept.
De techniek
Een kleine stack, bewust saai gehouden. We kiezen niets nieuws zonder dat er een probleem is dat het oplost.
Next.js met React
App Router, server components, server actions voor alle schrijfacties.
TypeScript, strict
Geen any zonder toelichting in de review.
Supabase
Postgres, auth, realtime. Row level security is de grens tussen klanten.
Stripe
iDEAL, betaallinks, uitbetalingen, facturen.
Eigen componenten op Radix
Toegankelijke primitieven, één ontwerpsysteem.
Vercel
Preview per pull request, productie in een paar minuten.
Zod
Validatie in de client voor de gebruiker, op de server voor de veiligheid.
Playwright en Vitest
End-to-end op de geldstroom, unit op de domeinregels.
Arbeidsvoorwaarden
Waar u start hangt af van ervaring, niet van onderhandelen. De bedragen zelf spreken we in het gesprek af.
Het sollicitatieproces
Vier stappen, van eerste mail tot aanbod. Geen extra ronde als het al duidelijk is. We beloven hier geen reactietermijn: u hoort van ons, ook bij een nee.
01
Uw sollicitatie
Formulier met uw motivatie. Mensen uit het team waar uw zou werken lezen mee. U krijgt bericht, ook bij een nee.
02
Kennismaking
Videogesprek met de teamlead. Wat u zoekt, wat wij zoeken, hoe we werken. Aan het eind hoort u of we verder gaan.
03
Vakinhoudelijke ronde
Een casus uit ons echte werk, samen doorlopen. Geen huiswerk in het weekend en geen algoritmepuzzels. U krijgt de casus vooraf.
04
Team en aanbod
Een gesprek met collega’s uit andere teams. Daarna volgt het aanbod met salaris, startdatum en voorwaarden op papier, met bedenktijd.
Dit is niets voor jou als
Een klein team heeft echte nadelen. Liever nu eerlijk dan over een paar maanden teleurgesteld.
U wilt u op één laag concentreren.
Bij ons schrijft u in dezelfde week een migratie, een server action en een stuk interface. Wie alleen backend of alleen frontend wil doen, heeft hier te weinig diepte en te veel breedte.
U hebt een uitgewerkt ticket nodig om te beginnen.
Vaak is de opdracht een klacht van een commissie en een half idee. U maakt daar zelf een plan van en checkt dat kort.
U zoekt een duidelijk carrièrepad.
We hebben geen niveaus, geen titels en geen jaarlijkse promotieronde. Groeien betekent hier meer verantwoordelijkheid, niet een nieuwe functienaam op uw kaartje.
U wilt nooit gestoord worden door gebruikers.
Iedereen doet mee aan support en staat af en toe op een zaterdagavond in een zaal. Dat is niet optioneel.
U werkt het liefst volledig remote.
Dinsdag en donderdag zijn kantoordagen in Amsterdam. Dat gaan we voor deze rol niet oprekken.
U houdt van veel proces.
Er is geen QA-afdeling, geen releasetrein en geen architect die vooraf tekent. Als u iets stukmaakt, merkt u dat zelf en repareert u het zelf.
U hebt de zekerheid van een groot bedrijf nodig.
We zijn een klein team met een seizoen dat in het najaar piekt. Dat voelt anders dan een concern met duizend collega’s.
Kort samengevat
Solliciteer op deze functie
Drie velden. Een cv is niet verplicht: wat u wilt bouwen zegt ons meer. Houd uw bericht kort, tweehonderd woorden is genoeg.