Profile

    Nikola Ivanović

    Software Engineer and and Technical SEO Specialist crafting elegant solutions at the intersection of design, technology and search. Passionate about building products that make a difference.

    Skills & Technologies

    A curated collection of technologies I work with daily to build exceptional digital experiences.

    React.js
    React.js
    Next.js
    Next.js
    Vue.js
    Vue.js
    Node.js
    Node.js
    Nest.js
    Nest.js
    TypeScript
    TypeScript
    GraphQL
    GraphQL
    Tailwind
    Tailwind
    PostgreSQL
    PostgreSQL
    MongoDB
    MongoDB
    Docker
    Docker
    Vercel
    Vercel

    Services

    Combining deep technical expertise in software engineering with specialized knowledge in Technical SEO to deliver comprehensive digital solutions.

    Full-Stack Development

    Building scalable web applications with modern technologies like React, Node.js, and cloud infrastructure.

    Technical SEO

    Optimizing site architecture, Core Web Vitals, and technical foundations for maximum search visibility.

    Performance Optimization

    Analyzing and improving load times, rendering performance, and user experience metrics.

    Web Architecture

    Designing robust, maintainable systems that scale with your business needs.

    API Development

    Creating efficient RESTful and GraphQL APIs with proper documentation and security.

    SEO Audits & Strategy

    Comprehensive technical audits with actionable roadmaps for organic growth.

    Featured Work

    A selection of projects that showcase my passion for building exceptional digital products.

    PD Vrh Kladovo — Official Website
    Website

    PD Vrh Kladovo — Official Website

    PD Vrh Kladovo is the official web presentation of Planinarsko Društvo Vrh Kladovo and serves as a complete digital hub for the club’s identity, activities, and community life: it introduces who they are and what they stand for, tells their story as a long-standing mountaineering association from Kladovo, and gives visitors a clear path from first impression to active participation through visible navigation to Početna, O nama, Plan, Galerija, and Kontakt pages. The site highlights upcoming hikes and annual activity plans, then goes deep into individual event pages where each tour includes practical details such as location, organizer, route profile, elevation and distance, estimated duration, difficulty level, recommended equipment, weather links, external trail resources, map embeds, and media references, so users can actually prepare for participation instead of reading only promotional text. It also contains a rich multi-year gallery archive with year pages and album pages that document club adventures from different seasons and destinations, with large image collections, album context, trip descriptions, participant information, and visual storytelling that preserves the club’s collective memory and showcases real field experience. Beyond content, the website is clearly made to support discoverability and credibility: it includes complete page metadata, canonical URLs, social sharing previews, automated sitemap coverage for key static and dynamic pages, robots instructions, structured data for organization, website, events, breadcrumbs, and galleries, language and geo signals tied to Kladovo, and a manifest for consistent branding across devices. Visitors can also reach the club directly through a working contact form with clear subject options, making it easy to ask about membership, future tours, beginner questions, equipment advice, partnerships, or media cooperation. In short, this is not a simple brochure page, but a full club platform that combines presentation, planning, event logistics, trip archives, communication, and strong SEO readiness, and it is positioned to be indexed as soon as the domain situation is finalized.

    Next.jsNext.js
    React.jsReact.js
    shadcn/uishadcn/ui
    TypeScriptTypeScript
    TailwindTailwind
    +5
    PWA Hiking Competition App used on Regional Hiking Action - Scan QR Codes on trail and get badges and points with realtime data, notifications and offline mode sync
    Video

    PWA Hiking Competition App used on Regional Hiking Action - Scan QR Codes on trail and get badges and points with realtime data, notifications and offline mode sync

    PWA Hiking Competition App that was used on official regional hiking action organized by the local hiking club that is part of Mountaineering Association of Serbia. After user is authetnicated, user can pick up their team, and they can collect badges and get points in the name of that team. Multiple users can represent one team. User can scan code on trail or enter code manually. After badge is collected, other users will be notified that the other team collected badge, how many points they scored and also they will be notified if leaderboard changed and if other team moved to different place (they will get gold/silver/bronze toast message based on the place they took, or purple one for other places). Also they will get notification if theier team scored. The leaderboard is updating in real-time, and also if app is minimized and other app used on phone more then 5 seconds, when user gets back this is detected and new data is fetched, so that data is always fresh. Also there is refresh button that refreshes all data with cooldown of 30 seonds. Also there is possibility of using the app offline. User needs to refresh the page so all the resources are cached, and the data is saved locally. Also when user turns off mobile data, app detects this and shows indicator that the user is in offline mode, and when user collects the badge in badges section, next to collected badge there is offline indicator that the badge is collected offline. After user gets back online the data is synced and updated. If multiple users collected same badge offline (online this is not possible, because after one team member collects the badge, that badge is unavaible for scanning), the data is synced and updated with best time of collecting the bage (earliest). So if one user collects badge 2 minutes after first user, and is first to go online, that is the timestamp that is going to be saved in the DB, but after other user gets online, the time of collected badge is checked and if this user's time is better then the timestapt in the DB, then its updated with that timestamp. Every badge have specific points and rarity. The calculation and determination of winner and what place the team will take is based on points and the time the badges are collected. There are totally 12 badges and 434 points. There is dark mode and also there is details (trail-info) page about that trail, with description, Wikipedia text, images and stats (height, duration, length, type, difficulty and elevation).

    Next.jsNext.js
    React.jsReact.js
    SupabaseSupabase
    shadcn/uishadcn/ui
    TypeScriptTypeScript
    +3
    National Hiking Day in Serbia Event Page
    Website

    National Hiking Day in Serbia Event Page

    This project is a website for National Hiking Day in Serbia, organized by the Mountaineering Association of Serbia together with a local hiking club. The site provides visitors with a complete overview of the event and the broader value of hiking, featuring an about section on National Hiking Day, detailed information about the prepared trail with a Komoot-recorded route, and practical preparation and safety tips. It also includes galleries with photos from past events and images captured along the trail, offering participants a visual preview of the experience.

    Next.jsNext.js
    React.jsReact.js
    shadcn/uishadcn/ui
    TypeScriptTypeScript
    TailwindTailwind
    +1
    🧑‍🍳 RecipesAI made with Next.js, AI SDK, Tanstack Query, Clerk, Neon, Prisma, TypeScript, shadcn/ui and with PWA support
    App

    🧑‍🍳 RecipesAI made with Next.js, AI SDK, Tanstack Query, Clerk, Neon, Prisma, TypeScript, shadcn/ui and with PWA support

    Authenticated user can generate 4 recipes based on the inputed ingrediants. Newly generated recipes can be viewed and added to multiple collections (default 'Favourites' and newly created ones). User can search and sort through collections and recipes with paginated results. If recipe is unsaved from collection and it is not part of other collections then it is deleted, also when collection is deleted all recipes from that collection that are not part of other collections are deleted.

    Next.jsNext.js
    React.jsReact.js
    AI SDKAI SDK
    Tanstack QueryTanstack Query
    ClerkClerk
    +9

    Have a project in mind?
    Let's talk.

    Whether you need a high-performance web application or want to improve your site's search visibility, I'm here to help bring your vision to life.