· · Own Your Software

The Welcome Window: Live Customer Support

Reading time5 min
Length1,200 words
Last updatedOctober 8, 2026
LevelIntermediate

I built The Welcome Window to solve a simple problem: how do you make customer support feel personal, immediate, and actually pleasant?

Key takeaways
  • The Welcome Window is a self-hosted Flask portal for live customer support by appointment.
  • Visitors request access, are approved, then chat or video call, and can play games while they wait.
  • It runs on Flask-SocketIO, Tailwind CSS, Alpine.js, SQLite, Jitsi Meet, Caddy and systemd.
  • It is live and open source on GitHub.

What Is The Welcome Window?

The Welcome Window is a self-hosted Flask-based customer service portal that combines real-time chat, visitor management, and interactive games. It’s designed so I can offer live support by appointment, with a professional interface that keeps customers engaged even when they’re waiting.

Think of it as a digital reception area. Visitors can see when I am available, request access, and once approved, they can chat  in real-time or even hop on a video call. And here’s the twist: while they wait for responses, they can play Word Search, Sudoku, or Trivia instead of staring at a loading spinner.

The Problem It Solves

I wanted a service I could provide for customers of my eCommerce builder. I wanted a personal connection portal that gives customers a warm welcome while giving me complete control over who gets in and when.

The appointment-based access model means I am not bombarded with random visitors. People submit their name and email, I approve them, and only then can they enter the “window” to chat or video call.

Key Features

What each side gets

For customers

  • Real-time availability status (Available, Busy, Away)
  • Access request system with name and email
  • Live text chat
  • Interactive games (Word Search with 10 themes, Sudoku with 3 difficulty levels, Trivia with categories you can change)
  • Optional Jitsi Meet video chat with screen sharing

For support staff

  • Live admin dashboard with real-time visitor monitoring
  • Visitor queue management (approve/reject/disconnect)
  • Availability controls with custom status messages
  • Chat interface that broadcasts to all connected visitors

The Tech Stack

I built The Welcome Window using technologies I trust for real-time applications:

Backend: Flask 3.1.0 with Flask-SocketIO 5.4.1 running in eventlet async mode for proper WebSocket support. After testing threading mode and hitting limitations with real-time notifications, I switched to eventlet for reliable socket communication.

Frontend: Tailwind CSS for styling and Alpine.js for reactive components. No build step required - everything runs in the browser with CDN-hosted libraries.

Real-time Communication: Socket.IO handles bidirectional communication between visitors and the admin dashboard. Messages are broadcast instantly, and the connection status updates in real-time.

Database: SQLite with WAL (Write-Ahead Logging) mode for better concurrent access. For a small-scale application like this, SQLite is perfectly sufficient without the overhead of PostgreSQL.

Video Chat: Embedded Jitsi Meet provides professional-quality video calls without building custom WebRTC infrastructure.

Deployment: Caddy handles reverse proxy and automatic SSL termination, while systemd manages the application as a service on an Ubuntu VPS.

How It Works

The flow is intentionally simple:

  1. Land on the pageVisitors land on the page and see your real-time availability status.
  2. Request accessIf you’re available, they click “Request Access” and enter their name and email.
  3. Get notifiedYou receive an instant notification in the admin dashboard.
  4. Approve or rejectYou approve or reject the request with one click.
  5. Choose a modeApproved visitors choose between “Chat” or “Video” mode.
  6. TalkYou communicate through the live chat interface.
  7. DisconnectWhen the session ends, you disconnect the visitor.

Throughout the process, visitors can play games to pass the time. The Word Search has 10 themed word lists (Animals, Food, Travel, Tech, Nature, Music, Sports, Movies, Space, Christmas), Sudoku offers three difficulty levels with solution validation, and Trivia pulls questions from the Open Trivia Database API.

Why I Built It This Way

I wanted a project that demonstrated several technical skills:

  • Real-time WebSocket communication with Flask-SocketIO
  • Session management and user authentication
  • Database design with proper relationships
  • API integration (Open Trivia Database)
  • Responsive frontend without heavy frameworks
  • Production deployment with SSL and process management

But more importantly, I wanted to build something genuinely useful for connecting with customers and providing help.

What’s Next

The Welcome Window is live at https://welcome.todiane.com and running in production. Future enhancements could include:

  • Multiple admin users with role-based permissions
  • Scheduled availability windows
  • Chat history export
  • Custom game themes
  • Mobile app version

For now, it’s a complete, functional customer service portal that does exactly what it’s supposed to do: make live support feel personal and engaging.

The Welcome Window is open source and available on GitHub https://github.com/todiane/welcome-window . Built with Flask, Socket.IO, and a focus on real-time user experience.

Summary
  • The Welcome Window makes live support feel personal, with approval-based access, chat, video and games.
  • It is built on Flask, Socket.IO, SQLite and Jitsi Meet, and served with Caddy and systemd.
  • It is complete and running in production, with role-based admins and scheduled availability as possible next steps.
Keep reading

Introducing Invoice Generator

A self-hosted invoicing tool for the UK self-employed.

Read more →

Introducing MTDify

The bookkeeping application, now called Desk Ledger.

Read more →

What AI-Assisted Coding Actually Looks Like

What I built with it, and how it felt.

Read more →