A simple app for evaluating Full Stack Software Engineer candidates.
interview-chat-app/
├── backend/ # Backend (Python)
│ ├── main.py
│ └── requirements.txt
└── frontend/ # React & Next.js frontend (App Router)
├── app/
│ ├── layout.tsx
│ ├── page.tsx
│ ├── login/page.tsx
│ └── chat/page.tsx
├── components/
│ ├── auth/LoginForm.tsx
│ ├── chat/ChatInterface.tsx
│ ├── providers/AppProviders.tsx
│ └── ui/Button.tsx
├── context/AuthContext.tsx
├── lib/api.ts
└── public/tamedia.svg
- Python >= 3.11
- Node.js >= 20.9.0 (recommended: Node 20 LTS or Node 22 LTS).
| Method | Endpoint | Description |
|---|---|---|
| GET | /health |
Check app is running |
| POST | /login |
Get a session key to access the endpoints |
| POST | /chat |
Send a chat message |
| POST | /chat-stream |
Send a chat message and get a streaming response |
Request:
{ "user": "user1", "password": "pass1" }Response:
{ "session_api_key": "api-key-secret" }Request:
{ "text": "hello" }Response:
{
"text": "Hi there! How can I help you today?",
"timestamp": "2026-04-08T12:00:00"
}Request:
{ "text": "hello" }Response:
data: {"word": "You", "timestamp": "2026-04-09T10:00:00.000000+00:00"}
data: {"word": "said:", "timestamp": "2026-04-09T10:00:00.150000+00:00"}
data: {"word": "\"hello\".", "timestamp": "2026-04-09T10:00:00.300000+00:00"}
data: {"word": "Here", "timestamp": "2026-04-09T10:00:00.450000+00:00"}
data: {"word": "is", "timestamp": "2026-04-09T10:00:00.600000+00:00"}
data: {"word": "a", "timestamp": "2026-04-09T10:00:00.750000+00:00"}
data: {"word": "streamed", "timestamp": "2026-04-09T10:00:00.900000+00:00"}
data: {"word": "response", "timestamp": "2026-04-09T10:00:01.050000+00:00"}
data: [DONE]