A phone book sounds like a simple thing. Until you realise that existing solutions either do too little, cost too much, or don't live where your team spends the whole day anyway: in Microsoft Teams.
That's exactly the problem this project solves — built for Maurus Schifferli's landscape architecture firm.
The starting point: contacts where work happens
The firm maintains a growing contact directory — employees, partners, project contributors — with names, email addresses, phone and mobile numbers, roles, team assignments and project links. That directory previously lived somewhere nobody went voluntarily. What was needed was something different: a tool that lives directly inside Teams and feels like a natural part of the work environment.
The result is a Teams Tab — a full web app embedded as its own tab in Microsoft Teams, working on every platform: desktop, browser, mobile.
What the app does
The application is built precisely around the firm's actual needs:
Contact management — the full directory is searchable by name, email and team. A dropdown filter enables quick narrowing by department or group. Each entry shows all relevant information at a glance.
Teams actions from the contact sheet — instead of copying a phone number or an email address, you can start a Teams call, open a chat or compose an email directly from any contact entry. One click, no detour.
Projects — contacts can be assigned to any number of projects. This shows at a glance who is involved in which project — useful for larger firms running parallel mandates.
CSV export — the full directory or a filtered selection can be exported as a CSV file, correctly BOM-encoded for seamless display in Excel.
Backups and data safety — automatic daily backups of the directory are created and stored in SharePoint. Manual backups are possible at any time, as is restoring from an earlier backup. No data loss, no manual effort.
Teams SSO: no second login
Perhaps the most important part is authentication. The app uses Microsoft Teams Single Sign-On — anyone already logged into Teams is also logged into the app, with no extra steps.
Technically, this runs through the official Teams JavaScript SDK: on startup, the app automatically retrieves a bearer token from the Teams client. This token is sent with every request to the backend server, which validates it against Microsoft's Azure AD. Without a valid token, there's no data — the app is not accessible from outside.
For the firm, this means: no separate user management, no additional passwords, no access issues. The employee's Microsoft account is the key.
How it was built
The technical foundation is the same we use for other projects:
- Frontend: React + Vite + Tailwind CSS + shadcn/ui — fast, modern, maintainable
- Backend: Express + Drizzle ORM — a lean REST API for all CRUD operations
- Database: PostgreSQL — reliable, scalable, purpose-built for this kind of structured data
The entire application was developed with Replit — from the first prototype to the finished Teams integration. Vibe coding showed its advantages here too: clear requirements, fast iterations, no unnecessary overhead.
What this project demonstrates
An internal tool like this isn't a showpiece — it doesn't market outward, it doesn't win design awards. But it's exactly the kind of application that meaningfully improves a firm's daily work: less searching, fewer clicks, less switching between applications.
And it shows what's possible with Replit today: not just quick websites, but complete, production-ready applications with real authentication, data persistence and cloud connectivity — for an effort that would have been unthinkable a few years ago.
If your firm has a similar problem — an internal tool that's always been on the «someday» list — get in touch.
