This Svelte 4 challenge tests your ability to build a small but impressive dashboard in 2-3 hours. Create real-time visualisations from socket data while showcasing your TypeScript, testing and component development skills.
Create a dashboard with three monitoring panels:
Temperature System 🌡️
Pressure Vessel 📈
Flow Rate Monitor 🌊
This is a monorepo with three packages:
client
: Svelte 4 frontend (currently empty panels waiting for your implementation)server
: Socket.IO backend simulating real-time refinery datashared
: Common types and constants used by both client and serverThe data flow works like this:
The server emits these events:
temperature:update
- Current temperature, thresholds and statuspressure:update
- Current pressure value and statusflow:update
- Current flow rate, valve position and efficiencyYour client can send these commands:
temperature:control
- Adjust cooling or thresholdspressure:release
- Trigger emergency pressure releaseflow:valve-adjust
- Change valve position (0-100%)npm install -g pnpm
pnpm install
pnpm build
(builds all packages)pnpm dev
(starts both client and server)The app runs at http://localhost:3000 with the server at http://localhost:3001.
pnpm dev:server
pnpm dev:client
Run tests with pnpm test
. We've set up test infrastructure, just add your test files.
All tests must pass for your PR to be accepted.
Create a PR containing your changes. We'll review:
Don't spend time on login screens or features not mentioned in the brief. Focus on solid, maintainable visualisations of the simulated data.
Using AI assistants like Claude or ChatGPT to help with this challenge is absolutely fine. We're interested in results, not whether you memorised every Svelte lifecycle method. However, be prepared to walk through your code, explain your design choices, and justify technical decisions during the review. If you can't explain how your solution works, it's not much use to us.
We've set up Husky pre-commit hooks to run ESLint and tests before each commit. This might feel like a faff, but it ensures your code meets our standards before it's committed. If you're getting pre-commit errors when trying to commit changes, run pnpm lint
and pnpm test
manually to see what's failing.
We're using Conventional Commits for this project. This means your commit messages should follow a specific format like feat: add temperature gauge
or fix: resolve pressure panel display bug
. The pre-commit hook will enforce this format.