A full-stack food delivery platform built with Next.js frontend and Spring Boot backend, featuring real-time order tracking, vendor management, and comprehensive analytics.
- Browse & Search: Discover restaurants by cuisine, location, and ratings
- Real-time Orders: Place orders and track delivery status in real-time
- Favorites: Save favorite restaurants and dishes
- Order History: Complete order history with reorder functionality
- Secure Payments: Integrated payment processing
- Vendor Dashboard: Complete business management interface
- Menu Management: Easy-to-use menu creation and editing tools
- Order Management: Accept/reject orders, update status, manage deliveries
- Analytics: Revenue tracking, popular items, customer insights
- Profile Management: Business information and settings management
- Platform Management: User and vendor oversight
- Vendor Approval: Approve new vendor registrations
- Analytics Dashboard: Platform-wide statistics and insights
- Content Moderation: Manage platform content and reviews
- Framework: Next.js 14 with TypeScript
- Styling: Tailwind CSS with Radix UI components
- State Management: React hooks with context API
- Charts: Recharts for analytics visualization
- Forms: React Hook Form with Zod validation
- Framework: Spring Boot 3.2 with Java 17
- Database: MySQL with JPA/Hibernate
- Authentication: JWT with role-based access control
- API Documentation: Swagger/OpenAPI
- Security: Spring Security with CORS configuration
- Database: MySQL 8.0+ (PlanetScale for production)
- Deployment: Docker containerization
- Build Tool: Maven (Backend), npm (Frontend)
- Version Control: Git with comprehensive documentation
- Java 17+ for backend
- Node.js 18+ for frontend
- MySQL 8.0+ for database
- Maven 3.6+ for backend builds
-
Clone the repository
git clone <repository-url> cd WanderFare
-
Backend Setup
cd backend # Copy environment template cp env.example .env # Edit .env with your database credentials # Build and run mvn clean install mvn spring-boot:run
Backend will be available at:
http://localhost:8080 -
Frontend Setup
# Install dependencies npm install # Copy environment template cp .env.local.example .env.local # Edit .env.local if needed (API URL should be: http://localhost:8080/api) # Start development server npm run dev
Frontend will be available at:
http://localhost:3000 -
Database Setup
# Run the database setup script cd backend mysql -u root -p < mysql/reset_database.sql
- Multi-role Authentication with secure login/registration
- Real-time Order Tracking with status updates
- Vendor Dashboard with analytics and menu management
- Admin Panel for platform oversight
- Responsive Design working across all devices
- Email:
test@customer.com - Password:
password123
- Email:
vendor@test.com - Password:
password123
- Email:
admin@test.com - Password:
password123
Once the backend is running, visit:
- Swagger UI:
http://localhost:8080/api/swagger-ui.html - API Health:
http://localhost:8080/api/actuator/health
src/main/java/com/wanderfare/
βββ config/ # Configuration classes
βββ controller/ # REST API endpoints
βββ dto/ # Data Transfer Objects
βββ exception/ # Global exception handling
βββ model/ # JPA entities
βββ repository/ # Data repositories
βββ security/ # JWT security configuration
βββ service/ # Business logic services
- users - Base user table with role inheritance
- customers - Customer-specific information
- vendors - Vendor business details
- menu_items - Restaurant menu items
- orders - Customer orders
- order_items - Individual order line items
src/
βββ app/ # Next.js app router
βββ components/ # Reusable UI components
β βββ ui/ # Base UI components
β βββ pages/ # Page-specific components
β βββ forms/ # Form components
βββ hooks/ # Custom React hooks
βββ lib/ # Utility functions
βββ types/ # TypeScript type definitions
cd backend
# Run tests
mvn test
# Run with debug
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
# Build for production
mvn clean package -DskipTests# Run tests
npm run test
# Build for production
npm run build
# Lint code
npm run lint
# Type checking
npm run type-checkcd backend
docker build -t wanderfare-backend .
docker run -p 8080:8080 -e DATABASE_URL=your-db-url wanderfare-backend# Deploy to Railway
railway up
### Frontend Deployment
#### Option 1: Vercel (Recommended)
```bash
# Deploy to Vercel
vercel --prod
# Set environment variables in Vercel dashboard
NEXT_PUBLIC_API_URL=your-backend-url# Build frontend
npm run build
# Create Dockerfile (if needed)
# Deploy with your preferred container serviceDATABASE_URL=mysql://username:password@host:port/database
JWT_SECRET=your-jwt-secret-minimum-32-charactersNEXT_PUBLIC_API_URL=http://localhost:8080/api- 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.
- Built with β€οΈ using Spring Boot and Next.js
- Thanks to all contributors and supporters
- Special thanks to the open-source community
For support and questions:
- Documentation: Check
/docsfolder for detailed guides - API Issues: Backend logs and Swagger documentation
- Frontend Issues: Browser console and network tab
Made with β€οΈ for food lovers everywhere! ππ







