A comprehensive Rental Car Management System built with Laravel 10, designed to streamline car rental operations with modern web technologies. This system provides a complete solution for managing rental vehicles, customers, and bookings with an intuitive and user-friendly web interface.
π Multilingual Support: The application is fully localized in French for Tunisia, making it perfect for Tunisian car rental businesses.
π Live Demo: A working demo is currently running and ready to explore! The application includes sample data for cars, clients, and reservations to help you get started quickly.
- Vehicle Management: Add, edit, and manage your fleet of rental vehicles with pricing and availability tracking
- Customer Management: Complete CRUD operations for client information, rental history, and statistics
- Booking System: Process rental bookings and reservations with real-time availability checking
- Dashboard: Administrative dashboard for monitoring operations and key metrics
- Database Management: Built-in phpMyAdmin for database administration
- Smart Pricing: Dynamic pricing calculation based on rental duration and vehicle type
- Email Notifications: Automated confirmation emails for reservations using Laravel Mail
- Search & Filtering: Advanced search capabilities for vehicles and customers with real-time filtering
- Responsive Design: Mobile-friendly interface built with Bootstrap 5
- Data Validation: Comprehensive form validation and error handling
- Real-time Calculations: Live price updates as users select rental dates
- Contract Management: Complete contract lifecycle management from creation to completion
- French Localization: Full French language support with Tunisian-specific terminology
Want to get MrcMS running immediately? Here's the fastest way:
git clone https://github.com/MedTaha4Ever/MrcMS.git
cd MrcMS
cp .env.example .env
composer install
php artisan key:generate
php artisan migrate
php artisan db:seed
php artisan serveThen visit http://localhost:8000 to explore the application with sample data!
- Browse available vehicles with real-time pricing at /cars/available
- Dynamic price calculation based on rental duration
- Advanced filtering by brand, availability, and date ranges
- Detailed car information with specifications and pricing
- Complete CRUD operations for customer management at /admin/clients
- Client statistics and rental history tracking
- Advanced search and filtering capabilities
- Comprehensive client profiles with contact information
- Real-time availability checking and booking
- Automated email confirmations for new reservations
- Complete contract lifecycle from creation to completion
- Contract status management (pending, confirmed, completed)
- Integration between client and vehicle management
- Centralized management interface at /admin
- Vehicle fleet management and pricing control
- Customer relationship management tools
- Contract monitoring and reporting
- French-localized administrative interface
- PHP ^8.1
- Composer
- Node.js & npm/yarn (for frontend assets)
- MySQL 8.0 or SQLite (for database)
- Redis (optional, for caching and sessions)
- Clone the repository:
git clone https://github.com/MedTaha4Ever/MrcMS.git
cd MrcMS- Copy the environment file:
cp .env.example .env- Install PHP dependencies:
composer install- Install JavaScript dependencies:
npm install- Generate application key:
php artisan key:generate- Start the Docker environment:
docker-compose up -d- Run database migrations:
php artisan migrate- Seed the database with sample data (optional):
php artisan db:seed- Build frontend assets:
npm run buildIf you prefer not to use Docker, ensure you have MySQL and Redis running locally, then follow steps 1-5 and 7-9 above, and configure your .env file with your local database credentials.
For a simpler setup without Docker or MySQL, use SQLite:
# Configure for SQLite (simpler setup)
sed -i 's/DB_CONNECTION=mysql/DB_CONNECTION=sqlite/' .env
sed -i 's/DB_DATABASE=.*/DB_DATABASE=database.sqlite/' .env
touch database/database.sqlite
# Then run migrations and seeders
php artisan migrate
php artisan db:seedπ― Note: The current demo uses SQLite for simplicity and portability.
- Main Application: Visit
http://localhost:8000to access the rental management system - Admin Dashboard: Navigate to
/adminfor administrative functions- Default Admin Credentials:
test@example.com/password
- Default Admin Credentials:
- Client Portal: Browse available cars and make reservations through the main interface
- Car Availability: Check real-time car availability and pricing at
/cars/available - Contract Management: Access contract management at
/admin/contracts - phpMyAdmin: Database management interface available at
http://localhost:8080(when using Docker)
π Security Note: Remember to change the default admin credentials in production environments!
- Explore Sample Data: If you ran the database seeder, you'll have sample clients, cars, and reservations ready to explore
- Admin Functions: Use the admin panel at
/adminto manage vehicles, customers, and view contracts - Test Reservations: Try the booking system by browsing available cars at
/cars/availableand making test reservations - Contract Management: Explore the contract system at
/admin/contractsto see the full lifecycle management - Development Mode: Use
npm run devfor hot-reloading during development
π‘ Tip: Start by exploring the admin client management section at
/admin/clientsto see the full CRUD functionality in action!
The application uses Laravel Sail for Docker development. Key configuration files:
docker-compose.yml- Docker services configurationcomposer.json- PHP dependencies and autoloadingpackage.json- JavaScript dependencies and build scripts.env.example- Environment configuration templateconfig/app.php- Application configuration including locale settings
The application is fully localized in French for the Tunisian market:
resources/lang/fr/messages.php- General application messagesresources/lang/fr/validation.php- Form validation messages
- Complete French interface for all admin functions
- Tunisian-specific terminology and formatting
- Date formatting in French locale
- Currency display in Tunisian Dinars (DT)
- French validation messages for forms
To switch back to English, modify the locale setting in config/app.php:
'locale' => 'en', // Change from 'fr' to 'en'To start development with hot-reloading:
npm run devFor production builds:
npm run buildArtisan Commands: Use Laravel's powerful command-line interface:
php artisan list # View all available commandsDatabase Management: Reset and reseed the database:
php artisan migrate:fresh --seedApplication Logs: Monitor application activity:
tail -f storage/logs/laravel.logTesting: Run the test suite:
php artisan test- Models: Located in
app/Models/- Contains Car, Client, Reservation, Marque, and Modele models - Controllers: Located in
app/Http/Controllers/- Handles application logic including ContractController - Views: Located in
resources/views/- Blade templates for the UI with French localization - Routes: Defined in
routes/web.php- Application routing including admin routes - Migrations: Located in
database/migrations/- Database schema with relationship support - Seeders: Located in
database/seeders/- Sample data generation for testing - Localization: Located in
resources/lang/fr/- French translation files
We welcome contributions to improve MrcMS! Here's how you can help:
- Fork the repository on GitHub
- Create a feature branch:
git checkout -b feature/amazing-feature
- Commit your changes:
git commit -m 'Add some amazing feature' - Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request with a clear description of your changes
We appreciate all contributions, whether they're bug fixes, new features, documentation improvements, or suggestions!
If you encounter any issues or have questions:
- π Documentation: Check the Laravel Documentation for framework-specific help
- π Debugging: Review the application logs in
storage/logs/laravel.log - π Bug Reports: Open an issue on GitHub Issues for bug reports or feature requests
- π¬ Questions: Feel free to start a discussion for general questions or suggestions
Common Troubleshooting:
- Database Connection: Ensure your database credentials in
.envare correct - Permission Errors: Make sure
storage/andbootstrap/cache/directories are writable - Missing Dependencies: Run
composer installandnpm installto ensure all dependencies are installed - SQLite Issues: Ensure the
database/database.sqlitefile exists and is writable - Email Configuration: Check your mail settings in
.envfor email notifications to work - French Localization: If translations don't appear, ensure the locale is set to 'fr' in
config/app.php - Contract Issues: Verify that car-model-brand relationships are properly seeded in the database
This project is built on the Laravel framework, which is open-sourced software licensed under the MIT license. By Taha for Multimedia Productions