A small but modern web application for managing and showcasing research projects at the Computational and Experimental Mechanics (CEM) Division of Eindhoven University of Technology. The portal enables students to discover available bachelor thesis projects and master thesis projects, while providing administrators and supervisors with powerful tools to manage projects and track their status.
- Project Browsing: Browse available research projects with filtering by:
- Project type (Bachelor Thesis, Master Thesis)
- Research nature (Experimental, Numerical, etc.)
- Research section/group
- Focus areas (Metals, Steel, 3D printing, Meta materials, etc.)
- Supervisor
- Company involvement
- Project Details: View detailed information about each project, including descriptions, supervisors, and contact information
- Past Projects: Archive of completed projects
- Contact: Information about the CEM Division and project inquiries
- Project Management: Create, edit, and manage projects with rich content editing
- User Management: Manage administrators and supervisors with role-based permissions
- Tag Management: Organize projects with categorized tags (Group, Nature, Focus)
- Organization Management: Track external organizations/companies associated with projects
- Section & Group Management: Organize the division structure
- Project Status Tracking: Track which projects are available or taken (assigned to students)
- Framework: Laravel 12
- Admin Panel: Filament 4
- Frontend: Tailwind CSS 4
- Build Tool: Vite
- PHP Version: 8.2+
- PHP 8.2 or higher
- Composer
- Node.js and npm
- MySQL/PostgreSQL/SQLite database
- Web server (Apache/Nginx) or PHP built-in server
-
Clone the repository
git clone <repository-url> cd projects-portal
-
Install dependencies
composer install npm install
-
Configure environment
cp .env.example .env php artisan key:generate
-
Configure database
Edit
.envfile with your database credentials:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=projects_portal DB_USERNAME=your_username DB_PASSWORD=your_password
-
Run migrations and seeders
php artisan migrate php artisan db:seed
-
Build assets
npm run build
-
Create storage link
php artisan storage:link
The project includes a convenient development script that runs all necessary services:
composer run devThis starts:
- Laravel development server
- Queue worker
- Log viewer (Pail)
- Vite dev server (hot reload)
If you prefer to run services individually:
# Terminal 1: Laravel server
php artisan serve
# Terminal 2: Queue worker (if using queues)
php artisan queue:work
# Terminal 3: Asset compilation
npm run dev# Run migrations
php artisan migrate
# Run seeders (if available)
php artisan db:seed
# Refresh database
php artisan migrate:fresh --seedRun the test suite using Pest:
composer run testOr directly:
php artisan testprojects-portal/
├── app/
│ ├── Filament/ # Filament admin panel resources
│ │ ├── Resources/ # CRUD resources (Projects, Users, Tags, etc.)
│ │ └── Widgets/ # Dashboard widgets
│ ├── Http/
│ │ └── Controllers/ # Web controllers
│ ├── Livewire/ # Livewire components
│ ├── Models/ # Eloquent models
│ └── Policies/ # Authorization policies
├── database/
│ ├── migrations/ # Database migrations
│ └── seeders/ # Database seeders
├── public/ # Public assets and entry point
├── resources/
│ ├── views/ # Blade templates
│ ├── css/ # Stylesheets
│ └── js/ # JavaScript files
└── routes/
└── web.php # Web routes
The application uses Spatie Laravel Permission for role-based access control.
- Administrator: Full access to all features and resources
- Staff member - supervisor: Can create and update projects; manage organizations
- Researcher: Can create and update projects; manage organizations
- Projects can have a project owner (who created the project)
- Projects can have multiple supervisors (with order ranking)
- Supervisors and Researchers can manage projects where they are the owner; Supervisors can also manage projects they supervise
Projects can be one of the following types:
- Bachelor Thesis: Bachelor's degree thesis projects
- Master Thesis: Master's degree thesis projects
Projects can be tagged with multiple tags from three categories:
- Group: Research groups/sections (e.g., associated with specific professors)
- Nature: Research methodology (Experimental, Numerical, etc.)
- Focus: Research focus areas (Metals, Steel, 3D printing, Meta materials, etc.)
- Primary Color:
#7fabc9 - Framework: Tailwind CSS v4
- Theme: Light mode only
- Typography: Inter font family
This project is open-sourced software licensed under the MIT license.
Contributions are welcome! Please feel free to submit a Pull Request.
For questions about the CEM Projects Portal or project inquiries, please visit the contact page or reach out to the Computational and Experimental Mechanics Division at Eindhoven University of Technology. Repo owner can be contacted for technical matters: @Rozenlicht. (Bart Verhaegh)
Built with ❤️ for the CEM Division at Eindhoven University of Technology