A modern web application providing reliable and trusted care services for children, elderly, and other family members.
Features β’ Tech Stack β’ Installation β’ Routes β’ Challenges
Careify is a comprehensive caregiving platform that makes professional care services accessible to everyone. Whether you need babysitting, elderly care, or specialized care for sick family members, our platform connects you with trusted care providers seamlessly.
Making caregiving easy, secure, and accessible (ΰ¦Έΰ¦Ήΰ¦, নিরাΰ¦ͺদ ΰ¦ΰ¦¬ΰ¦ ΰ¦ ΰ§ΰ¦―ΰ¦Ύΰ¦ΰ§ΰ¦Έΰ§ΰ¦Έΰ§ΰ¦¬ΰ¦²) for every family through a modern digital platform.
- β Trusted Providers - Verified and background-checked caregivers
- β Flexible Booking - Choose duration, location, and specific requirements
- β Real-time Tracking - Monitor booking status and history
- β Automated Invoicing - Receive email invoices instantly
- β 24/7 Support - Always available when you need assistance
- Email & Password authentication with strong validation
- Google Social Login integration via NextAuth
- Protected routes with session persistence
- NID verification for user registration
- Password validation (6+ characters, 1 uppercase, 1 lowercase)
- Auto-redirect to booking page after successful registration
- Mobile-first approach
- Tablet optimized layouts
- Desktop enhanced experience
- Seamless cross-device compatibility
- Duration Selection - Book by days or hours
- Location-based Filtering - Division β District β City β Area
- Real-time Cost Calculator -
Total Cost = Duration Γ Service Charge - Instant Booking Confirmation - Status tracking from booking to completion
- Address Input - Detailed location information
- My Bookings Dashboard - View all your bookings in one place
- Status Tracking - Pending β Confirmed β Completed
- Booking Details - Service name, duration, location, total cost
- Cancel Bookings - Flexible cancellation options
- View Details - Complete booking information
- Baby Care - Professional childcare and babysitting services
- Elderly Service - Compassionate care for seniors
- Sick People Service - Specialized medical assistance at home
- Automated invoice generation
- Email delivery after booking confirmation
- Professional invoice template with booking details
- Framework: Next.js 16.1.1 (App Router)
- UI Library: React 19.2.3
- Styling: TailwindCSS 4.1.18 + DaisyUI 5.5.14
- Form Management: React Hook Form 7.69.0
- Icons: Lucide React 0.562.0
- Notifications: React Toastify 11.0.5
- Utilities: clsx 2.1.1
- Runtime: Node.js with Next.js API Routes
- Database: MongoDB 7.0.0
- ODM: Mongoose 9.0.2
- Authentication: NextAuth.js 4.24.13
- Password Hashing: Bcrypt 6.0.0
- Email Service: Nodemailer 7.0.12
- HTTP Client: Axios 1.13.2
- Linting: ESLint 9 with Next.js config
- CSS Processing: PostCSS with Tailwind
| Route | Type | Description |
|---|---|---|
/ |
Public | Homepage with banner, services overview, testimonials |
/service/:service_id |
Public | Detailed service information and booking CTA |
/booking/:service_id |
π Private | Dynamic booking form with cost calculation |
/my-bookings |
π Private | User booking dashboard and management |
/login |
Public | User authentication page |
/register |
Public | New user registration with NID |
/404 |
Public | Custom error page with home redirect |
- Automatic redirect to login for unauthenticated users
- Session persistence on page reload
- No redirect to login when already authenticated
Node.js 18+
MongoDB 7.0+
npm or yarn- Clone the repository
git clone https://github.com/yourusername/careify.git
cd careify- Install dependencies
npm install- Set up environment variables
Create a .env.local file in the root directory:
# Database
MONGODB_URI=your_mongodb_connection_string
# NextAuth Configuration
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your_nextauth_secret_key
# Google OAuth
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# Email Service (Nodemailer)
EMAIL_SERVER_HOST=smtp.gmail.com
EMAIL_SERVER_PORT=587
EMAIL_SERVER_USER=your_email@gmail.com
EMAIL_SERVER_PASSWORD=your_app_specific_password
EMAIL_FROM=noreply@careify.com
# Optional: Stripe Payment (if implemented)
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=your_stripe_public_key
STRIPE_SECRET_KEY=your_stripe_secret_key- Run the development server
npm run dev- Open your browser Navigate to http://localhost:3000
npm run build
npm startcareify/
βββ app/ # Next.js App Router
β βββ api/ # API Routes
β β βββ auth/ # NextAuth endpoints
β β β βββ [...nextauth]/ # Dynamic auth routes
β β βββ bookings/ # Booking endpoints
β β β βββ route.js # GET, POST bookings
β β β βββ [id]/ # Update, delete booking
β β βββ services/ # Service endpoints
β β β βββ [id]/ # Get service by ID
β β βββ send-invoice/ # Email invoice endpoint
β βββ booking/ # Booking pages
β β βββ [service_id]/ # Dynamic booking page
β βββ service/ # Service detail pages
β β βββ [service_id]/ # Dynamic service page
β βββ my-bookings/ # User bookings page
β βββ login/ # Login page
β βββ register/ # Registration page
β βββ layout.js # Root layout
β βββ page.js # Homepage
β βββ not-found.js # 404 page
βββ components/ # React components
β βββ ui/ # UI components
β β βββ Button.jsx
β β βββ Card.jsx
β β βββ Input.jsx
β βββ forms/ # Form components
β β βββ BookingForm.jsx
β β βββ LoginForm.jsx
β βββ layout/ # Layout components
β β βββ Header.jsx
β β βββ Footer.jsx
β β βββ Navbar.jsx
β βββ shared/ # Shared components
β βββ ServiceCard.jsx
β βββ BookingCard.jsx
βββ lib/ # Utility libraries
β βββ db.js # MongoDB connection
β βββ auth.js # Auth helpers
β βββ utils.js # Helper functions
βββ models/ # Mongoose models
β βββ User.js # User schema
β βββ Service.js # Service schema
β βββ Booking.js # Booking schema
βββ public/ # Static assets
β βββ images/
β βββ icons/
βββ styles/ # Global styles
β βββ globals.css
βββ .env.local # Environment variables
βββ next.config.js # Next.js configuration
βββ tailwind.config.js # Tailwind configuration
βββ package.json # Dependencies
βββ README.md # Project documentation
- Dynamic metadata for Homepage
- Dynamic metadata for Service Detail pages
- SEO optimized titles and descriptions
- Open Graph tags for social sharing
- Automated invoice generation on booking
- Professional email template design
- Booking details, cost breakdown, and status
- Sent via Nodemailer with SMTP configuration
- Stripe Payment Integration - Secure payment processing
- Admin Dashboard - Booking and payment management
- Payment History - Transaction tracking and reports
| Variable | Description | Required |
|---|---|---|
MONGODB_URI |
MongoDB connection string | β Yes |
NEXTAUTH_URL |
Application base URL | β Yes |
NEXTAUTH_SECRET |
NextAuth encryption key | β Yes |
GOOGLE_CLIENT_ID |
Google OAuth client ID | β Yes |
GOOGLE_CLIENT_SECRET |
Google OAuth secret | β Yes |
EMAIL_SERVER_HOST |
SMTP server host | β Yes |
EMAIL_SERVER_PORT |
SMTP server port | β Yes |
EMAIL_SERVER_USER |
Email account username | β Yes |
EMAIL_SERVER_PASSWORD |
Email account password | β Yes |
EMAIL_FROM |
Sender email address | β Yes |
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY |
Stripe public key | β Optional |
STRIPE_SECRET_KEY |
Stripe secret key | β Optional |
Beautiful landing page with service overview and testimonials
Comprehensive service information with booking CTA
Dynamic booking form with real-time cost calculation
User dashboard for tracking and managing bookings
- User selects a service from homepage
- Views detailed service information
- Clicks "Book Service" (redirects to login if not authenticated)
- Fills booking form:
- Selects duration (days/hours)
- Chooses location (Division β District β City β Area)
- Enters detailed address
- Reviews auto-calculated total cost
- Confirms booking β Status: Pending
- Receives email invoice automatically
- NID number validation
- Name, email, contact information
- Password validation (6+ chars, 1 uppercase, 1 lowercase)
- Auto-redirect to booking page after successful registration
- View all bookings with complete details
- Track booking status (Pending/Confirmed/Completed/Cancelled)
- Cancel bookings when needed
- View detailed booking information
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Hossain Shifat
- GitHub: @hossain-shifat
- Email: hossainshifat222@gmail.com
Made with β€οΈ for better caregiving
β Star this repository if you find it helpful!