Blog · Our own site
How we grew projektikuce.rs to 58,000+ visitors a year
Before we built websites for anyone else, we built one for our family's architecture practice. Here is what it does today, measured, what got it there, and what we had to undo along the way.
- By
- Jovan & Branko Milivojević
- Published
- min read
- 9 min read
- SEO
- Next.js
- Content
- Analytics
On this page
Before we built a website for anyone else, we built one for our family. Projektikuce.rs is the Serbian site of CAD ART, the architecture practice our father Boban Milivojević founded more than 33 years ago. It presents house plans, building design and the permit process to people who plan a house in Serbia. We designed it, wrote the code and have done its search work ourselves.
That is why we can show you its analytics. It is our site, our numbers and our mistakes. This post covers what the numbers are, what we think moved them, what we got wrong, and what you can take from it for your own business.
The numbers
All figures come from Vercel Web Analytics for the production site, from 28 September 2025 to 28 September 2026. We round every headline figure down, never up.
The rest of the picture: 72% of visits come from a phone, 364 visitors arrived from ChatGPT answers, and most readers are in Serbia, followed by Bosnia and Herzegovina, Germany, Montenegro and Austria.
The monthly line is steadier than most growth charts you see online. The low point was December, the high point was March, and August was the second-best month of the year. Our reading is that families plan a house over the winter so they can start building when the weather turns. That fits the March peak, but analytics alone can't prove it.
Where we started
CAD ART needed a website that brings in clients. When we asked agencies, we got templates and vague promises: a nice-looking site and no plan for how anyone would find it. So the two of us, architects with a passion for programming, decided to do it ourselves.
In March 2025 Jovan moved the site to Next.js, hosted on Vercel. The content lives in Markdown files that are checked every time the site builds, so a broken page stops the release instead of reaching a visitor. Everything that follows was built on top of that.
We also decided not to publish prices. The cost of a design can differ several times over depending on the type of building, the location and the terrain, and even a "from" price tends to turn the right people away. That decision shaped the article in point 2 below.
What worked
No single trick moved the numbers. Seven decisions, repeated patiently, did.
1. Pages named after real searches
Before we write a page, we list the searches it should answer, in the words people actually type: "projekti kuća" (house plans), "prizemne kuće" (single-story houses), "kuće do 100 m²" (houses up to 100 m²). Each search gets one page, and each page gets one job. The home page targets "projekti kuća", the catalog has its own main term, and the size categories take the longer, more specific searches.
The rule behind it: when two of your pages chase the same search, they compete with each other, and Google picks one for you. We would rather pick.
Pages also point to each other on purpose. Every article links to the house designs it discusses, and each catalog category links back to the articles that answer its questions. A visitor who lands on an article is one click away from a real plan, and Google can see how the topics connect.
2. One honest answer to the most-asked question
Everyone who plans a house asks what the design will cost. CAD ART doesn't publish a price list, because the price depends on the plot, the size of the house and the scope of the documentation. We could have dodged the question. Instead we wrote the most complete answer we could: what drives the price, which documents a building permit needs, and how long each stage takes.
The article opens with five key points, so a reader who only skims still gets the answer. Then it walks through the six things that drive the price, compares two real designs from the catalog (a 120 m² single-story house with a garage and a 212 m² two-story house with four bedrooms), and gives the timelines: 5–10 working days to adapt a ready design, 6–8 weeks for a custom one, and usually 3–5 months from the start of the design to the building permit.
That article, "Koliko košta projekat kuće" (What a house design costs), had 6,000+ readers in 12 months. We keep it on one permanent address and update it, and four older versions with a year in the address now redirect to it. You don't need to publish a price to answer the price question. You need to explain it better than anyone else.
3. City pages that are really about the city
Belgrade, Novi Sad, Niš and Kragujevac each have their own page. They are not one template with the city name swapped in. Each page covers the neighborhoods where people build, the terrain (plots on the slopes around Niš often call for a basement or a stepped house), the climate, what local families ask for, and six questions answered for that city.
Our test is simple. If you can replace the city name and the page still makes sense, it is a doorway page, and it doesn't deserve to rank.
4. Speed on the phone, because that's where people are
72% of visits come from a phone, often on mobile data. Pages are prerendered and served from Vercel's edge network. Images ship as AVIF or WebP in several sizes, with a blurred preview while they load. The main image on each page is never lazy-loaded, so it appears first instead of last.
Small things add up. Re-encoding the home page hero image took it from 271 KB to 172 KB with no visible difference. YouTube videos show a lightweight preview and load the player only when someone presses play.
5. Images that do the selling
For a house, the renders and floor plans are the product. Every image has a file name and alt text that describe what it shows, for example a modern 235 m² house with a garage in Paraćin, seen from the street. The sitemap lists the images together with their pages. And once an image is indexed, we replace it under the same file name instead of inventing a new one, so it keeps its place in image search.
6. Structured data that tells the truth
Structured data helps Google read a page: who the organization is, where a page sits in the site, which questions it answers. It is also easy to abuse. We had product and offer markup on the house plans and removed it, because the bureau publishes no prices. We removed rating markup too, because there were no reviews to show. FAQ markup is built only from questions that are visible on the page.
7. Measure, fix, lock it in
Google Search Console shows which searches find you, which pages get seen but not clicked, and which addresses are broken. We read it, rewrite the titles and descriptions that don't earn clicks, and redirect old addresses that still get visits.
Then we lock each rule in with an automated test, so a later change can't quietly undo it: titles within 60 characters, no prices in structured data, no internal links to pages that don't exist. Lighthouse CI tests key pages on an emulated phone, and a drop below the threshold fails the build.
Mistakes we fixed
Some of the most useful lessons came from things we had to undo.
- Years in URLs. Price articles had 2025 and 2026 in the address, so every new year meant a new URL and links split between versions. They now redirect to one permanent address. Put the year in the title if you must, never in the URL.
- Markup for things we didn't have. Product, offer and rating markup promised rich results. Without real prices and reviews behind it, it was a liability, so it went.
- Titles that were too long. We shortened the page titles that ran long to fit the space Google actually shows, then made the 60-character limit a rule the build enforces.
- Tag pages competing with categories. Thin tag pages chased the same searches as the real categories. Now only four tag pages with real content are indexed, and the rest stay out of Google.
- Old addresses returning 404. Search Console kept finding retired blog category URLs. Each one now redirects to its closest live page.
What the numbers don't say
- Visitors aren't clients. Analytics count people, not inquiries or signed contracts. We keep inquiry numbers private.
- Search takes time. None of this happened in a month. It is the result of steady work, season after season.
- AI search is small but real. 364 visitors from ChatGPT is modest next to Google. Clear answers on well-structured pages are what both reward.
- One site is one site. Your market, your competitors and your customers are different. The method carries over. The exact numbers don't.
What you can apply to your business
You don't need our stack to use any of this. Start here:
- Write down the 20 questions customers ask before they buy. Each good answer can become a page or an article.
- Name pages the way customers search. Search Console, Google's autocomplete and your own inbox tell you the words.
- Answer the price question, even without a price list. Explain what the price depends on, and give ranges if you can.
- Give a city its own page only if you can say something real about it. Otherwise one strong service page beats ten thin copies.
- Test your site on a mid-range phone over mobile data. If the main image takes seconds to appear, compress it before anything else.
- Mark up only what's true. No invented reviews and no prices you don't publish.
- Keep one address per topic. Put the year in the title, not in the URL.
- Connect Google Search Console and read it once a month. It is free, and it tells you what to fix next.
How we do this for clients
This is the work behind the Kvant Partner approach. We plan the site around the searches that matter in your market, design it and build it by hand in Next.js, connect Search Console, analytics and your Google Business Profile, and keep improving it with you after launch. Read the full projektikuce.rs case study, see what our SEO services include, or check the fixed prices and packages.



