// no file open — select one from the explorer
~/portfolio $
node init.js
[✓] loading jovan.config.ts
[✓] resolving dependencies — 'React', 'TypeScript', 'Node.js', 'PostgreSQL'
[✓] experience: 7+ yrs · uptime: '100%' · status: 'available'
[~] currently building fiziohub — 68% complete
[✓] portfolio compiled in 0.42s
~/portfolio $
ready
/*
* Building software
* that matters.
*
* I'm Jovan Kitanovic — I design and engineer
* web applications from concept to production.
* Clean architecture, sharp interfaces.
*/
export const
contact
=
'jovankitanovic.work@gmail.com'
;
// let's build something
1/**
2 * @file about.tsx
3 * @author Jovan Kitanovic
4 * @description Full-Stack Software Engineer — Novi Sad, Serbia.
5 * Self-directed learner since 2015, professional since 2019 —
6 * founded KALYX in 2026. Adaptable, fast-learning, product-focused.
7 */
8import { Story, Principles, Interests } from '@kalyx/types';
9// ─── Story ────────────────────────────────────────────────
10const story: Story = {
11 started: 2015,
12 location: 'Novi Sad, Serbia',
13 origin: 'self-taught → intern at Infinitydev (2019) → founder of KALYX (2026)',
14 approach: 'Adaptable by nature, fast-learning by choice.',
15 mission: 'Close the gap between design and engineering.',
16 currentFocus: 'Growing KALYX — software built to last.',
17};
18// ─── Principles ───────────────────────────────────────────
19const principles: Principles[] = [
20 { rule: 'Build it right, ship it fast.', detail: 'Quality and speed are not opposites.' },
21 { rule: 'Clean architecture is a feature.', detail: 'Future-you will thank present-you.' },
22 { rule: 'UX is everyone\'s responsibility.', detail: 'Good interfaces are invisible.' },
23];
24// ─── Interests ────────────────────────────────────────────
25const interests: Interests = {
26 tech: ['system design', 'dev tooling', 'open source'],
27 outside: ['photography', 'coffee', 'hiking'],
28 reading: ['system design books', 'tech blogs'],
29 learning: ['Rust', 'Web Components'],
30};
31export default { story, principles, interests };
1/**
2 * @file details.tsx
3 * @author Jovan Kitanovic
4 * @description A closer look at the engineer behind the work —
5 * career timeline, primary stack, and what shapes the approach.
6 */
7import { Timeline, Stack, Context } from '@kalyx/types';
8// ─── Timeline ────────────────────────────────────────────
9const timeline: Timeline[] = [
10 { year: 2015, event: 'First line of code — self-directed from day one.' },
11 { year: 2019, event: 'Internship at Infinitydev — first professional environment.' },
12 { year: 2026, event: 'Founded KALYX — turning software craft into a company.' },
13];
14// ─── Primary Stack ───────────────────────────────────────
15const primaryStack: Stack = {
16 frontend: ['React', 'Angular', 'TypeScript', 'Tailwind CSS'],
17 backend: ['Node.js', 'Express', 'Python'],
18 mobile: ['React Native', 'Android'],
19 data: ['PostgreSQL', 'MySQL', 'OWL'],
20};
21// ─── Context ─────────────────────────────────────────────
22const context: Context = {
23 type: 'product-minded full-stack engineer',
24 strengths: ['fast-learning', 'adaptability', 'end-to-end ownership'],
25 builds: ['web apps', 'mobile apps', 'SaaS tools', 'AI products'],
26 location: 'Novi Sad, Serbia',
27 company: 'KALYX',
28};
29export default { timeline, primaryStack, context };
1/**
2 * @file work-philosophy.tsx
3 * How I think about building software.
4 * The principles and rules I carry into every project.
5 */
6import { Principle, Rule } from '@kalyx/types';
7// ─── Principles ───────────────────────────────────────────
8const principles: Principle[] = [
9 {
10 title: 'Architecture is a long-term investment.',
11 detail: 'Shortcuts compound. A clean structure pays dividends every sprint.',
12 },
13 {
14 title: 'Speed and quality are not a trade-off.',
15 detail: 'The fastest path is the one that does not require a rewrite.',
16 },
17 {
18 title: 'The interface is the product.',
19 detail: 'A brilliant backend behind a confusing UI is still a bad product.',
20 },
21 {
22 title: 'Own the full stack, own the outcome.',
23 detail: 'Understanding both sides prevents dead ends and blame games.',
24 },
25];
26// ─── Rules ────────────────────────────────────────────────
27const rules: Rule[] = [
28 { rule: 'Read the requirements twice. Build once.', weight: 'critical' },
29 { rule: 'Name things as if the next reader is future-you.', weight: 'high' },
30 { rule: 'Commit small, ship often, monitor always.', weight: 'high' },
31 { rule: 'Ask: will this still make sense at twice the scale?', weight: 'medium' },
32];
33export default { principles, rules };
1/**
2 * @file interests.tsx
3 * What I think about when I am not writing code — and when I am.
4 */
5import { Focus, Curiosity } from '@kalyx/types';
6// ─── Technical Focus ──────────────────────────────────────
7const technicalFocus: Focus[] = [
8 { area: 'AI Integration & Prompt Engineering', level: 'deep' },
9 { area: 'Developer Tools & Automation', level: 'deep' },
10 { area: 'SaaS Architecture & Platforms', level: 'deep' },
11 { area: 'UI/UX Implementation', level: 'high' },
12 { area: 'Performance Optimization', level: 'high' },
13 { area: 'Statistical Modeling & Predictive Analytics', level: 'growing' },
14];
15// ─── Curiosities ──────────────────────────────────────────
16const curiosities: Curiosity = {
17 building: ['tools that remove friction', 'products that feel instant'],
18 exploring: ['LLM agent design', 'edge rendering', 'design systems'],
19 reading: ['engineering blogs', 'system design case studies'],
20};
21export default { technicalFocus, curiosities };
PROJECTS
// 11 repositories · mixed status
synapse/
● live
fiziohub/
● in progress
An application featuring a 3D model of the human body for physiotherapists and fitness trainers, enabling clear organization of patient and client data.
BodyModel.tsx
— interactive 3D body visualization
654 lines
PatientDashboard.tsx
— client data management
287 lines
README.md
— setup & API docs
76 lines
programmer-tools/
● in progress
A web application that consolidates a set of useful tools for software engineers in one place, aimed at speeding up daily development workflows.
ToolsLayout.tsx
— main shell & tool routing
198 lines
tools.config.json
— tool definitions & metadata
112 lines
Converter.tsx
— format conversion utilities
243 lines
mini-apps/
● in progress
A web application that consolidates multiple useful tools within a single window, enabling more efficient use of workspace.
WindowManager.tsx
— multi-app window system
512 lines
AppRegistry.tsx
— app loader & lifecycle
167 lines
apps.config.json
— registered mini-app definitions
88 lines
body-blue-print/
● live
prompt-enhancer/
● live
jk-pf/
● live
vk-pf/
● live
mp-pf/
● live
kalyx-pf/
● live
infinitydev-pf/
● live
The official website of the software company Infinitydev, developed as part of an ongoing business partnership, with a detailed overview of services, technologies, and approach to work.
App.tsx
— main layout & navigation
261 lines
Technologies.tsx
— tech stack showcase
172 lines
README.md
— partnership & deployment notes
44 lines
fiziohub/● in progress
An application featuring a 3D model of the human body for physiotherapists and fitness trainers, enabling clear organization of patient and client data.
BodyModel.tsx654 lines
PatientDashboard.tsx287 lines
README.md76 lines
programmer-tools/● in progress
A web application that consolidates a set of useful tools for software engineers in one place, aimed at speeding up daily development workflows.
ToolsLayout.tsx198 lines
tools.config.json112 lines
Converter.tsx243 lines
mini-apps/● in progress
A web application that consolidates multiple useful tools within a single window, enabling more efficient use of workspace.
WindowManager.tsx512 lines
AppRegistry.tsx167 lines
apps.config.json88 lines
1{
2 "frontend": {
3 "languages": ["JavaScript", "TypeScript"],
4 "frameworks": ["React", "Angular"],
5 "mobile": ["React Native"],
6 "styling": ["Tailwind CSS", "SCSS"]
7 },
8 "backend": {
9 "languages": ["JavaScript (Node.js)", "Python"],
10 "frameworks": ["Express"]
11 },
12 "databases": {
13 "relational": ["MySQL", "PostgreSQL"],
14 "semantic": ["OWL (Web Ontology Language)"]
15 },
16 "platforms": {
17 "mobile": ["Android"],
18 "cms": ["WordPress"]
19 },
20 "tooling": {
21 "vcs": ["Git", "GitHub", "GitLab"]
22 },
23 "areas_of_focus": [
24 "AI Integration & Prompt Engineering",
25 "Full Stack Web Development",
26 "Cross-Platform Mobile",
27 "Custom Software Solutions",
28 "Portfolio & Brand Websites",
29 "Booking & Scheduling Systems",
30 "SaaS & Web Platforms",
31 "UI/UX Implementation",
32 "Developer Tools & Automation",
33 "Performance Optimization",
34 "Statistical Modeling & Predictive Analytics"
35 ]
36}
1{
2 "languages": {
3 "primary": ["JavaScript", "TypeScript"],
4 "markup": ["HTML5", "CSS3"]
5 },
6 "frameworks": {
7 "web": ["React", "Angular"],
8 "mobile": ["React Native"]
9 },
10 "styling": {
11 "utilities": ["Tailwind CSS"],
12 "preprocessors": ["SCSS"],
13 "approach": "component-scoped, token-driven"
14 },
15 "tooling": {
16 "bundlers": ["Vite"],
17 "patterns": ["hooks", "context", "lazy loading"]
18 }
19}
1{
2 "languages": {
3 "runtime": ["JavaScript (Node.js)"],
4 "scripting": ["Python"]
5 },
6 "frameworks": {
7 "http": ["Express"]
8 },
9 "databases": {
10 "relational": ["PostgreSQL", "MySQL"],
11 "semantic": ["OWL (Web Ontology Language)"]
12 },
13 "patterns": {
14 "api": ["REST"],
15 "arch": ["MVC", "service layer", "middleware"]
16 }
17}
1{
2 "version_control": {
3 "vcs": ["Git"],
4 "hosting": ["GitHub", "GitLab"]
5 },
6 "build": {
7 "bundler": ["Vite"],
8 "package": ["npm"]
9 },
10 "deployment": {
11 "platforms": ["Netlify"]
12 },
13 "environment": {
14 "cms": ["WordPress"],
15 "mobile_platform": ["Android"],
16 "editor": ["VS Code"]
17 }
18}
1/**
2 * @file contact.tsx
3 * Let's build something together.
4 * Fill out the form or reach out directly.
5 */
6const name = 'your name';
7const email = 'your@email.com';
8const subject = 'what is this about?';
9const message = `
10 // what are we building?
11`;
12// ─── direct contact ─────────────────────────────────────
13const links = {
14 email: 'jovankitanovic.work@gmail.com',
15 github: 'github.com/KitanovicJovan',
16 linkedin: 'linkedin.com/in/jovankitanovic',
17 site: 'kitanovicjovan.netlify.app',
18};
19// ─── send ────────────────────────────────────────────────
20send_message();
1# Terms of Use
2Last updated: 2026 · jovankitanovic.work@gmail.com
3## 1. Purpose
4This is a personal portfolio website. Its sole purpose is to
5present the professional work, skills, and contact information
6of Jovan Kitanovic. It is not a commercial product or service.
7## 2. Intellectual Property
8All content on this site — including text, code, design, and
9project descriptions — is the property of Jovan Kitanovic.
10Reproduction or redistribution without permission is not permitted.
11## 3. No Warranty
12This portfolio is provided as-is. While every effort is made
13to keep information accurate and up to date, no warranties
14of any kind are expressed or implied.
15## 4. External Links
16Links to external sites (GitHub, LinkedIn, project demos) are
17provided for reference. I am not responsible for their content
18or availability.
19## 5. Contact
20For questions or concerns, reach out at
21jovankitanovic.work@gmail.com