Skip to content

aracreate-group/aci-may-fullstack-interview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

aci-may-fullstack-interview

Software Engineer

Objective | Evaluation

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


Problem Statement

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.


Tech Stack

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.


Backend

Implement a backend service responsible for:

Authentication

  • User registration and login
  • Authentication and authorization using JWT

Chat Room APIs

Implement REST APIs for:

  • Creating chat rooms
  • Listing chat rooms
  • Joining chat rooms
  • Fetching the last 50 messages from a room

Message Requirements

Each message must include:

  • Sender (reference to user)
  • Room (reference to room)
  • Content
  • Sent timestamp

Real-Time Communication

Implement real-time messaging using Socket.io or native WebSockets:

Socket Authentication

  • Authenticate socket connections by verifying JWT during handshake

Client Events

  • join_room
  • send_message
  • leave_room

Broadcast Events

  • receive_message

Database

Persist all data (users, rooms, messages) using a database of your choice.


Frontend

Implement a fully working chat frontend using any modern framework (React, Vue, or similar).

State Management

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.

Features

  • User registration and login with protected routes
  • Browse and create chat rooms
  • Real-time messaging
  • Load last 50 messages when entering a room

UI Requirements

  • 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.


Deployment

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.


Evaluation Focus

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

Requirements

  • 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors