A Tech Founder skill visualization web app that allows users to define and visualize 8 different entrepreneurial skills on an octagonal radar chart to see how well they match with other founders.
- Interactive Octagonal Chart: Display skills on a radar chart with 8 vertices
- Real-time Updates: Adjust skill values with sliders and see immediate visual feedback
- Customizable Skills: Edit skill names and values (1-10 scale)
- Smooth Animations: Transitions and hover effects for better user experience
- Modern Design: Built with Tailwind CSS for responsive and attractive styling
- Quick Presets: Reset, randomize, or maximize all skills with one click
- Persistent Storage: Save and manage multiple skill profiles with Zustand
- React 19: Latest React with modern features
- Vite: Fast build tool with SWC compilation and plugins
- TypeScript: Type-safe development
- Tailwind CSS v4: Modern utility-first CSS framework
- Zustand: Lightweight state management with persistence
- SVG Graphics: Scalable vector graphics for the octagonal chart
- Node.js (v18 or higher)
- npm or yarn
- Install dependencies:
npm install- Start the development server:
npm run dev- Open your browser and navigate to
http://localhost:5173
- View Your Skills: The octagonal chart displays your current skill levels
- Adjust Skills: Use the sliders on the right to modify skill values
- Rename Skills: Click on skill names to edit them
- Quick Actions: Use preset buttons to reset, randomize, or maximize all skills
- Visual Feedback: Watch the skill polygon update in real-time as you make changes
The app comes with 8 default Tech Founder skills:
- Vision - Ability to see the big picture and future opportunities
- Leadership - Capacity to inspire and guide teams effectively
- Technical - Understanding of technology and product development
- Strategy - Skill in planning and executing business strategies
- Sales - Ability to sell products, ideas, and vision to stakeholders
- Networking - Building and maintaining valuable professional relationships
- Resilience - Mental toughness to overcome challenges and setbacks
- Innovation - Creative thinking and ability to disrupt markets
Each skill can be customized both in name and value (1-10 scale).
The app includes custom octagon-themed branding:
- Logo (
/public/logo.svg): Full-size logo with octagonal radar chart design - Favicon (
/public/favicon.svg): Scalable 32x32 favicon for modern browsers - Favicon ICO (
/public/favicon.ico): Legacy format for older browsers - Octagonal Theme: All visual elements follow the 8-sided polygon concept
src/
├── components/
│ ├── SkillOctagon.tsx # Main octagonal chart component
│ └── SkillControls.tsx # Skill adjustment controls
├── types/
│ └── skills.ts # TypeScript types and default data
├── App.tsx # Main app component
└── main.tsx # App entry point
public/
├── logo.svg # App logo with octagonal design
├── favicon.svg # Modern SVG favicon
└── favicon.ico # Legacy ICO favicon
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
This project deploys to GitHub Pages using GitHub Actions.
- Workflow:
.github/workflows/deploy.yml - Environment:
github-pages(required by Pages deploy action) - Artifact: built from
distafternpm run build - Vite base path:
vite.config.tssetsbase: '/skillset-octagon/'so assets resolve correctly when hosted athttps://quotentiroler.github.io/skillset-octagon/.
If you rename the repository or publish to a custom domain, update the base option accordingly.
MIT License files: ['**/*.{ts,tsx}'], extends: [ // Other configs...
// Remove tseslint.configs.recommended and replace with this
tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
tseslint.configs.stylisticTypeChecked,
// Other configs...
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
}, ])
You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
```js
// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Enable lint rules for React
reactX.configs['recommended-typescript'],
// Enable lint rules for React DOM
reactDom.configs.recommended,
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])