ProfileMatrix to innowacyjne narzędzie do tworzenia i kodowania spersonalizowanych profili zawodowych. Dzięki intuicyjnemu interfejsowi możesz precyzyjnie określić swoje preferencje dotyczące środowiska pracy, stylu komunikacji, zarządzania czasem i wielu innych aspektów życia zawodowego.
Efektem jest unikalny kod - Twoje "DNA Zawodowe" - który w zwięzłej formie przedstawia Twój idealny profil pracy. Ten kod można łatwo udostępniać, analizować lub przechowywać w systemach HR.
- Interaktywny kreator profilu - intuicyjny interfejs z kategoryzowanymi opcjami
- Generowanie kodu DNA Zawodowego - np.
❤️{🎯WP💰;🛡️WE✅}▪📊{📊WS⚡;⏱️WH40} - Zarządzanie segmentami - możliwość dostosowania dostępnych kategorii i opcji
- Kopiowanie do schowka - szybkie udostępnianie wygenerowanego kodu
- Responsywny design - działa na urządzeniach mobilnych i desktopowych
- Estetyczny interfejs - inspirowany terminalem, z nowoczesnym twistem
Poniżej znajdują się przykłady kodów DNA dla różnych profili zawodowych:
❤️{🎯WP💰;🛡️WE✅}▪📊{📊WS⚡;⏱️WH40}▪💼{🏢WLA;💯WC⭐}
Dekodowanie:
- ❤️ Wartości Zawodowe:
- 🎯WP💰: Cel Pracy - Finansowy
- 🛡️WE✅: Etyka Pracy - Uczciwość
- 📊 Ścieżka Zawodowa:
- 📊WS⚡: Styl Pracy - Intensywny
- ⏱️WH40: Godziny Pracy - 40h tygodniowo
- 💼 Środowisko Pracy:
- 🏢WLA: Lokalizacja - Dowolna
- 💯WC⭐: Kultura - Zorientowana na Wyniki
❤️{🎯WP🌍;🛡️WE🤝}▪👥{👥TS🙌;💬CS🙋}▪📊{📊WS💡;⏱️WH30}
Dekodowanie:
- ❤️ Wartości Zawodowe:
- 🎯WP🌍: Cel Pracy - Wpływ Społeczny
- 🛡️WE🤝: Etyka Pracy - Współpraca
- 👥 Zespół:
- 👥TS🙌: Rozmiar Zespołu - Mały
- 💬CS🙋: Styl Komunikacji - Bezpośredni
- 📊 Ścieżka Zawodowa:
- 📊WS💡: Styl Pracy - Kreatywny
- ⏱️WH30: Godziny Pracy - 30h tygodniowo
❤️{🎯WP❤️;🛡️WE📖}▪📊{📊WS📊;⏱️WH45}▪👥{👥TSM;💬CS📝}
Dekodowanie:
- ❤️ Wartości Zawodowe:
- 🎯WP❤️: Cel Pracy - Pasja
- 🛡️WE📖: Etyka Pracy - Standardy
- 📊 Ścieżka Zawodowa:
- 📊WS📊: Styl Pracy - Zorganizowany
- ⏱️WH45: Godziny Pracy - 45h tygodniowo
- 👥 Zespół:
- 👥TSM: Rozmiar Zespołu - Średni
- 💬CS📝: Styl Komunikacji - Formalny
ProfileMatrix znajduje zastosowanie w wielu obszarach związanych z pracą i zarządzaniem:
- Precyzyjne dopasowanie kandydatów do kultury organizacyjnej firmy
- Definiowanie oczekiwań dotyczących stylu pracy dla konkretnych stanowisk
- Tworzenie spójnych ogłoszeń o pracę uwzględniających wszystkie aspekty stanowiska
- Lepsze zrozumienie preferencji nowych pracowników
- Dostosowanie środowiska pracy do indywidualnych potrzeb
- Ułatwienie integracji z zespołem przez identyfikację potencjalnych różnic w stylu pracy
- Mapowanie stylów pracy członków zespołu
- Identyfikacja potencjalnych konfliktów wynikających z różnych preferencji
- Optymalizacja współpracy i podziału zadań w oparciu o profile
- Identyfikacja własnych preferencji zawodowych
- Porównanie aktualnego środowiska pracy z preferowanym
- Ukierunkowanie poszukiwań nowej pracy na firmy o odpowiedniej kulturze
- Zbieranie anonimowych danych o preferencjach zawodowych
- Analiza trendów na rynku pracy w różnych branżach
- Badanie zależności między stylem pracy a produktywnością
- React 18.3 z TypeScript 5.5
- Vite 5.4 - build tool i dev server
- TanStack Query 5 - zarządzanie stanem i cache
- Shadcn UI - system komponentów
- Radix UI - dostępne komponenty bazowe
- Tailwind CSS 3.4 - utility-first CSS
- Tailwind Animate - animacje
- Lucide React - system ikon
- React Hook Form 7 - zarządzanie formularzami
- Zod - walidacja schematów
- @hookform/resolvers - integracja z Zod
- React Router 6 - client-side routing
// Przykład komponentu
export function ProfileSegment({ config, onChange }: ProfileSegmentProps) {
if (!config) return null
return (
<div className="space-y-4">
{/* komponenty */}
</div>
)
}// Przykład interfejsu
interface ProfileSegmentProps {
config: SegmentConfig
onChange: (value: string) => void
}
// Zamiast enum używamy const map
const SEGMENT_TYPES = {
WORK_STYLE: 'work_style',
COMMUNICATION: 'communication'
} as constsrc/
├── components/ # Komponenty React
│ └── ui/ # Komponenty bazowe (Shadcn)
├── data/ # Dane statyczne i konfiguracja
│ ├── segments/ # Definicje segmentów profilu
│ └── temp/ # Dane tymczasowe
├── hooks/ # Custom React hooks
├── lib/ # Utilities i helpers
├── pages/ # Komponenty stron
└── styles/ # Style globalne i motywy
- Używamy funkcyjnych komponentów
- Preferujemy named exports
- Implementujemy early returns
- Stosujemy TypeScript dla wszystkich komponentów
- Mobile-first approach z Tailwind CSS
- Używamy Shadcn UI jako bazy komponentów
- Implementujemy dark mode
- Przestrzegamy zasad dostępności WCAG
- Minimalizujemy użycie lokalnego stanu
- Używamy TanStack Query do cache'owania
- Implementujemy optymistyczne aktualizacje
- Lazy loading dla komponentów stron
- Optymalizacja obrazów przez Vite
- Memoizacja ciężkich komponentów
- Code splitting na poziomie routingu
main- branch produkcyjnydevelop- branch deweloperskifeature/*- nowe funkcjonalnościfix/*- poprawki błędów
- ESLint z konfiguracją TypeScript
- Prettier dla spójnego formatowania
- Husky dla git hooks
- Conventional Commits
- Unit testy z Vitest
- Testy komponentów z React Testing Library
- E2E testy z Playwright
- Testy dostępności z axe-core
- Code splitting (React.lazy)
- Tree shaking przez Vite
- Memoizacja heavy components
- Optymalizacja obrazów
- Prefetching kluczowych zasobów
- Error boundaries dla komponentów
- Centralne logowanie błędów
- Toast notifications dla UX
- Fallback UI components
- Strict CSP headers
- CSRF protection
- Rate limiting
- Input sanitization przez Zod
- Security headers przez Helmet
graph LR
A[Commit] --> B[Tests]
B --> C[Build]
C --> D[Deploy Preview]
D --> E[Production]
- Wszystkie testy przechodzą
- Build produkcyjny jest stabilny
- Audyt bezpieczeństwa npm
- Lighthouse score > 90
- Aktualizacja dokumentacji
- Node.js >= 18
- npm >= 9
# Klonowanie repozytorium
git clone https://github.com/twoj-username/ProfileMatrix.git
# Instalacja zależności
npm install# Development server (http://localhost:5173)
npm run dev
# Build produkcyjny
npm run build
# Build deweloperski
npm run build:dev
# Linting
npm run lint
# Preview buildu
npm run preview# .env.development
VITE_API_URL=http://localhost:3000
VITE_DEBUG=true
# .env.production
VITE_API_URL=https://api.ProfileMatrix.com
VITE_DEBUG=false// src/data/segments/communication-style.ts
import { SegmentConfig } from '@/types/segments'
export const communicationStyleConfig: SegmentConfig = {
id: 'communication-style',
name: 'Styl Komunikacji',
icon: '💬',
options: [
{
id: 'formal',
label: 'Formalny',
value: 'F',
description: 'Preferuje formalne kanały komunikacji'
},
// ... więcej opcji
]
}// src/data/segments/index.ts
import { communicationStyleConfig } from './communication-style'
export const segments = {
communicationStyle: communicationStyleConfig,
// ... inne segmenty
}// src/types/segments.ts
export interface SegmentOption {
id: string
label: string
value: string
description?: string
}
export interface SegmentConfig {
id: string
name: string
icon: string
options: SegmentOption[]
}src/features/new-area/
├── components/ # Komponenty specyficzne dla obszaru
├── hooks/ # Custom hooks
├── types/ # TypeScript types
├── utils/ # Funkcje pomocnicze
└── index.ts # Public API obszaru// src/features/new-area/components/AreaView.tsx
export function AreaView({ config }: AreaViewProps) {
return (
<section className="space-y-4">
<h2 className="text-2xl font-bold">{config.name}</h2>
{/* Komponenty obszaru */}
</section>
)
}// src/pages/new-area.tsx
import { AreaView } from '@/features/new-area'
export default function NewAreaPage() {
return <AreaView config={areaConfig} />
}// src/hooks/useSegmentValue.ts
export function useSegmentValue(segmentId: string) {
const queryClient = useQueryClient()
return useMutation({
mutationFn: updateSegmentValue,
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['segments'] })
}
})
}// src/config/features.ts
export const FEATURES = {
NEW_SEGMENT_UI: process.env.VITE_ENABLE_NEW_SEGMENT_UI === 'true',
BETA_FEATURES: process.env.VITE_ENABLE_BETA === 'true'
}// src/styles/themes/custom-theme.ts
export const customTheme = {
colors: {
primary: {
50: '#f0f9ff',
// ... więcej odcieni
}
},
// ... inne właściwości motywu
}- Każdy nowy obszar w osobnym katalogu w
features/ - Wspólne komponenty w
components/shared/ - Typy i interfejsy w
types/ - Logika biznesowa w
features/
- Komponenty: PascalCase (np.
SegmentSelector.tsx) - Hooki: camelCase z prefix 'use' (np.
useSegmentValue.ts) - Utilities: camelCase (np.
formatSegmentValue.ts)
// src/features/new-area/__tests__/AreaView.test.tsx
import { render, screen } from '@testing-library/react'
describe('AreaView', () => {
it('renders area name correctly', () => {
render(<AreaView config={mockConfig} />)
expect(screen.getByText(mockConfig.name)).toBeInTheDocument()
})
})ProfileMatrix jest projektem open-source, rozwijany z pasją przez społeczność. Twoje wsparcie pomaga nam:
- 🚀 Rozwijać nowe funkcjonalności
- 🛠️ Utrzymywać infrastrukturę
- 📚 Tworzyć dokumentację
- 🐛 Naprawiać błędy
- 🌐 Budować społeczność wokół projektu
Jeśli korzystasz z ProfileMatrix i chcesz wesprzeć jego dalszy rozwój, rozważ kupienie kawy dla twórcy. Każde wsparcie, nawet najmniejsze, ma ogromne znaczenie i motywuje do dalszego rozwijania narzędzia, które pomaga kodować DNA zawodowe.
"Kod DNA wypełniony jest kawą, pasją i wsparciem społeczności."
// src/types/dna-code.ts
export interface DNASegment {
category: string // np. '💼' (praca)
value: string // np. 'O3·C3'
separator: string // np. '|'
}
export interface DNACode {
segments: DNASegment[]
version: string
}// src/lib/dna-generator.ts
export function generateDNACode(selections: ProfileSelections): DNACode {
return {
segments: Object.entries(selections).map(([category, value]) => ({
category: getCategoryEmoji(category),
value: formatSegmentValue(category, value),
separator: ' | '
})),
version: '1.0'
}
}
// Przykład użycia:
// 💼 O3·C3 | 👥 S·D·4 | ⏱️ 40h·9-17·⚡- Zdefiniuj format segmentu w
src/config/dna-formats.ts:
export const DNA_FORMATS = {
workStyle: {
prefix: '💼', // Emoji kategorii
pattern: '[A-Z][0-9]', // Format wartości
separator: '·' // Separator wewnętrzny
}
}- Dodaj parser w
src/lib/dna-parser.ts:
export function parseWorkStyleSegment(value: string): WorkStyleConfig {
const [style, level] = value.split('·')
return {
style: WORK_STYLES[style],
level: parseInt(level)
}
}- Zarejestruj w systemie:
// src/config/dna-registry.ts
export const DNA_SEGMENTS = {
workStyle: {
format: DNA_FORMATS.workStyle,
parser: parseWorkStyleSegment,
validator: validateWorkStyleSegment
}
}// src/lib/dna-validator.ts
export function validateDNACode(code: string): ValidationResult {
const segments = parseDNACode(code)
return segments.reduce((result, segment) => {
const validator = DNA_SEGMENTS[segment.type].validator
return {
...result,
...validator(segment)
}
}, { isValid: true, errors: [] })
}// src/components/DNACodeGenerator.tsx
export function DNACodeGenerator() {
const { data: selections } = useProfileSelections()
const dnaCode = useMemo(() =>
generateDNACode(selections),
[selections]
)
return (
<div className="p-4 bg-secondary rounded-lg">
<h3 className="text-lg font-semibold">Twój Kod DNA</h3>
<pre className="mt-2 p-2 bg-muted">
{formatDNACode(dnaCode)}
</pre>
<CopyButton value={formatDNACode(dnaCode)} />
</div>
)
}ProfileMatrix to dopiero początek. Oto co planujemy w przyszłości:
- Możliwość porównywania profili między sobą
- Wizualizacje danych i wykresy pokazujące rozkład preferencji
- Rekomendacje oparte na analizie podobnych profili
- Integracja z popularnymi systemami ATS i HRIS
- Eksport do różnych formatów (PDF, JSON, integracja z LinkedIn)
- API dla deweloperów chcących zintegrować ProfileMatrix z własnymi aplikacjami
- Rekomendacje oparte na AI dotyczące dopasowania do zespołu/organizacji
- Automatyczne generowanie opisów profilu na podstawie kodu DNA
- Predykcje dotyczące satysfakcji z pracy w określonym środowisku
- Wsparcie dla wielu języków
- Dostosowanie do różnic kulturowych w postrzeganiu pracy
- Profile specyficzne dla różnych regionów i branż
Jesteśmy otwarci na współpracę! Jeśli masz pomysł na ulepszenie ProfileMatrix lub chcesz zgłosić błąd:
- Utwórz issue w repozytorium
- Zaproponuj zmiany poprzez pull request
- Skontaktuj się z nami bezpośrednio: contact@ProfileMatrix.com
Ten projekt jest udostępniany na licencji MIT. Szczegóły znajdziesz w pliku LICENSE.
ProfileMatrix - Odkoduj swój idealny styl pracy
