Skip to content

About

demo-version of SkillCollab using Laravel

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

SkillCollab — Demo Version (v0)

⚠️ 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.


What is SkillCollab?

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.

Purpose of This Version

This repository represents the demo / database-design iteration of SkillCollab. The goals of this version were:

  1. Design and validate the full database schema and all model relationships.
  2. Seed the database with realistic data spread across multiple months to test queries, statistics, and pagination.
  3. Build the admin CMS to exercise every model — CRUD, soft deletes, filters, and activity logging.
  4. Confirm that the student-facing flows (join requests, team membership, project participation) behave correctly end-to-end.

Tech Stack

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

Database Overview

Core Models & Tables

Users & Profiles

  • 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 proficiency and years_of_experience

Academic

  • 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

Skills

  • categories — name, slug, soft deletes
  • skills — name, slug, belongs to a category, soft deletes

Teams

  • teams — name, slug, description, logo, leader_id, color, visibility, max_members, last_activity
  • team_members — role (leader / member), joined_at, left_at

Requests

  • team_requests — type (invite / join_request), status (pending / accepted / declined), message

Projects

  • 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

System

  • activity_log — Spatie activity log; tracks admin create / update / delete events with causer and subject

Key Relationships

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)

Seeding

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 --seed

Student-Facing Application

The 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.


What Comes Next

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.

License

This project is for educational and demonstration purposes.

About

demo-version of SkillCollab using Laravel

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages