~/portfolio — jovan@kalyx
Available
// 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 fiziohub68% 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.
*/
// full-stack engineer

Jovan Kitanović

_building software that matters

I design and build modern web applications from concept to production, combining clean architecture with intuitive, high-performance interfaces. Focused on clarity, scalability, and modern, forward-thinking design solutions.

7+ yrs exp
11 projects
avail status
export const contact = 'jovankitanovic.work@gmail.com' ;
// let's build something
// —— stack
JavaScript TypeScript React Node.js PostgreSQL Python
// —— currently building
fiziohub/ 68%

physiotherapy booking platform · in progress

// —— recent activity
pushed to fiziohub · auth module 2d ago
deployed jk-pf · v2 mobile 3d ago
opened PR on synapse 5d ago
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 };

const jovan = {

"Full-stack engineer building reliable software since 2015. Self-taught → Infinitydev → founder of KALYX. Fast learner, independent problem-solver."

}

based in Novi Sad, RS
since 2015
education Singidunum
focus AI · Full-stack
// — Story

2015 · self-taught

Started building. Learning by shipping.

2019 · Infinitydev

Internship. Real teams, real code.

2026 · founded KALYX

My own company. Built to last.

// — what I focus on
AI & prompt eng full-stack web cross-platform SaaS UI/UX
// — languages
Serbian native
English advanced
Spanish beginner
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

// 14 repositories · mixed status
‹ back
📁synapse/◆ web app● private● in progress
Synapse is a web application that provides a curated library of detailed, well-defined starter prompts paired with predefined AI agent architectures. It helps developers move faster by giving them reliable, reusable building blocks instead of starting every prompt from scratch.
ReactTypeScriptViteTailwindCSS
‹ back
📁fiziohub/◆ web app● in progress
FizioHub is a web application built for physiotherapists and fitness trainers, featuring an interactive 3D model of the human body for clear organization of patient and client data. It centralizes client records, progress tracking, and session planning in one clean interface.
ReactTypeScriptNode.jsPostgreSQL
‹ back
📁programmer-tools/◆ web app● in progress
A web application that consolidates a set of everyday utilities for software engineers into a single workspace. It's designed to speed up common development tasks by removing the need to jump between scattered online tools.
ReactTypeScriptViteTailwindCSS
‹ back
📁mini-apps/◆ web app● in progress
A web application that brings multiple small, useful tools together inside a single windowed interface. Each mini-app runs independently, letting users multitask within one efficient workspace.
ReactTypeScriptViteTailwindCSS
‹ back
📁prompt-enhancer/◆ web app● private
A web application for crafting precise, well-structured, and properly formatted prompts for AI models. It guides users through refining rough ideas into polished, effective prompts with reusable templates.
ReactTypeScriptViteTailwindCSS
‹ back
📁jk-pf/◆ website● live
A personal portfolio website built as an interactive IDE-style interface, showcasing professional experience, projects, and skills. Every section is designed to feel like a real code editor, reflecting a full-stack engineering identity.
ViteTypeScriptNode.jsREST
‹ back
📁vk-pf/◆ website● live
A professional portfolio website for a fitness trainer, presenting their experience and a full overview of the services they offer. Clean, focused, and built to convert visitors into booked clients. [PLACEHOLDER — replace with final copy]
ReactTypeScriptViteTailwindCSS
‹ back
📁mp-pf/◆ website● live
A professional portfolio website for a physiotherapist, presenting their work experience, education, and services. It's structured to build trust and make it easy for potential patients to get in touch. [PLACEHOLDER — replace with final copy]
ReactTypeScriptViteTailwindCSS
‹ back
📁kalyx-pf/◆ website● live
The official website of the software company KALYX, offering a detailed overview of its services, technologies, and approach to building software. It communicates the brand's engineering-first philosophy through a clean, modern interface.
ReactTypeScriptNode.jsTailwindCSS
‹ back
📁infinitydev-pf/◆ website● live
The official website of the software company Infinitydev, developed as part of an ongoing business partnership. It presents the company's services, tech stack, and working approach in a polished, professional format. [PLACEHOLDER — replace with final copy]
ReactTypeScriptViteTailwindCSS
‹ back
📁kastrans/◆ web app● live
A web platform for managing transportation logistics and driver scheduling, built to streamline dispatch operations for small to mid-size fleet companies. It brings routes, drivers, and schedules into one organized dashboard. [PLACEHOLDER — replace with final copy]
JavaScriptReactNode.js
‹ back
📁smart-ring-app/◆ mobile app● in progress
A companion mobile application for a smart ring wearable, delivering health metrics, activity tracking, and notification management in a minimal interface. It syncs with the device over BLE to give users a clear, real-time view of their daily health data. [PLACEHOLDER — replace with final copy]
React NativeTypeScriptNode.js
‹ back
📁attendance-board/◆ web app● internal
An internal attendance management and reporting system built for a company. It enables tracking of employee schedules, absences, and daily check-ins, with admin controls for managing records and generating reports. Deployed and used in production within the company's internal infrastructure.
JavaSpring BootAngularPostgreSQL
‹ back
📁bidly/◆ web app● MVP● in progress
Bidly is a web app that pulls EU public procurement tenders from the official TED API, normalises them, and gives each user a filtered daily shortlist based on their country and business sectors, with email digests and calendar reminders for deadlines.
ReactViteNode.jsExpressSupabasePostgreSQL
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}
skills.json tech stack
// —— Languages
primary
JavaScript TypeScript
markup
HTML5 CSS3
other
Python
// —— Frameworks
web
React Angular
mobile
React Native
runtime
Node.js
// —— Styling
utilities
Tailwind CSS
preproc
SCSS
"component-scoped, token-driven"
// —— Tooling
bundlers
Vite
patterns
hooks context lazy loading
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}
// —— Languages
primary
JavaScript TypeScript
markup
HTML5 CSS3
other
Python
// —— Frameworks
web
React Angular
mobile
React Native
runtime
Node.js
// —— Styling
utilities
Tailwind CSS
preproc
SCSS
"component-scoped, token-driven"
// —— Tooling
bundlers
Vite
patterns
hooks context lazy loading
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// ─── send ────────────────────────────────────────────────
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
TERMINAL
~/portfolio $
UTF-8 · TSX
Ln 1