A full-stack Next.js 15 platform connecting families with verified caregivers for children, elderly, and special-needs individuals.
Care.io is a comprehensive care service platform featuring:
- 3 User Roles: Client, Caregiver, Admin
- Complete Booking Workflow: Browse β Book β Pay β Review
- Real Payment Integration: Stripe Checkout with webhooks
- Advanced Features: Notifications, Family Members, Address Book
- Admin Panel: User & Booking Management
- Modern Tech Stack: Next.js 15, TypeScript, TanStack Query, Redux, Supabase
- π Browse verified caregivers with advanced filters
- π Book services with 4-step booking flow
- π³ Secure payment via Stripe
- π¨βπ©βπ§βπ¦ Manage family members
- π Save multiple addresses
- β Leave reviews and ratings
- π Real-time notifications
- π Track bookings and payments
- πΌ Manage assigned jobs
- π View daily schedule
- π° Track earnings (85% payout)
- β View reviews and ratings
- π Update job status (Confirmed β Ongoing β Completed)
- π± Receive booking notifications
- π₯ User management (view, suspend, delete)
- π Booking management (view, update status)
- π Platform statistics and analytics
- π΅ Revenue tracking
- Framework: Next.js 15 (App Router, Server Components)
- Language: TypeScript (Strict Mode)
- Styling: Tailwind CSS, DaisyUI
- State Management:
- TanStack Query (Server State)
- Redux Toolkit (Client State)
- Forms: React Hook Form + Zod
- Animations: Framer Motion, AOS
- UI Components: Custom + Material Icons
- Database: PostgreSQL (Supabase)
- Authentication: NextAuth.js (Google OAuth + Credentials)
- Payment: Stripe (Checkout + Webhooks)
- Email: Resend + React Email
- File Upload: Cloudinary
- API: Next.js API Routes
- Framework: Jest
- Library: React Testing Library
care-xyz/
βββ src/
β βββ app/
β β βββ (auth)/ # Authentication pages
β β βββ (dashboard)/ # Dashboard pages (all roles)
β β βββ (protected)/ # Protected pages
β β βββ api/ # API routes (25+ endpoints)
β β βββ caregivers/ # Public caregiver pages
β β βββ services/ # Public service pages
β β βββ providers.tsx # App providers
β βββ components/ # Reusable components
β βββ emails/ # Email templates
β βββ lib/ # Utilities & configs
β βββ store/ # Redux store
β βββ types/ # TypeScript types
β βββ __tests__/ # Test files
βββ supabase/
β βββ schema.sql # Database schema
β βββ seed.sql # Seed data
βββ public/ # Static assets
βββ ...config files
- Node.js 18+
- npm or yarn
- Supabase account
- Stripe account (test mode)
- Google OAuth credentials
- Resend account (free tier)
- Cloudinary account (free tier)
π New to the project? Follow these guides in order:
- QUICK_SETUP.md - Get Resend & Cloudinary keys in 5 minutes β‘
- SETUP_GUIDE.md - Detailed setup instructions with screenshots π
- API_KEYS_CHECKLIST.md - Track your setup progress β
- Clone the repository
git clone <repository-url>
cd care-xyz- Install dependencies
npm install- Set up environment variables
Copy the example file and add your keys:
cp .env.example .env.localThen follow QUICK_SETUP.md to get your Resend and Cloudinary API keys.
Your .env.local should include:
# Database (Supabase)
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_service_role_key
# NextAuth
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your_secret_key
# Google OAuth
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# Stripe
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key
STRIPE_SECRET_KEY=your_stripe_secret_key
STRIPE_WEBHOOK_SECRET=your_webhook_secret
# Resend (Email) - Get from: https://resend.com/api-keys
RESEND_API_KEY=re_xxxxx
# Cloudinary - Get from: https://cloudinary.com/console
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET=care-xyz-uploads
# App
NEXT_PUBLIC_APP_URL=http://localhost:3000Verify your setup:
node test-api-keys.jsThis will check if all your API keys are properly configured.
NEXT_PUBLIC_APP_URL=http://localhost:3000
4. **Set up database**
Go to Supabase Dashboard and run:
```sql
-- Run supabase/schema.sql
-- Run supabase/seed.sql
- Run development server
npm run dev- Open browser
http://localhost:3000
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage10 tables with complete relationships:
users- User accountscaregiver_profiles- Caregiver detailsservices- Available servicesbookings- Service bookingspayments- Payment recordsreviews- User reviewsaddresses- Saved addressesfamily_members- Family member recordspromo_codes- Discount codesnotifications- User notifications
- Google OAuth (for clients)
- Email/Password (for all roles)
- CLIENT: Book services, manage family, leave reviews
- CAREGIVER: Manage jobs, track earnings, update status
- ADMIN: Manage users, bookings, platform settings
- Client completes booking form
- Redirected to Stripe Checkout
- Payment processed securely
- Webhook confirms payment
- Booking created with CONFIRMED status
- Email confirmation sent
- Caregiver notified
Platform Fee: 15% (Caregiver receives 85%)
Built with React Email:
- Welcome Email (on registration)
- Booking Confirmation (after payment)
- Status Update (when caregiver updates)
- Review Reminder (after completion)
- Fully responsive design (mobile, tablet, desktop)
- Dark mode ready
- Smooth animations (Framer Motion, AOS)
- Toast notifications
- Loading states
- Error handling
- Empty states
- Skeleton loaders
- Homepage
- Services Listing
- Service Detail
- Caregivers Listing
- Caregiver Profile
- Login/Register
- Dashboard Overview
- My Bookings
- Payment History
- Family Members
- Address Book
- Profile
- Settings
- Notifications
- Dashboard Overview
- Assigned Jobs
- My Bookings
- Schedule
- Earnings
- Reviews
- Profile
- Settings
- Dashboard Overview
- User Management
- Booking Management
- Settings
POST /api/auth/registerPOST /api/auth/[...nextauth]
GET /api/servicesGET /api/services/[slug]
GET /api/caregiversGET /api/caregivers/[id]
GET /api/bookings/my-bookingsGET /api/bookings/assigned-jobsPOST /api/bookings/createPOST /api/bookings/create-checkoutPOST /api/bookings/cancelPOST /api/bookings/update-status
GET /api/reviewsPOST /api/reviews
GET /api/notificationsPUT /api/notificationsDELETE /api/notifications
GET/POST/PUT/DELETE /api/familyGET/POST/PUT/DELETE /api/addresses
GET/PUT/DELETE /api/admin/usersGET/PUT /api/admin/bookings
POST /api/webhooks/stripe
- Push code to GitHub
- Import project in Vercel
- Add environment variables
- Deploy
Add all variables from .env.example to Vercel dashboard
- Configure Stripe webhook URL
- Verify Resend domain
- Test all features
- Monitor errors
- Lighthouse Score: 90+
- Server-side rendering
- Image optimization ready
- Code splitting
- Lazy loading
- Caching with TanStack Query
- Row Level Security (RLS) in Supabase
- Protected API routes
- Input validation (Zod)
- Password hashing (bcryptjs)
- CSRF protection
- Role-based access control
- Secure environment variables
- Caregiver verification system
- Availability calendar
- Real-time chat
- Push notifications
- Advanced analytics
- Promo code system
- Multi-language support
- Mobile app (React Native)
- Video call integration
- Background checks
- Email:
client@example.com - Password:
password123
- Email:
caregiver@example.com - Password:
password123
- Email:
admin@example.com - Password:
password123
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
This project is private and proprietary.
Built with β€οΈ using Next.js, TypeScript, and modern web technologies.
For support, email support@care.io
- Next.js team for the amazing framework
- Supabase for the backend infrastructure
- Stripe for payment processing
- Vercel for hosting
- All open-source contributors
Status: Production Ready π Version: 1.0.0 Last Updated: February 2026