Find-a-Coach is a full-featured web application where users can register as coaches and receive contact requests from potential students. Built with modern front-end technologies, this app demonstrates dynamic routing, state management, and real-time data handling using Firebase. It also features secure Firebase authentication with signup, login, auto-logout, and token-based session handling for a smooth user experience.
🔗 Live App
-
📬 Contact real coaches through a dynamic request form
-
👥 Become a coach and get listed in the coaches directory
-
🧾 Interactive form validation with real-time error feedback and input handling
-
🧭 Dynamic routing with Vue Router, including coach profiles and request inbox
-
🔐 Basic route protection (only non-coaches can register)
-
💡 Built with Vue 3 Composition API +
<script setup lang="ts">+ TypeScript -
📦 State management with Pinia
-
🎨 Smooth and responsive UI enhanced with Vue 3 Transitions
-
💠 Rich UI icons with Iconify for Vue
-
🔁 Handles data persistence and retrieval through RESTful HTTP requests
-
🔑 Secure Firebase authentication with signup, login, auto-logout, and token-based session management
-
☁️ Real-time backend powered by Firebase
-
Vue 3 (Composition API +
<script setup lang="ts">) -
TypeScript (strictly typed Vue components)
-
Pinia (state management)
-
Firebase (Realtime Database for data storage, REST API, and authentication with secure session handling)
-
Vue 3 Transitions (built-in animation features)
-
Iconify (modern SVG icon library for Vue)
-
Vite (blazing-fast development build tool)
This project includes automated end-to-end tests written using Playwright to ensure the core user flows work as expected.
🧪 Click to view detailed test coverage
- ✔️ Homepage redirect: Auto-redirects from
/to/coaches - ✔️ Static content: Verifies key UI elements like headings and links are visible
- ✔️ Navigation: Clicking on “Login” correctly redirects to
/auth - ✔️ Authentication:
- Login with valid credentials works and redirects to
/coaches - Login with invalid or empty credentials shows proper validation and error messages
- Signup with empty inputs triggers validation errors
- Signup with existing credentials displays error alerts
- Signup with new credentials works and redirects to
/coaches
- Login with valid credentials works and redirects to
- ✔️ Authorization:
- Unauthorized access to
/registerredirects to login - Logged-in users can access
/registerto become a coach
- Unauthorized access to
- ✔️ Coach Registration:
- Form submission with valid data registers a new coach
- Redirects to the coaches list showing the new coach profile
- ✔️ Session Management:
- Logout button appears after login
- Clicking logout successfully signs out the user and hides protected elements
All tests were successfully executed and passed in the latest run — ensuring a stable and functional user experience from end to end.
To execute the Playwright tests locally:
Install dependencies:
npm installInstall Playwright browsers:
npx playwright installRun all tests:
npx playwright testFor visual debugging:
npx playwright test --headedThis template should help get you started developing with Vue 3 in Vite.
TypeScript cannot handle type information for .vue imports by default, so we replace the tsc CLI with vue-tsc for type checking. In editors, we need Vue to make the TypeScript language service aware of .vue types.
See Vite Configuration Reference.
npm installnpm run devnpm run build