Files

2.7 KiB

RunCats Application Overview

This document summarizes the core structure and components of the RunCats application for context in future prompts.

Core Concept: A "Tinder for fitness buddies" application connecting users based on location, fitness interests, and preferences.

Project Structure:

  • / (Root): Contains project-level configuration and this summary file.
  • /server: Laravel backend API.
    • app/Http/Controllers/Api/: API endpoint logic (e.g., AuthController, UserController).
    • app/Http/Requests/: Input validation rules (e.g., LoginRequest, UpdateProfileRequest).
    • app/Http/Resources/: API response formatting (e.g., UserResource, ProfileResource).
    • app/Models/: Eloquent models (e.g., User, Profile).
    • routes/api.php: API route definitions.
    • Uses Laravel Sail, PostgreSQL, Redis, Ably, AuthKit, Stripe.
  • /client: Vue.js frontend (SPA) and Capacitor mobile app source.
    • src/views/: Page-level components (e.g., LoginPage.vue, ProfilePage.vue).
    • src/components/: Reusable UI components (e.g., LoginForm.vue, ProfileCard.vue).
    • src/stores/: Pinia state management modules (e.g., auth.ts, user.ts).
    • src/services/: API interaction logic (e.g., authService.ts, userService.ts, api.ts base client).
    • src/router/: Vue Router configuration (index.ts).
    • src/types/: TypeScript type definitions (e.g., user.ts).
    • Uses Vue 3 (Composition API), TypeScript, Pinia, Vue Router, Tailwind CSS, Vite, Capacitor, Vitest, Playwright.

Core Features (Initial Focus):

  1. Authentication:
    • Email/Password Registration & Login (AuthController, LoginPage, RegisterPage, auth.ts store).
    • Strava Sign-in (Planned).
    • Token-based API authentication (Laravel Sanctum assumed).
  2. User Profiles:
    • View own profile (UserController@show, ProfilePage, ProfileCard, user.ts store).
    • Edit own profile (UserController@update, EditProfilePage, ProfileForm, user.ts store).
    • Fields: Name, Email, Bio, Fitness Goals, Fitness Level, Profile Picture (Planned).
  3. Finding Friends (Planned):
    • Matching based on criteria (distance, activity, level, etc.).
    • Viewing potential matches.
    • Friend requests.
  4. Real-time Features (Planned):
    • Notifications (Ably).
    • Chat.

Key Technologies:

  • Backend: PHP (Laravel), PostgreSQL, Redis
  • Frontend: TypeScript (Vue.js), Pinia, Vue Router, Tailwind CSS
  • Mobile: Capacitor
  • Authentication: Laravel Sanctum (assumed for API tokens)
  • Real-time: Ably
  • Payments: Stripe (Planned)
  • Testing: Vitest (Unit), Playwright (E2E)