Stagi.tn is a comprehensive internship management platform designed for the Tunisian market. It connects students, companies, and university supervisors to streamline the internship application and management process.
- Multi-User Platform: Supports students, companies, university supervisors, and company supervisors
- Internship Management: Post, browse, and manage internship opportunities
- Application System: Complete application workflow with cover letters and attachments
- Real-time Communication: Built-in messaging system between all user types
- Advanced Filtering: Search internships by field, company, city, and keywords
- Dashboard Analytics: Role-based dashboards with relevant statistics
- File Management: Support for attachments in applications and messages
- Notification System: Real-time notifications for important events
- Students - Browse internships, apply with cover letters, track applications, communicate with companies
- Companies - Post internships, review applications, manage company supervisors, communicate with students
- University Supervisors - Oversee student progress, monitor applications, communicate with stakeholders
- Company Supervisors - Supervise specific internships, review applications, mentor students
- Laravel 8 - PHP web framework
- PHP 7.3+ or 8.0+ - Server-side language
- MySQL/PostgreSQL - Database
- Laravel Sanctum - API authentication
- Laravel Breeze - Authentication scaffolding
- Pusher - Real-time messaging and notifications
- Laravel Echo - WebSocket client
- Vue.js 3 - Progressive JavaScript framework
- Inertia.js - Modern monolith approach (SPA-like experience)
- Tailwind CSS - Utility-first CSS framework
- Laravel Mix - Asset compilation
- Vuex 4 - State management
- Axios - HTTP client
Before running this application, make sure you have the following installed:
- PHP 7.3+ or 8.0+ with extensions: BCMath, Ctype, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML
- Composer - PHP dependency manager
- Node.js & NPM - For frontend asset compilation
- MySQL/PostgreSQL - Database server
- Pusher Account - For real-time features (optional for development)
git clone <repository-url>
cd stagi.tncomposer installnpm installcp .env.example .env
php artisan key:generateEdit .env file with your database and Pusher credentials:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=stagi_tn
DB_USERNAME=your_username
DB_PASSWORD=your_password
PUSHER_APP_ID=your_pusher_app_id
PUSHER_APP_KEY=your_pusher_key
PUSHER_APP_SECRET=your_pusher_secret
PUSHER_APP_CLUSTER=your_pusher_clusterphp artisan migrate
php artisan db:seedphp artisan storage:linkFor development:
npm run devFor production:
npm run productionphp artisan serveThe application will be available at http://localhost:8000
php artisan test# Run PHP CS Fixer (if configured)
./vendor/bin/php-cs-fixer fix
# Run PHPStan (if configured)
./vendor/bin/phpstan analyse# Create a new migration
php artisan make:migration create_table_name
# Run migrations
php artisan migrate
# Rollback migrations
php artisan migrate:rollback
# Seed database
php artisan db:seedNote: This project is currently running on Laravel 8. Plans are in place to migrate to the latest Laravel version.
When migrating to the latest Laravel version, consider the following:
-
Update Dependencies
- Update Laravel framework version
- Update all packages to compatible versions
- Check for breaking changes in major dependencies
-
Code Updates
- Review deprecated methods and classes
- Update middleware configurations
- Check for changes in authentication system
- Review route definitions
-
Frontend Updates
- Update Inertia.js to latest version
- Update Vue.js and related packages
- Review asset compilation setup
- Update Tailwind CSS configuration
-
Database
- Review migration files for compatibility
- Check for changes in Eloquent ORM
- Update model relationships if needed
-
Testing
- Update test configurations
- Review test methods for compatibility
- Ensure all tests pass after migration
stagi.tn/
├── app/
│ ├── Http/Controllers/ # Application controllers
│ ├── Models/ # Eloquent models
│ ├── Policies/ # Authorization policies
│ └── Notifications/ # Notification classes
├── database/
│ ├── migrations/ # Database migrations
│ ├── seeders/ # Database seeders
│ └── factories/ # Model factories
├── resources/
│ ├── js/
│ │ ├── Pages/ # Vue page components
│ │ ├── Components/ # Reusable Vue components
│ │ └── Layouts/ # Page layouts
│ └── css/ # Stylesheets
├── routes/
│ └── web.php # Web routes
└── tests/ # Application tests
- Fork the repository
- 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
This project is open-sourced software licensed under the MIT license.
For support and questions:
- Create an issue in the repository
- Contact the development team
- Check the documentation in the
.cursor/rules/directory
Built with ❤️ for the Tunisian internship ecosystem