SPA zbudowane w React 19 + Vite 8 z pełnym zestawem funkcjonalności: autentykacja z 2FA, kreator rezerwacji, panel admina, analityka, GraphQL (Apollo Client + SchemaLink), React Query, Storybook, testy jednostkowe (Vitest + RTL) i e2e (Playwright).
124 lines
2.8 KiB
JSON
124 lines
2.8 KiB
JSON
{
|
|
"users": [
|
|
{
|
|
"id": "u1",
|
|
"email": "admin@reservations.dev",
|
|
"password": "Admin1234!",
|
|
"role": "admin",
|
|
"avatarUrl": "https://i.pravatar.cc/150?u=admin"
|
|
},
|
|
{
|
|
"id": "u2",
|
|
"email": "anna.kowalski@example.com",
|
|
"password": "Client1234!",
|
|
"role": "client",
|
|
"avatarUrl": "https://i.pravatar.cc/150?u=anna"
|
|
},
|
|
{
|
|
"id": "u3",
|
|
"email": "marek.nowak@example.com",
|
|
"password": "Client1234!",
|
|
"role": "client",
|
|
"avatarUrl": "https://i.pravatar.cc/150?u=marek"
|
|
},
|
|
{
|
|
"id": "u4",
|
|
"email": "julia.wisniewska@example.com",
|
|
"password": "Client1234!",
|
|
"role": "client",
|
|
"avatarUrl": "https://i.pravatar.cc/150?u=julia"
|
|
}
|
|
],
|
|
"services": [
|
|
{
|
|
"id": "s1",
|
|
"name": "Initial Consultation",
|
|
"description": "A 30-minute introductory session to discuss your needs and goals.",
|
|
"price": 50,
|
|
"duration": 30
|
|
},
|
|
{
|
|
"id": "s2",
|
|
"name": "Standard Session",
|
|
"description": "A full 60-minute service session tailored to your requirements.",
|
|
"price": 120,
|
|
"duration": 60
|
|
},
|
|
{
|
|
"id": "s3",
|
|
"name": "Premium Package",
|
|
"description": "An extended 90-minute premium session with a detailed follow-up report.",
|
|
"price": 200,
|
|
"duration": 90
|
|
},
|
|
{
|
|
"id": "s4",
|
|
"name": "Express Appointment",
|
|
"description": "A focused 15-minute quick-turnaround appointment for urgent matters.",
|
|
"price": 30,
|
|
"duration": 15
|
|
}
|
|
],
|
|
"reservations": [
|
|
{
|
|
"id": "r1",
|
|
"userId": "u2",
|
|
"serviceId": "s1",
|
|
"date": "2026-06-25",
|
|
"time": "09:00",
|
|
"status": "cancelled"
|
|
},
|
|
{
|
|
"id": "r2",
|
|
"userId": "u3",
|
|
"serviceId": "s2",
|
|
"date": "2026-06-26",
|
|
"time": "11:30",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"id": "r3",
|
|
"userId": "u4",
|
|
"serviceId": "s3",
|
|
"date": "2026-06-27",
|
|
"time": "14:00",
|
|
"status": "confirmed"
|
|
},
|
|
{
|
|
"id": "r4",
|
|
"userId": "u2",
|
|
"serviceId": "s4",
|
|
"date": "2026-06-20",
|
|
"time": "10:00",
|
|
"status": "cancelled"
|
|
},
|
|
{
|
|
"id": "r5",
|
|
"userId": "u3",
|
|
"serviceId": "s3",
|
|
"date": "2026-07-01",
|
|
"time": "13:00",
|
|
"status": "confirmed"
|
|
},
|
|
{
|
|
"id": "r6",
|
|
"userId": "u4",
|
|
"serviceId": "s2",
|
|
"date": "2026-07-03",
|
|
"time": "16:00",
|
|
"status": "confirmed"
|
|
},
|
|
{
|
|
"userId": "u2",
|
|
"serviceId": "s1",
|
|
"date": "2026-09-01",
|
|
"time": "14:30",
|
|
"specialRequirements": null,
|
|
"status": "pending",
|
|
"depositPaid": 25,
|
|
"transactionId": "TXN-USDR1S5D",
|
|
"id": "-4aG8VQUVhM"
|
|
}
|
|
],
|
|
"$schema": "./node_modules/json-server/schema.json"
|
|
} |