Position:Â
Frontend Developer Intern, learning placement
Location:Â
Remote within Europe, Amsterdam preferred
Type:Â
Internship governed by a written internship agreement, a stageovereenkomst in the Netherlands or a convenzione di tirocinio in Italy, between Moods, the intern and, where applicable, the educational institution. This is a learning placement, not an employment contract and not a freelance assignment
Duration and hours:Â
6 months, 24 hours per week
Eligibility:Â
Open to candidates enrolled in, or recently graduated from, a computer science, software engineering, interaction design, or related programme, where the placement can be linked to their studies
Supervision:Â
A named company tutor at Moods, the stagebegeleider under a Dutch stageovereenkomst or the tutor aziendale under an Italian convenzione di tirocinio, working alongside the academic tutor appointed by the educational institution (stagedocent or tutor didattico) where the programme appoints one. Written learning plan, weekly one-to-one with the company tutor, mid-placement review, progress reporting to the institution, and a written end-of-placement evaluation
Compensation:Â
EUR 700 per month internship allowance, paid under the internship agreement
Outcome:Â
A portfolio-ready project and a written reference at the end of the placement
How to apply:Â
A portfolio, a GitHub profile, or a link to work you have shipped is required. See Hiring process and what happens next
Moods Studio is a product studio and development agency based in Amsterdam, working across AI, blockchain, and Web3. We build a broad range of software, from DeFi infrastructure and tokenization platforms to AI-driven applications, SaaS products, and mobile apps. We work in a small, senior-led team. Work is owned end to end, from the first conversation about a problem through to the release that puts it in front of users. Everything we build ships to real clients on real deadlines.
This is a learning placement in frontend engineering, and it is structured as one. The purpose is that you leave a stronger engineer than you arrived, with work you can show and someone who can speak to it. The skill at the centre of the placement is translation: taking a design in Figma and turning it into a fast, accessible, production-ready interface. Matching spacing, typography, states, and motion to the design with precision, then making the result responsive, performant, and maintainable in code. It is a craft, and it is learned by doing it under review. You are assigned a named company tutor from the engineering team. In your first week the two of you write a learning plan: three or four objectives for the placement, what evidence would show you have met them, and which parts of which projects will give you that evidence. You revise it together as the placement goes on. You work on real client projects, because that is where the learning is. What you contribute is scoped to your level and every change is reviewed before it is merged. You are not responsible for delivery and no release depends on you. If a piece of work turns out to be the wrong size for where you are, we change the work.
Web: Next.js (App Router, React Server Components, Server Actions, SSR, SSG, ISR, and the edge runtime), React, and TypeScript in strict mode. Styling and UI: Tailwind CSS, shadcn/ui, and Radix primitives, with a component-driven approach and shared design tokens. State and data: TanStack Query for server state, lightweight client state with Zustand or React context, and typed API layers. Backend and data services: Supabase (Postgres, Auth, Realtime, Storage) and REST or typed API integrations. Mobile: React Native with Expo and EAS Build, shipping to the App Store and Google Play. Web3, where relevant: wallet connection and on-chain reads and writes with wagmi and viem. Infrastructure: Vercel for deployments, preview environments per pull request, edge functions, and Speed Insights. Git and GitHub with pull request reviews and CI. You are not expected to know all of this. You should be comfortable in React and a modern frontend stack; the rest is what the placement is for.
Learn to turn Figma into production: Implement designs as responsive, accessible interfaces under review, working on spacing, typography, component variants, interaction states, and motion until the result matches the design intent.
Build with Next.js and React: Work on features using the App Router, server and client components, and server actions, with your company tutor reviewing structure and typing before anything merges.
Learn the review workflow: Open pull requests, respond to review comments, and see your work go out through preview deployments. Learning to give and receive a code review is part of the placement.
See how mobile differs: Contribute to our React Native and Expo work and learn where cross-platform interfaces diverge from the web.
Learn performance and accessibility: Work with Core Web Vitals and Lighthouse, semantic HTML, and WCAG 2.2 AA, and learn to spot the problems before they reach a review.
Use AI tooling well: Work with AI-assisted tools such as Claude and GitHub Copilot, and learn where they help, where they mislead, and how to check their output.
Build a portfolio piece: Develop one piece of work across the placement to a standard you can show, with your company tutor's input on how it is framed and presented.
You are enrolled in, or have recently graduated from, a relevant programme, and the placement can be linked to your studies.
You are comfortable in React and JavaScript or TypeScript, and you understand components, hooks, and state.
You can read a design and reproduce it in code, and you care when the result is not quite right.
You have used Git, and you are willing to have your work reviewed line by line.
You ask questions when something is unclear and say when you are stuck.
You have professional working proficiency in English.
Hands-on experience with Next.js, or enough React that you can pick it up quickly.
Familiarity with Tailwind, shadcn/ui, or Radix.
Experience with React Native or Expo.
Familiarity with Supabase or another backend-as-a-service.
Exposure to Web3 frontends with wagmi or viem.
Experience integrating an LLM API into a frontend.
Professional working proficiency in Dutch or Italian in addition to English.
This placement is governed by a written internship agreement: a stageovereenkomst in the Netherlands, or a convenzione di tirocinio in Italy, signed by Moods, by you, and by your educational institution where your programme requires it. It is a learning placement. It is not an employment contract and it is not a freelance assignment. The agreement sets out the learning objectives, the supervision arrangements, the hours, and the evaluation at the end. Supervision is a named responsibility, not a general arrangement. Your company tutor at Moods is identified in the agreement before you start, so you know from day one who is accountable for your placement: the stagebegeleider under a Dutch stageovereenkomst, the tutor aziendale under an Italian convenzione di tirocinio. Where your programme appoints an academic tutor, the stagedocent or tutor didattico, the two agree the learning objectives and the assessment criteria between them at the outset, and your company tutor reports progress to your institution on whatever schedule it requires. In practice: a written learning plan agreed in your first week and revised as the placement goes on, a weekly one-to-one with your company tutor, a mid-placement review against the plan, and a written evaluation at the end. If your tutor becomes unavailable during the placement, a replacement is named and your institution is informed.
Internship allowance: EUR 700 per month internship allowance, paid under the internship agreement.
Duration and hours: 6 months at 24 hours per week. The days are agreed with your company tutor at the start and can be arranged around your study timetable.
Tutoring and supervision: A named company tutor at Moods (stagebegeleider or tutor aziendale), plus your institution's academic tutor (stagedocent or tutor didattico) where your programme appoints one. A written learning plan with agreed objectives, a weekly one-to-one, regular code review, and a written evaluation against the plan at the end.
What you leave with: A portfolio-ready project and a written reference covering what you worked on and how you developed over the placement.
Tools: Moods provides the tools and accounts you need for the placement, including the AI tooling the team works with.
Location: Remote within Europe. Amsterdam preferred if you would like time on site, and time on site is optional.
Moods Studio is an equal opportunity organisation. We assess every application on the skills and experience that are relevant to the role, and we do not discriminate on the basis of age, gender, gender identity or expression, sexual orientation, ethnicity, nationality, religion or belief, disability, or any other protected characteristic. If you need an adjustment at any stage of the process, for example a different interview format, extra time, materials in an accessible format, or a scheduled break, write to info@moodglobalservices.com and we will arrange it. You do not need to explain why, and asking has no bearing on the outcome of your application.
Controller. Mood Global Services B.V., KVK 85502081, Spinozastraat 47-C, 1018 HJ Amsterdam, the Netherlands, is the controller for the personal data you submit through this application. Purpose. We use your data only to assess your application for this role and to communicate with you about it. We do not use it for anything else and we do not share it with third parties for their own purposes. Legal basis. Taking steps at your request before entering into a contract, together with our legitimate interest in assessing candidates for an open role. Where we ask to keep your details on file for future openings, the basis is your consent, which you can withdraw at any time. Retention. We keep application data for 6 months after the process closes, and then delete it, unless you agree to a longer retention period so that we can consider you for future roles. Your rights. You can ask us for a copy of your data, ask us to correct or delete it, object to or restrict how we use it, and request it in a portable format. You can also lodge a complaint with the Dutch data protection authority, the Autoriteit Persoonsgegevens. Contact. Write to info@moodglobalservices.com for anything relating to your data or to exercise any of these rights.
Read our privacy policyA portfolio is required. Include a link to your portfolio, your GitHub, or anything you have built, with a short note on what it does and which parts were yours. Coursework and personal projects are exactly what we expect to see at this stage. We aim to respond to every applicant within 5 business days of receiving the application. The process has three stages. First, a 30-minute introductory call about the placement, your studies, and what you want to get out of it. Second, a 45-minute technical conversation about something you have built, where we read the code together. Third, a practical exercise: turning a small Figma design into a working component. The exercise is time-boxed to two hours, it is unpaid, and we send the brief and the assessment criteria in advance. If your programme requires a specific agreement, a set number of hours, or documentation from us, tell us at the first stage and we will work to it. We give a decision within 5 business days of the final stage, and we give feedback whether or not we make an offer. We never ask for salary history. Please do not include your date of birth, marital status, nationality, or a photograph in your application. We do not use them in any assessment and we would only have to delete them.