A comprehensive Lost and Found management system built with Laravel 11, designed to help communities track and recover lost items efficiently.
- About
- Features
- Technology Stack
- Installation
- Configuration
- Admin Management
- User Guide
- Admin Guide
- Chat Support System
- Testing
- Deployment
- Contributing
- License
SACLI FOUNDIT is a modern web application that streamlines the process of reporting and finding lost items. The platform provides a user-friendly interface for submitting lost or found items, searching through listings, and connecting with other users through an integrated chat support system.
- Item Submission: Report lost or found items with detailed descriptions and images
- Advanced Search: Search items by category, location, date, and keywords
- User Dashboard: Manage your submitted items and track their status
- Real-time Chat Support: Get help from administrators through live chat
- Email Notifications: Receive updates when your items are verified or resolved
- Responsive Design: Fully optimized for mobile, tablet, and desktop devices
- Separate Admin Portal: Dedicated authentication system with independent sessions
- Item Verification: Review and verify submitted items before they go public
- Category Management: Create and manage item categories
- Statistics Dashboard: View comprehensive analytics and reports
- Chat Management: Respond to user inquiries through the chat system
- Notification System: Receive alerts for new submissions and chat messages
- Bulk Operations: Efficiently manage multiple items at once
- Backend: Laravel 11 (PHP 8.2+)
- Frontend: Blade Templates, Alpine.js, Tailwind CSS
- Database: MySQL/MariaDB
- Authentication: Laravel Breeze with Multi-Guard Authentication
- Real-time Features: AJAX Polling for chat and notifications
- Email: Laravel Mail with queue support
- File Storage: Laravel Storage (local/S3)
- Testing: Pest PHP
- PHP 8.2 or higher
- Composer
- Node.js 18+ and NPM
- MySQL 8.0+ or MariaDB 10.3+
- Git
git clone <repository-url>
cd sacli-foundit# Install PHP dependencies
composer install
# Install JavaScript dependencies
npm install# Copy the environment file
cp .env.example .env
# Generate application key
php artisan key:generateEdit the .env file with your database credentials:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=sacli_foundit
DB_USERNAME=your_username
DB_PASSWORD=your_password# Run database migrations
php artisan migrate
# (Optional) Seed the database with sample data
php artisan db:seed# Create symbolic link for storage
php artisan storage:link# Build frontend assets
npm run build
# Or for development with hot reload
npm run dev# Start the development server
php artisan serveThe application will be available at http://localhost:8000
Configure your mail settings in .env:
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@saclifoundit.com
MAIL_FROM_NAME="${APP_NAME}"For production, configure a queue driver:
QUEUE_CONNECTION=databaseRun the queue worker:
php artisan queue:workConfigure upload limits in php.ini:
upload_max_filesize = 10M
post_max_size = 10MSACLI FOUNDIT uses a separate admin authentication system. Admins are managed through Artisan commands.
php artisan admin:createYou'll be prompted to enter:
- Name
- Email address
- Password
Example:
php artisan admin:create
Name:
> John Admin
Email:
> admin@example.com
Password:
> ********
Admin created successfully!php artisan admin:listThis displays all admin accounts with their IDs, names, and email addresses.
php artisan admin:deleteYou'll be prompted to enter the admin's email address to delete.
Admins access the system through a separate login portal:
- Navigate to
/admin/login - Enter your admin credentials
- Access the admin dashboard at
/admin/dashboard
Important: Admin sessions are completely separate from user sessions. You can be logged in as both an admin and a regular user simultaneously without conflicts.
- Click "Register" on the homepage
- Fill in your details (name, email, password, course, year)
- Verify your email address (if email verification is enabled)
- Log in to access your dashboard
- Log in to your account
- Click "Submit Item" or navigate to
/items/create - Select item type (Lost or Found)
- Choose a category
- Fill in item details:
- Title
- Description
- Location
- Date occurred
- Contact information
- Upload up to 5 images
- Submit for admin verification
- Use the search bar on the homepage
- Filter by:
- Item type (Lost/Found)
- Category
- Location
- Date range
- Keywords
- Browse results and click for details
- Contact the submitter if you find a match
- Click the chat icon (bottom right) while logged in
- Type your message and press Enter
- Wait for an admin response
- View chat history anytime by clicking the chat icon
The admin dashboard provides:
- Total items count
- Pending items requiring verification
- Verified items count
- Monthly statistics
- Category breakdown
- Recent items list
- Items requiring attention (pending > 7 days)
- Navigate to "Pending Items"
- Review item details and images
- Click "Verify" to approve or "Reject" to decline
- Add optional notes when rejecting
- User receives email notification of the decision
- Go to "Categories" in admin navigation
- View existing categories with item counts
- Create new categories with name and description
- Edit or delete categories as needed
- Categories are used for organizing items
Access comprehensive analytics:
- Items by status (pending, verified, resolved, rejected)
- Items by type (lost vs found)
- Items by category
- Submission trends over time
- User activity metrics
- Navigate to "Chat Support" in admin menu
- View all active chat sessions
- See unread message indicators
- Click a session to view conversation
- Type responses and send to users
- Messages update in real-time via polling
Admins receive notifications for:
- New item submissions
- New chat messages from users
- Pending queue alerts (items waiting > 24 hours)
- System events
Managing Notifications:
- Click the bell icon in admin header
- View recent notifications
- Click to view details or mark as read
- Access full notification history at
/admin/notifications/page
Notification Preferences: Admins can customize which notifications they receive (feature coming soon).
The chat system uses AJAX polling to provide near-real-time communication:
-
User Side:
- Users click the chat widget to open the interface
- Messages are sent via AJAX POST requests
- New messages are fetched every 3-5 seconds
- Unread count updates automatically
-
Admin Side:
- Admins see all chat sessions in the Chat Support dashboard
- Sessions show user info and unread message counts
- Clicking a session opens the conversation
- Admins can respond directly in the interface
- New user messages trigger notifications
-
Technical Details:
- Messages stored in
chat_messagestable - Sessions tracked in
chat_sessionstable - Polymorphic relationships support both user and admin senders
- Read receipts track when messages are viewed
- Messages stored in
# Run all tests
php artisan test
# Run specific test suite
php artisan test --testsuite=Feature
# Run specific test file
php artisan test --filter=AdminAuthenticationTest
# Run with coverage
php artisan test --coverage- Feature Tests: End-to-end functionality tests
- Unit Tests: Individual component tests
- Browser Tests: (Optional) Dusk tests for UI
- User authentication and registration
- Admin authentication (separate guard)
- Item submission workflow
- Search functionality
- Chat system
- Notification system
- Admin verification workflow
-
Environment:
APP_ENV=production APP_DEBUG=false APP_URL=https://yourdomain.com
-
Optimize Application:
php artisan config:cache php artisan route:cache php artisan view:cache composer install --optimize-autoloader --no-dev
-
Database:
- Run migrations:
php artisan migrate --force - Backup database regularly
- Run migrations:
-
Queue Worker:
- Set up supervisor to run queue worker
- Configure
QUEUE_CONNECTION=databaseorredis
-
Cron Jobs: Add to crontab:
* * * * * cd /path-to-app && php artisan schedule:run >> /dev/null 2>&1
-
File Permissions:
chmod -R 775 storage bootstrap/cache chown -R www-data:www-data storage bootstrap/cache
-
SSL Certificate:
- Install SSL certificate (Let's Encrypt recommended)
- Force HTTPS in production
-
Monitoring:
- Set up error logging (Sentry, Bugsnag, etc.)
- Monitor queue jobs
- Set up uptime monitoring
The application uses Laravel's multi-guard authentication:
-
Web Guard: For regular users
- Uses
userstable - Session-based authentication
- Routes:
/login,/register,/dashboard
- Uses
-
Admin Guard: For administrators
- Uses
adminstable - Separate session management
- Routes:
/admin/login,/admin/dashboard - Middleware:
admin(checks admin guard)
- Uses
app/
├── Console/Commands/ # Artisan commands (admin management)
├── Http/
│ ├── Controllers/
│ │ ├── Admin/ # Admin controllers
│ │ └── ... # User controllers
│ └── Middleware/ # Custom middleware
├── Models/ # Eloquent models
├── Notifications/ # Email/database notifications
├── Repositories/ # Data access layer
└── Services/ # Business logic layer
resources/
├── views/
│ ├── admin/ # Admin views
│ ├── auth/ # Authentication views
│ ├── chat/ # Chat interface
│ ├── items/ # Item management
│ └── public/ # Public pages
database/
├── migrations/ # Database migrations
├── factories/ # Model factories
└── seeders/ # Database seeders
Issue: "Class not found" errors
composer dump-autoloadIssue: Permission denied on storage
chmod -R 775 storage bootstrap/cacheIssue: Assets not loading
npm run build
php artisan storage:linkIssue: Queue jobs not processing
php artisan queue:work --tries=3Issue: Admin can't log in
- Verify admin exists:
php artisan admin:list - Create new admin:
php artisan admin:create - Check database connection
Contributions are welcome! Please follow these guidelines:
- 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
- Follow PSR-12 coding standards
- Write tests for new features
- Update documentation as needed
- Use meaningful commit messages
If you discover a security vulnerability, please email security@saclifoundit.com. All security vulnerabilities will be promptly addressed.
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Email: support@saclifoundit.com
- Documentation: [Link to docs]
- Issues: [GitHub Issues]
Built with:
- Laravel - The PHP Framework
- Tailwind CSS - Utility-first CSS framework
- Alpine.js - Lightweight JavaScript framework
- Heroicons - Beautiful hand-crafted SVG icons
Version: 1.0.0
Last Updated: November 2025