As a Software Engineer, you'll demonstrate your ability to design and implement robust, scalable, and user-friendly applications.
We expect a team member — who aspires to be a part of creating disruptive innovations made in Germany — to be agile, technology-agnostic, flexible, and compliant with our best practices, guidelines, and quality standards.
We are not interested in engineers who work in silos, are limited to specific technologies, develop black-box systems, or are non-compliant with our guidelines and regulations.
This task assesses your current skills based on your prior experience. While developing the solution, feel free to showcase your creativity and innovative thinking.
Deadline: Sunday, May 31, 2026, 10 PM
Your challenge is to develop a Real-Time Chat Application — a full-stack chat platform that allows users to register, join chat rooms, and communicate with other users in real time.
The application should focus on clean architecture, thoughtful data modeling, real-time communication, and a clear user experience.
You are free to choose your preferred language, framework, and database. However, the following are required:
- Authentication: JWT-based auth (no third-party auth providers)
- Real-Time: Socket.io or native WebSockets
- Frontend State Management: Redux Toolkit or Zustand
This ensures a fair and comparable evaluation across all candidates.
Implement a backend service responsible for:
- User registration and login
- Authentication and authorization using JWT
Implement REST APIs for:
- Creating chat rooms
- Listing chat rooms
- Joining chat rooms
- Fetching the last 50 messages from a room
Each message must include:
- Sender (reference to user)
- Room (reference to room)
- Content
- Sent timestamp
Implement real-time messaging using Socket.io or native WebSockets:
- Authenticate socket connections by verifying JWT during handshake
join_roomsend_messageleave_room
receive_message
Persist all data (users, rooms, messages) using a database of your choice.
Implement a fully working chat frontend using any modern framework (React, Vue, or similar).
Use Redux Toolkit or Zustand to manage the following globally:
- Authentication state
- Rooms
- Messages
Important: Socket events must update the global store directly, not local component state.
- User registration and login with protected routes
- Browse and create chat rooms
- Real-time messaging
- Load last 50 messages when entering a room
- Loading spinner for every API call
- Friendly empty state for rooms without messages
- Desktop UI is sufficient — mobile responsiveness is not required
Important: Do not use hardcoded mock data. The frontend must consume actual REST and WebSocket APIs.
Deploying the application with a live demo link is optional but strongly encouraged.
If you do deploy, ensure your platform supports persistent WebSocket connections (e.g., Render, Railway, Fly.io). Serverless platforms like Vercel are not suitable for the backend.
This task evaluates your ability to:
- Model data correctly
- Design clean REST APIs
- Implement real-time communication
- Manage global state effectively
- Deliver a functional, well-structured full-stack application
- Create a new public GitHub repository on your personal account for this project.
- Set up a GitHub Project (PM board) inside your repository and use it to manage all tasks, estimations, and timeline before starting development.
- Break down all expected features into issues and estimate them upfront.
- Use issue comments for questions, tagging relevant reviewers.
- Track working hours for each task directly in the issue or as a comment.
- Commit iteratively with meaningful, conventional commit messages.
- Design and document the system architecture.
- Ensure clean, readable, and well-documented code following best practices.
- Update README.md with:
- Project overview
- Architecture and technical stack
- Setup and installation instructions
- UI screenshots
- Known limitations or future improvements