Skip to content

A modern fullstack starter kit prepared for Docker-based development. Provides fast and consistent development environment by running Laravel and React technologies inside Docker containers.

Notifications You must be signed in to change notification settings

muammertopcu/laravel-react-devkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Laravel React Starter Kit πŸš€

A modern fullstack starter kit prepared for Docker-based development. Provides fast and consistent development environment by running Laravel and React technologies inside Docker containers.

✨ Features

  • 🐳 Docker-Based Development - Consistent development environment
  • Laravel 12 - Backend API and web framework
  • React 19 - Modern frontend library
  • Inertia.js - Laravel-React bridge for SPA-like experience
  • TypeScript - Type-safe development
  • Tailwind CSS - Utility-first CSS framework
  • Radix UI - Accessible UI components
  • Vite - Fast build tool
  • MySQL & Redis - Database and caching
  • ESLint & Prettier - Code quality and formatting
  • Dark/Light Mode - Theme support
  • Hot Reload - Instant development feedback

πŸ“‹ Requirements

Only these two tools are needed:

  • Docker (20.10+)
  • Docker Compose (2.0+)

πŸ’‘ Note: You don't need to install tools like PHP, Node.js, Composer on your local machine! Everything runs inside Docker containers.

πŸš€ Quick Start

1️⃣ Clone the Repository

git clone https://github.com/muammertopcu/laravel-react-devkit cd laravel-react-devkit

2️⃣ Start with One Command

# Automatic installation and startup ./setup.sh

πŸŽ‰ That's it! The application is ready:

3️⃣ Development Workflow

# Start containers docker-compose up -d # Frontend development server (with hot reload) docker-compose exec app npm run dev # Backend development server docker-compose exec app php artisan serve --host=0.0.0.0 # Watch code changes in new terminal docker-compose logs -f app

🐳 Docker Development

Managing Containers

# Start all services docker-compose up -d # Start specific service docker-compose up -d app # Stop containers docker-compose down # Rebuild containers docker-compose up -d --build # View container logs docker-compose logs -f app

Development Commands

# Open bash inside container docker-compose exec app bash # Composer commands docker-compose exec app composer install docker-compose exec app composer require package-name # NPM commands docker-compose exec app npm install docker-compose exec app npm run dev docker-compose exec app npm run build # Laravel Artisan commands docker-compose exec app php artisan migrate docker-compose exec app php artisan make:controller ControllerName docker-compose exec app php artisan queue:work # Database operations docker-compose exec app php artisan migrate:fresh --seed docker-compose exec db mysql -u root -p laravel_db

Useful Docker Tips

# Clean all containers docker-compose down -v docker system prune -a # For frontend hot reload docker-compose exec app npm run dev -- --host 0.0.0.0

πŸ“ Project Structure

β”œβ”€β”€ app/ # Laravel application code β”‚ β”œβ”€β”€ Http/Controllers/ # API and web controllers β”‚ β”œβ”€β”€ Models/ # Eloquent models β”‚ └── Providers/ # Service providers β”œβ”€β”€ resources/ β”‚ β”œβ”€β”€ js/ # React components and TypeScript code β”‚ β”‚ β”œβ”€β”€ components/ # Reusable components β”‚ β”‚ β”œβ”€β”€ pages/ # Inertia pages β”‚ β”‚ β”œβ”€β”€ layouts/ # Page layouts β”‚ β”‚ β”œβ”€β”€ hooks/ # Custom React hooks β”‚ β”‚ └── types/ # TypeScript type definitions β”‚ β”œβ”€β”€ css/ # Tailwind CSS and style files β”‚ └── views/ # Blade templates β”œβ”€β”€ routes/ # Route definitions β”œβ”€β”€ database/ # Migrations and seeders β”œβ”€β”€ tests/ # Unit and feature tests └── docker/ # Docker configuration files 

πŸ”§ Development Workflow

Daily Development

# 1. Start the project docker-compose up -d # 2. Start frontend development server (hot reload) docker-compose exec app npm run dev # 3. Watch backend in separate terminal docker-compose logs -f app # 4. Code quality check docker-compose exec app npm run lint docker-compose exec app ./vendor/bin/pint # 5. Run tests docker-compose exec app php artisan test

New Feature Development

# Create migration docker-compose exec app php artisan make:migration create_posts_table # Create model docker-compose exec app php artisan make:model Post # Create controller docker-compose exec app php artisan make:controller PostController # Create React component (manually) # resources/js/components/Post.tsx # Run migration docker-compose exec app php artisan migrate # Test frontend build docker-compose exec app npm run build

Database Operations

# Run migrations docker-compose exec app php artisan migrate # Reset database and seed docker-compose exec app php artisan migrate:fresh --seed # Connect to MySQL shell docker-compose exec db mysql -u laravel -p laravel_db # Use phpMyAdmin (Web interface) # http://localhost:8080 # Username: laravel # Password: laravel # Database backup docker-compose exec db mysqldump -u laravel -p laravel_db > backup.sql

Database/Redis Access Tools

Web-Based:

Terminal/CLI-Based:

