This is a Laravel + Vue.js application that demonstrates a "Trusted Contacts" feature for managing freelancers in a company's talent pool.
- PHP 8.2+
- Composer
- Node.js 18+
- NPM
-
Clone and Setup
git clone worksome/fullstack-case cd fullstack-case composer install npm install
-
Environment Configuration
cp .env.example .env php artisan key:generate
-
Database Setup
# The project uses SQLite by default touch database/database.sqlite php artisan migrate --seed
-
Build Assets
# For development npm run dev # For production npm run build
-
Start the Application
php artisan serve
-
Access the Application
- Visit:
http://localhost:8000
- The app will display a table of trusted contacts with sample data
- Visit:
In Worksome, clients can add workers as "Trusted Contacts" to their Talent Pool for future hires. This application demonstrates the foundation for such a system and proposes a Notes feature for Trusted Contacts.
- ✅ Trusted Contacts List: Displays freelancers with names, skills, and location
- ✅ Contact Details: Click on any contact to view their profile in a sidebar
- ✅ Clean Data Architecture: Proper Laravel models and relationships
- ✅ Modern Frontend: Vue.js with Tailwind CSS for responsive UI
The Notes feature should allow client users to share internal information on workers in their Talent Pool:
- A note has a relation to the company and the Trusted Contact
- A Trusted Contact can have more than one note
- Company users should be able to create, read, update and delete notes
- The UI should be fully responsive without page reloads
-- Current Tables
companies (id, name, currency, market)
freelancers (id, name, email, currency, market, country, city)
company_freelancer (id, company_id, freelancer_id, skills)
- Company ↔ Freelancer (Many-to-Many via
company_freelancer
) - Freelancer: Has avatar accessor for initials generation
- CompanyFreelancer: Pivot model with skills (JSON array)
- Vue.js 3 with Composition API
- Tailwind CSS for styling
- Component Structure:
TrustedContacts.vue
- Main table viewContactSlider.vue
- Profile sidebar
Please share your thoughts on the following areas for implementing the Notes feature:
- Relations, database schema, types etc.
- Controllers, classes, models, API etc.
- Components, styling, state management, validation, API etc.
You're welcome to share thoughts about related topics in the context of this feature, such as:
- User permissions
- Performance
- Security
- Testing
- Notifications
- UX
- Additional functionality for the feature
- Backend: Laravel 11, PHP 8.2+
- Frontend: Vue.js 3, Tailwind CSS
- Database: SQLite (development), MySQL/PostgreSQL (production)
- Build Tools: Vite
- Styling: Tailwind CSS v4
This application demonstrates modern Laravel development practices with clean architecture, proper relationships, and a responsive Vue.js frontend.