⚠️ This is the demo/database-design version of SkillCollab. Its primary purpose was to validate the database schema, relationships, and core admin workflows before hopefully building the real product. A full, polished version of the platform is planned and will be released separately.
SkillCollab is a platform designed to connect students through shared skills, collaborative teams, and projects. Students can showcase personal projects, join or form teams, and work together on team projects — all organized around a rich skill and specialization system.
The platform has two sides:
- Student-facing web app — where students register, build their profiles, browse teams, submit join requests, and manage their projects.
- Admin CMS dashboard — where administrators manage universities, specializations, skills, students, teams, projects, and requests through a full-featured back-office interface.
This repository represents the demo / database-design iteration of SkillCollab. The goals of this version were:
- Design and validate the full database schema and all model relationships.
- Seed the database with realistic data spread across multiple months to test queries, statistics, and pagination.
- Build the admin CMS to exercise every model — CRUD, soft deletes, filters, and activity logging.
- Confirm that the student-facing flows (join requests, team membership, project participation) behave correctly end-to-end.
| Layer | Technology |
|---|---|
| Framework | Laravel (PHP) |
| Frontend (CMS) | Blade templates, Tabler UI, Bootstrap 4 |
| Charts | C3.js / D3.js |
| JS utilities | Axios, SweetAlert2, Select2, Toastr, RequireJS |
| Activity Logging | Spatie Laravel Activity Log |
| Database | MySQL (with soft deletes on key models) |
| Auth | Laravel Breeze |
- users —
username,email,role(admin / student),is_active,last_login_at - profiles —
bio,profile_photo,slug— one-to-one with users - profile_skills — pivot: profiles ↔ skills with
proficiencyandyears_of_experience
- universities —
name,city,established_at, soft deletes - specializations —
name, soft deletes - student_education — links a user to a university, specialization, education level, and graduation date
- categories —
name,slug, soft deletes - skills —
name,slug, belongs to a category, soft deletes
- teams —
name,slug,description,logo,leader_id,color,visibility,max_members,last_activity - team_members —
role(leader / member),joined_at,left_at
- team_requests —
type(invite / join_request),status(pending / accepted / declined),message
- personal_projects — owned by a single student; has
title,description,github_url,live_url - personal_project_skills — pivot: personal projects ↔ skills
- team_projects — owned by a team; has
status(active / completed),progress,completed_at, soft deletes - team_project_skills — pivot: team projects ↔ skills
- team_project_users — pivot: team projects ↔ users with
role(leader / contributor),joined_at,left_at
- activity_log — Spatie activity log; tracks admin create / update / delete events with causer and subject
User ──────────────► Profile (1:1)
User ──────────────► StudentEducation (1:1)
StudentEducation ──► University (N:1)
StudentEducation ──► Specialization (N:1)
User ──────────────► TeamMember (1:1 active)
TeamMember ────────► Team (N:1)
Team ──────────────► TeamProject (1:N)
TeamProject ───────► TeamProjectUser (participants)
User ──────────────► PersonalProject (1:N)
PersonalProject ───► Skills (N:M)
TeamProject ───────► Skills (N:M)
Profile ───────────► Skills (N:M) [with proficiency + years_of_experience]
Team ──────────────► TeamRequest (1:N)
User ──────────────► TeamRequest as sender (1:N)
User ──────────────► TeamRequest as receiver (1:N)
The database is seeded with data distributed across January–April 2026 to simulate realistic growth over time.
| Seeder | What it creates |
|---|---|
SetupSeeder |
Admin user (admin@email.com / testadmin123) |
UniversitySeeder |
19 universities across Palestinian cities |
SpecializationSeeder |
32 specializations |
CategorySeeder |
12 categories, each with 1–3 skills |
UserSeeder |
49 student accounts with profiles, education, and skills |
TeamSeeder |
10 teams with leaders and members |
TeamProjectSeeder |
10 team projects with participants and skills |
PersonalProjectSeeder |
Personal projects for ~49 students |
TeamRequestSeeder |
37 join requests from students to teams |
Run all seeders:
php artisan migrate:fresh --seedThe student side of SkillCollab allows registered users to:
- Build a profile with bio, photo, and skills.
- Browse and search teams by name or skill.
- Send join requests to teams (with an optional message).
- Accept or decline team invites from team leaders.
- Create and manage personal projects with linked skills.
- Participate in team projects as a leader or contributor.
- View other students' profiles.
The student application routes and views are separate from the CMS and are not detailed here, as this demo version focuses primarily on validating the data layer and admin tooling.
This demo confirmed the core data model works. The real version of SkillCollab will include:
- A fully designed, production-ready student UI.
- Real-time notifications for team requests and invites.
- Advanced team and student discovery with skill-based matching.
- A proper authentication flow with email verification.
- File storage via cloud (S3 or equivalent).
- API layer for potential mobile clients.
- Comprehensive test suite.
- CI/CD pipeline and production deployment configuration.
This project is for educational and demonstration purposes.