# MySQL CLI docker-compose exec db mysql -u laravel -p # Redis CLI docker-compose exec redis redis-cli # Laravel Tinker (for Eloquent testing) docker-compose exec app php artisan tinker

Desktop Clients (Optional):

  • MySQL: TablePlus, Sequel Pro, MySQL Workbench
  • Redis: RedisInsight, Medis
  • Connection: localhost:3306 (MySQL), localhost:6379 (Redis)

🎨 UI Components

The project includes modern and accessible UI components using Radix UI and Tailwind CSS:

  • Avatar
  • Button
  • Checkbox
  • Dialog
  • Dropdown Menu
  • Navigation Menu
  • Select
  • Tooltip
  • Toggle
  • and more...

πŸŒ™ Theme System

The project comes with automatic dark/light mode support. The theme system stores user preferences using localStorage and follows the system theme.

πŸ”„ Inertia.js

This project uses Inertia.js to provide a seamless connection between Laravel backend and React frontend. This enables:

  • SPA-like user experience
  • Server-side routing
  • Shared data management
  • Automatic CSRF protection

πŸš€ Production Deployment

Docker Production Build

# Build production image docker build -t laravel-react-app . # Run production container docker run -d -p 80:80 laravel-react-app # Production with Docker Compose docker-compose -f docker-compose.prod.yml up -d

Manual Production Setup

If you want to deploy without using Docker:

# Production dependencies composer install --optimize-autoloader --no-dev # Frontend production build npm run build # Laravel optimizations php artisan config:cache php artisan route:cache php artisan view:cache # Permissions chmod -R 775 storage bootstrap/cache chown -R www-data:www-data storage bootstrap/cache

πŸ§ͺ Testing

# Laravel unit/feature tests docker-compose exec app php artisan test # Specific test file docker-compose exec app php artisan test tests/Feature/DashboardTest.php # Test with coverage docker-compose exec app php artisan test --coverage # Frontend tests (if you add them) docker-compose exec app npm run test # Browser container for E2E tests docker-compose -f docker-compose.test.yml up -d

πŸ“ API Documentation

For API endpoints and usage examples, you can examine the files in the /routes folder:

  • web.php - Web routes
  • auth.php - Authentication routes
  • settings.php - Settings routes

🀝 Contributing

  1. Fork this repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push your branch (git push origin feature/amazing-feature)
  5. Create a Pull Request

πŸ”§ Troubleshooting

Docker-Related Issues

Container won't start:

# Check container status docker-compose ps # View detailed logs docker-compose logs app # Rebuild container docker-compose down docker-compose up -d --build

Port conflicts:

# Check ports in use lsof -i :8000 lsof -i :3000 # Change ports in docker-compose.yml ports: - "8001:8000" # Use 8001 instead of 8000

Database connection issues:

# Make sure MySQL container is running docker-compose ps db # Test database container connection docker-compose exec app php artisan tinker # >>> DB::connection()->getPdo(); # Connect directly to MySQL (terminal) docker-compose exec db mysql -u laravel -p # Use phpMyAdmin for web interface # http://localhost:8080

Can't access MySQL/Redis ports from browser:

πŸ’‘ Note: MySQL (3306) and Redis (6379) ports are database connection ports, not web interfaces!

  • For database management: http://localhost:8080 (phpMyAdmin)
  • MySQL connection: Only from within the application or database clients
  • Redis connection: Only from within the application or Redis clients

Frontend hot reload not working:

# Run Vite dev server with correct settings docker-compose exec app npm run dev -- --host 0.0.0.0 --port 3000 # Use localhost:3000 in browser

Performance Optimizations

# Use bind mounts instead of Docker volumes (for development) # Keep Composer cache on host volumes: - ~/.composer:/tmp/composer # Mount node modules as volume volumes: - node_modules:/var/www/node_modules

Common Errors

  1. Memory error: Increase memory limit in Docker Desktop (4GB+)
  2. Permission error: Set user IDs inside container
  3. Hot reload not working: Check host setting in Vite config

Log Files

# All container logs docker-compose logs -f # Specific container logs docker-compose logs -f app # Laravel application logs docker-compose exec app tail -f storage/logs/laravel.log # Nginx logs (if using) docker-compose logs -f nginx

πŸ“„ License

This project is licensed under the MIT License. See the LICENSE file for details.

πŸ™ Acknowledgments

This project uses the following open source projects:


🎯 Using as Starter Kit

This project is designed as a template for your new Laravel + React projects:

1. Fork/Clone

git clone <this-repo-url> new-project-name cd new-project-name rm -rf .git git init

2. Customize the Project

# Change project name in composer.json # Update project information in package.json # Edit .env.example according to your project

3. Quick Start

./setup.sh

4. Make Your First Commit

git add . git commit -m "Initial commit from Laravel React Starter Kit" git remote add origin <new-repo-url> git push -u origin main

πŸ’‘ Tip: During development, you only need to use docker-compose up -d and docker-compose exec app npm run dev commands!


About

A modern fullstack starter kit prepared for Docker-based development. Provides fast and consistent development environment by running Laravel and React technologies inside Docker containers.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published