A modern, full-stack appointment booking application with seamless Google Calendar integration. Built for professionals who need an efficient, reliable way to manage appointments and client bookings.
- Appointment Booking: User-friendly booking interface for clients
- Real-time Availability: Check available time slots instantly
- Google Calendar Integration: Automatic synchronization with Google Calendar
- Admin Dashboard: Comprehensive management panel for appointments
- User Management: Role-based access with admin and client roles
- Email Notifications: Automated confirmation and reminder emails
- RESTful API: Clean, documented API endpoints
- JWT Authentication: Secure authentication system
- PostgreSQL Database: Robust data persistence
- Responsive Design: Mobile-first, modern UI
- Docker Support: Containerized deployment
- TypeScript: Type-safe development
- Framework: NestJS with TypeScript
- Database: PostgreSQL with TypeORM
- Authentication: JWT with Passport
- Calendar API: Google Calendar API integration
π See detailed API documentation β
- Framework: Next.js 16 with React 19
- Styling: Tailwind CSS
- UI Components: Radix UI primitives
- Forms: React Hook Form with Zod validation
- State Management: TanStack Query
- Icons: Lucide React
- Database: PostgreSQL 15
- Containerization: Docker & Docker Compose
- Deployment: Multi-platform (AWS, GCP, DigitalOcean, Heroku, Railway, VPS)
- Node.js 18+
- Docker & Docker Compose
- PostgreSQL (or use Docker)
- Google Cloud Console account (for calendar integration)
git clone https://github.com/emiedonmokumo/next-nest.git
cd next-nestAPI Configuration - See api/README.md for detailed setup
Frontend Configuration - Create .env.local in web directory:
NEXT_PUBLIC_API_URL=http://localhost:3001# Start PostgreSQL database
docker-compose up postgres -d
# Install dependencies and start development servers
cd api && npm install && npm run start:dev &
cd ../web && npm install && npm run dev- Frontend: http://localhost:3000
- API: http://localhost:3001
- API Documentation: http://localhost:3001/api
For detailed database schema and API endpoints, see API Documentation.
- Create Google Cloud Console project
- Enable Google Calendar API
- Create OAuth 2.0 credentials
- Configure redirect URIs
- Add credentials to environment variables
- Admin connects Google Calendar via OAuth
- Confirmed appointments automatically create calendar events
- Updates and cancellations sync with Google Calendar
- Real-time availability checking prevents double bookings
For detailed setup instructions, see CALENDAR_SETUP.md.
- Admin: Full access to all appointments, user management, calendar integration
- User: Can view and manage their own appointments
- Admin dashboard:
/admin(Admin only) - Appointment management: Role-based access
- Calendar integration: Admin only
- Secure token-based authentication
- Role-based guards for endpoint protection
- Automatic token refresh handling
# Build and start all services
docker-compose up --build -d
# Check logs
docker-compose logs -fFor detailed deployment instructions, see DEPLOYMENT_GUIDE.md.
Complete API documentation with all endpoints, authentication, and examples:
π View API Documentation β
cd api
npm run test # Unit tests
npm run test:e2e # End-to-end tests
npm run test:cov # Coverage reportcd web
npm run test # Component tests
npm run test:watch # Watch mode- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Single timezone support
- Basic notification system
- Manual calendar token refresh
Database Connection Error
# Check PostgreSQL status
docker-compose ps postgres
# Restart if needed
docker-compose restart postgresGoogle Calendar Not Syncing
# Check calendar connection status
curl http://YOUR_SERVER_URL:3001/auth/calendar/status
# Reconnect if needed through admin panelPort Already in Use
# Linux/Mac: Kill processes on ports 3000/3001
sudo lsof -ti:3000,3001 | xargs kill -9
# Windows: Find and kill process
netstat -ano | findstr :3000
taskkill /PID <PID> /FEnvironment Variables Not Loading
# Ensure .env files are in correct locations:
# ./api/.env (backend config)
# ./web/.env.local (frontend config)For support and questions:
- Email: [email protected]
- GitHub Issues: Create an issue
- Documentation: Wiki
Built with β€οΈ by the BookSlate Team