A Persian-first operating system for modern sports coaching.
QuestLine brings coaches, athletes, programs, sessions, attendance, and simple payments into one focused mobile-first workspace.
Sports coaching often runs on disconnected chats, spreadsheets, and informal payment tracking. QuestLine is being built to give coaches and athletes a single, trustworthy place to run the relationship: from onboarding and verification to programs, sessions, attendance, and payment-aware access.
It is intentionally designed as a premium, Persian-first, RTL-ready, mobile-first web product—operational rather than gimmicky, with clear workflows and role-aware access.
flowchart LR
A["Athlete"] -->|"joins & follows progress"| Q["QuestLine"]
C["Coach"] -->|"creates programs & sessions"| Q
M["Admin"] -->|"reviews verification"| Q
Q --> P["Programs / Quests"]
Q --> S["Calendar & Sessions"]
Q --> T["Attendance & Access"]
Q --> Y["Simple Payments"]
| Area | What it enables |
|---|---|
| Authentication & roles | Registration, login, refresh/logout, and coach/athlete role selection. |
| Coach verification | Coaches submit verification details; admins review and approve them with audit-aware workflows. |
| Coach–athlete relationships | Invitations, athlete responses, relationship setup, athlete management, and renewal alerts. |
| Quests | Coaches create draft or public/private training programs, manage participants, publish with guardrails, and plan quest sessions. |
| Sessions & calendar | Coach and athlete calendar views, session detail flows, attendance, and visibility rules. |
| Payments | A simple, development-stage athlete checkout loop, payment status handling, and participant activation alignment. |
| Profiles & trust | Role-specific profiles, visibility controls, follow requests, and sport-discipline support. |
| Admin operations | Coach-verification review and an admin settings foundation. |
Active MVP — core product flows are implemented; production hardening and several product surfaces remain.
QuestLine is a working full-stack MVP, not a public production service. The main application includes the foundations needed to demonstrate the coach–athlete operating model and has a deliberately disciplined scope.
- Turborepo monorepo with shared packages and configuration
- Next.js App Router frontend with Tailwind CSS and Persian/RTL localization foundations
- NestJS API with Prisma and PostgreSQL
- Authentication, role selection, route guards, and role-specific shells
- Coach verification and admin review workflow
- Coach–athlete invitations, relationships, profiles, and athlete management
- Quest lifecycle, participant management, sessions, calendars, and attendance
- Athlete-side simple payment/checkout flow using a placeholder payment result for MVP development
- Coach-side subscription/payment purchase and payment-status UI
- Messaging data model, permissions, and coach/athlete interfaces
- Broader admin user management, reports, audit-log browsing, and moderation controls
- Final access-control, privacy, locked-state, RTL, and mobile UX reviews
- Automated regression coverage, release checks, deployment plan, and pilot setup
Wallets, cash-out, marketplace, public social feeds, group/guild features, wearables, machine learning, and native mobile apps are intentionally deferred. This keeps the MVP centered on high-value coaching operations instead of expanding into a general social or fintech product.
questline-product/
├── apps/
│ ├── web/ Next.js 15, React 19, Tailwind CSS
│ └── api/ NestJS, Prisma
├── packages/
│ ├── config/ Shared configuration
│ └── shared/ Shared types and utilities
└── Questline_information/ Product, UX, and implementation references
| Layer | Stack |
|---|---|
| Web | Next.js App Router, React, TypeScript, Tailwind CSS |
| API | NestJS, TypeScript, class-validator |
| Data | PostgreSQL, Prisma ORM |
| Tooling | pnpm workspaces, Turborepo, ESLint |
- Node.js 20+
- pnpm 9+
- PostgreSQL 15+
git clone https://github.com/MrAshki/Questline_Product.git
cd Questline_Product
pnpm installCreate a local environment file for the API using the supplied template:
cp .env.example apps/api/.envUpdate apps/api/.env with your local PostgreSQL connection and application secrets, then prepare the database and start the workspace:
pnpm --filter @questline/api prisma:generate
pnpm --filter @questline/api prisma:db-push
pnpm devThe web app is configured to call the API at http://localhost:4000/api. The frontend runs through Next.js (normally http://localhost:3000) and the API through NestJS (normally port 4000).
pnpm lint
pnpm typecheck
pnpm buildThe payment checkout is an MVP placeholder flow, not a live payment gateway. Do not use real payment data in local development.
- Register an account and sign in.
- Select Coach or Athlete as your role.
- As a coach, complete the verification flow, create a quest, add sessions, and manage athletes.
- As an athlete, accept an invitation, review available quests, visit the calendar, and complete the placeholder checkout path where applicable.
- Use the admin area to review coach-verification requests.
- Trust before growth: verification, role-aware access, and privacy are first-class concerns.
- Operations over noise: workflows should remove coordination overhead, not create another social feed.
- Scope discipline: the MVP focuses on the smallest complete coach–athlete operating loop.
- Local relevance: Persian language support, RTL presentation, and mobile-first interaction guide the interface.
This repository is presented as a portfolio case study and an active MVP codebase. Product documentation and UI references live in Questline_information/, while the application code lives in apps/web and apps/api.
No license is currently specified. Please contact the repository owner before reusing the code or product assets.
Built by @MrAshki · Questions or collaboration ideas are welcome through GitHub.
