🚀 Before Applying
Please complete the short technical task below at the end of this job post: It helps us assess your coding style and problem-solving skills and shouldn’t take more than 3 hours maximum. Once done, share your solution link (GitHub or similar) and fill out this short form: https://form.typeform.com/to/TA3DMUja
🌍 About Us
We are a fast-growing software agency based in Portugal, building AI-driven SaaS platforms, mobile apps, and custom systems.
Our stack is modern and efficient:
Laravel 12 + Inertia + React 18 + Tailwind + TypeScript + shadcn/ui + React Native.
We’re now looking for a reliable, fast-learning Full-Stack Developer who wants to grow in a long-term team and work on high-impact, well-architected projects.
⚙️ Tech Stack
Laravel 11 / Inertia.js / React 18 / TailwindCSS
TypeScript / shadcn-ui / Axios
Docker / GitHub Actions / CI/CD
MySQL / Supabase / Redis
Hetzner / Terraform / Ploi
🎯 Responsibilities
Develop and maintain SaaS and mobile projects using our internal boilerplate.
Collaborate with other developers via GitHub and Asana.
Participate in code reviews, testing, and QA cycles.
Ensure clean, modular, and scalable code.
Communicate proactively and meet delivery deadlines.
🧠 Requirements
2–5 years of experience with Laravel + React (Inertia/Vite).
Strong understanding of backend–frontend integration and REST APIs.
Proficiency with GitHub and modern dev workflows.
Fluent English and excellent written communication.
Ownership mindset — reliable, consistent, and curious.
🌟 Nice to Have
Experience with React Native / Expo.
Familiarity with CI/CD pipelines or Docker.
Experience in multi-tenant SaaS or agency projects.
💼 Why Join Us
Work directly on real-world SaaS apps.
Modern tech stack, structured codebases, and clear reviews.
Remote-first, async-friendly culture — results over hours.
Long-term projects and opportunities for growth.
📨 How to Apply
Please include in your application:
A short introduction about yourself (1–2 paragraphs).
Links to 2–3 recent Laravel + React projects (GitHub or live).
The link to your completed technical task.
🧩 Technical Interview Task: Build a Dockerized Laravel Reminder App
🧱 Task Overview
Goal:
Implement a minimal reminder web application using Laravel 12, Inertia.js (with React and TypeScript), Docker, and MySQL.
Users can authenticate, create/manage reminders with due dates/times, and receive browser notifications when reminders are due (client-side, assuming the tab is open).
Why this task?
Tests full-stack skills: setup, auth/CRUD, date handling, frontend reactivity, Docker orchestration, JS notifications, and clean UI design.
🧾 Success Metrics
App runs end-to-end via Docker Compose.
Auth works; CRUD for reminders functional.
Browser notifications trigger on due time (demo with a reminder set 1–2 minutes in the future).
Code is clean, commented, and typed (TypeScript).
UI features a simple but clean layout using Tailwind CSS (e.g., intuitive navigation, responsive cards/forms, subtle styling for readability — no raw CSS overrides).
🧭 Assumptions & Notes
Use React with Inertia.
TypeScript: Enable for all Inertia components/pages.
Tailwind CSS: Required for all styling — install and configure fully.
Notifications: Use Web Notifications API (request permission on login/page load). Works on localhost; in prod, needs HTTPS.
Timezones: Store in UTC; display in browser’s local time.
🧰 Tech Stack
Backend: Laravel 12 (PHP 8.3+), MySQL 8.0
Frontend: Inertia.js + React + TypeScript + Tailwind CSS
Containerization: Docker + Docker Compose
🪜 High-Level Implementation Steps
1️⃣ Project Initialization
Set up a fresh Laravel 12 project.
Integrate Inertia with React and TypeScript.
Configure Tailwind CSS for styling.
Create a basic Inertia layout in Blade.
Init Git and commit initial setup.
2️⃣ Docker Setup
Build a Dockerfile for the Laravel app (PHP 8.3+ FPM, deps, Composer/NPM builds).
Define docker-compose.yml with app and MySQL services (env vars, volumes, network).
Update .env for DB connection.
Test build and run (migrate after backend).
3️⃣ Backend: Database, Auth, and CRUD
Migrations:Users (default)
Reminders table (user_id FK, title, description nullable, due_at datetime)
Models:Reminder with fillable/casts, User relation, formatted due accessor.
Auth Controller:Manual login/register/logout (validation, hashing, sessions).
Reminder Controller:Auth-protected CRUD (index: user’s reminders sorted by due_at; store/update: validate future due_at, ownership check; destroy: ownership check).
Routes:Web.php with root redirect, guest/auth groups, reminders resource.
Optional:Seeder for demo data (test user + reminders).
4️⃣ Frontend: Inertia Pages, TypeScript, and Notifications
TS interfaces: User, Reminder (include formattedDue).
Tailwind styling: Responsive, clean (e.g., flex/grid layouts, cards, hovers, grays/blues).
Auth Pages: Login/Register forms (useForm, validation handling).
Reminder Pages:Index (list cards/table with actions, create button).
Create/Edit (forms with datetime-local, useForm).
Notifications:In Index, request permission on mount; interval check for due reminders; trigger Notification if permitted.
Handle flashes/errors; build assets.
5️⃣ Testing and Demo
Run Docker, migrate/seed.
Flow: Register/login, CRUD reminders, demo notification.
Check: Auth guards, validation, persistence, UI responsiveness, edges (overdue, no perm).
Stretch: Basic sorting or timezone display.
✅ End of Task
Technical Interview Task: Build a Dockerized Laravel Reminder App
Você tem que entrar na sua conta para poder candidatar-se a esta oferta.