ParkIt is a comprehensive web application for parking space management and booking. Think of it as Airbnb for parking spaces - connecting car owners who need parking with homeowners who have available garage space to rent out.
- Users/Drivers: Book parking spaces, manage bookings, view history
- Homeowners/Owners: List garages, manage listings, track earnings
- Administrators: Full system oversight and management
- User Registration & Login with email/phone
- Google OAuth Integration for seamless sign-in
- Password Reset via email with SMTP support
- Session Management with secure authentication
- Role-based Access Control (User, Owner, Admin)
- List Parking Spaces with detailed information
- Image Uploads for garage listings
- Slot-based Booking System with hourly rates
- Real-time Availability checking
- Location & Amenity Details (CCTV, Guard, Indoor/Outdoor)
- Time Slot Selection with conflict prevention
- Date-based Booking with availability calendar
- Vehicle Type Support (Car, Bike, Bicycle)
- Transaction Management with payment tracking
- Booking Confirmation with detailed receipts
- Owner Dashboard with earnings overview
- Booking History for all user types
- Admin Panel for complete system management
- User Management with profile editing capabilities
- Parking List Management with search functionality
- Location-based Search by division and area
- Filter by Amenities (CCTV, Guard, Indoor)
- Price Range Filtering
- Real-time Availability updates
Try the live application: https://parkit-2arc.onrender.com
Note: Hosted on Render's free tier - initial load may take up to 60 seconds if the server is idle.
- Admin Access:
admin@gmail.com/admin123 - Regular User: Sign up with Google or create a new account
Ensure you have the following installed on your system:
| Software | Version | Purpose |
|---|---|---|
| PHP | 8.2+ | Backend runtime |
| Composer | Latest | Dependency management |
| Node.js | 18+ | Frontend build tools |
| Git | Latest | Version control |
Windows:
# Download from https://git-scm.com/download/win
# Run installer with default settingsLinux (Ubuntu/Debian):
sudo apt update && sudo apt install gitmacOS:
# Install via Homebrew
brew install gitWindows:
# Download from https://windows.php.net/download/
# Extract to C:\php and add to PATHLinux (Ubuntu/Debian):
sudo apt update
sudo apt install php8.3 php8.3-cli php8.3-xml php8.3-sqlite3 \
php8.3-mbstring php8.3-curl php8.3-zip php8.3-gdmacOS:
brew install php@8.3# Visit https://getcomposer.org/download/
# Follow installation instructions for your OSWindows:
# Download from https://nodejs.org/en/download/
# Run installer with default settingsLinux (Ubuntu/Debian):
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejsmacOS:
brew install nodegit --version
php -v
composer --version
node -v
npm -vgit clone https://github.com/your-username/ParkIt.git
cd ParkIt# Install PHP dependencies
composer install
# Install Node.js dependencies (optional)
npm install# Copy environment file
cp .env.example .env
# Generate application key
php artisan key:generateOption A: SQLite (Recommended for development)
# Database is already configured in .env
# SQLite file is located at: database/database.sqliteOption B: PostgreSQL (Production)
DB_CONNECTION=pgsql
DB_HOST=your-postgres-host
DB_PORT=5432
DB_DATABASE=your-database-name
DB_USERNAME=your-username
DB_PASSWORD=your-passwordphp artisan migrate# Backend server
php artisan serve
# Access at: http://localhost:8000
# Frontend assets (optional)
npm run dev
# Vite server runs on: http://localhost:5173To enable the forgot password functionality, configure SMTP in your .env file:
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=your-email@gmail.com
MAIL_FROM_NAME="ParkIt"- Visit Google App Passwords
- Generate a new app password
- Use this password (not your regular Gmail password)
- SendGrid: Configure with SendGrid SMTP settings
- Mailgun: Use Mailgun SMTP credentials
- Amazon SES: Set up AWS SES SMTP
php artisan config:cache
php artisan config:clearEnable Google Sign-In for seamless authentication:
- Go to Google Developers Console
- Create a new project or select existing
- Enable Google+ API for your project
- Navigate to Credentials → Create Credentials → OAuth 2.0 Client IDs
- Set Application Type: Web Application
- Authorized JavaScript Origins:
http://localhost:8000 https://your-domain.com - Authorized Redirect URIs:
http://localhost:8000/auth/google/callback https://your-domain.com/auth/google/callback
Add to your .env file:
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
GOOGLE_REDIRECT_URI=http://localhost:8000/auth/google/callback# Clear config cache
php artisan config:clear
# Test Google login at
# http://localhost:8000/signin → "Sign in with Google"# Clear all caches
php artisan cache:clear
php artisan config:clear
php artisan view:clear
php artisan route:clear# Fix storage permissions
sudo chmod -R 775 storage bootstrap/cache
sudo chown -R www-data:www-data storage bootstrap/cache# Ubuntu/Debian
sudo apt install php8.3-mbstring php8.3-xml php8.3-curl \
php8.3-zip php8.3-sqlite3 php8.3-gd
# macOS (Homebrew)
brew install php@8.3# Clear Composer cache
composer clear-cache
composer install --no-cache
# Update dependencies
composer update# Fresh migration ( Deletes all data)
php artisan migrate:fresh
# Reset migrations
php artisan migrate:reset
php artisan migrate# Generate new key
php artisan key:generate# Clear node modules
rm -rf node_modules package-lock.json
npm install
# Build for production
npm run build-
Enable caching in production:
php artisan config:cache php artisan route:cache php artisan view:cache
-
Optimize autoloader:
composer install --optimize-autoloader --no-dev
-
Use PostgreSQL for production instead of SQLite
- Check logs:
storage/logs/laravel.log - Enable debug mode: Set
APP_DEBUG=truein.env - Verify environment: Run
php artisan about - Database connection: Run
php artisan migrate:status
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Commit changes:
git commit -m 'Add feature' - Push to branch:
git push origin feature-name - Submit a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
⭐ Star this repo if you found it helpful!