<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rasim Kılıç</title>
    <description>The latest articles on DEV Community by Rasim Kılıç (@gemlikrehberi).</description>
    <link>https://dev.to/gemlikrehberi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4225057%2Fc1507fdd-ba72-4113-9aad-bcdcd325d4e6.png</url>
      <title>DEV Community: Rasim Kılıç</title>
      <link>https://dev.to/gemlikrehberi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gemlikrehberi"/>
    <language>en</language>
    <item>
      <title>What a small-town city guide actually needs: lessons from running Gemlik Rehberi since 2003</title>
      <dc:creator>Rasim Kılıç</dc:creator>
      <pubDate>Tue, 03 Nov 2026 22:19:57 +0000</pubDate>
      <link>https://dev.to/gemlikrehberi/what-a-small-town-city-guide-actually-needs-lessons-from-running-gemlik-rehberi-since-2003-3425</link>
      <guid>https://dev.to/gemlikrehberi/what-a-small-town-city-guide-actually-needs-lessons-from-running-gemlik-rehberi-since-2003-3425</guid>
      <description>&lt;p&gt;Gemlik is a coastal district of Bursa, on a bay of the Sea of Marmara. &lt;a href="https://gemlikrehberi.com" rel="noopener noreferrer"&gt;Gemlik Rehberi&lt;/a&gt; ("Gemlik Guide") has been its local guide since 2003. It started as a business directory. Today it lists 990 businesses across 34 neighbourhoods, and it also has local news, a forum and a handful of small tools that residents use every day.&lt;/p&gt;

&lt;p&gt;This post is about what 23 years of running a site for one town taught us: what people actually come for, and what we would build first if we started again.&lt;/p&gt;

&lt;h2&gt;
  
  
  People come for the boring questions
&lt;/h2&gt;

&lt;p&gt;We assumed people would come for news and articles. They mostly come with short, practical questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which pharmacy is on duty tonight?&lt;/li&gt;
&lt;li&gt;Is there a power or water cut today?&lt;/li&gt;
&lt;li&gt;Is a zoning plan on public display for my neighbourhood, and how long do I have to object?&lt;/li&gt;
&lt;li&gt;How do I check my water bill or property tax?&lt;/li&gt;
&lt;li&gt;What's the weather, and what does fuel cost today?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these is a big feature. Each one is a reason to open the site &lt;em&gt;today&lt;/em&gt;, and together they bring people back every day. So the homepage does not start with the latest articles. It starts with a short "today in Gemlik" summary:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Why it matters locally&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://gemlikrehberi.com/nobetci-eczaneler" rel="noopener noreferrer"&gt;Pharmacy on duty&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;It changes every night, and people look it up in a hurry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zoning plan notices&lt;/td&gt;
&lt;td&gt;The objection window is limited, so we show the days left&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Planned outages&lt;/td&gt;
&lt;td&gt;Power and water cuts affect shops and homes the same day&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Death notices&lt;/td&gt;
&lt;td&gt;In a small town, this is how people hear about funerals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weather, fuel prices, prayer times&lt;/td&gt;
&lt;td&gt;Small, daily and checked often&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Turn official notices into one sentence
&lt;/h2&gt;

&lt;p&gt;Official notices are usually a PDF or a scanned page on an institution's website. Most residents never open them. We found that the most useful thing we could do was rewrite each notice as one line that answers "does this affect me?".&lt;/p&gt;

&lt;p&gt;Instead of a link titled "Plan amendment announcement", the summary reads: &lt;em&gt;Kurşunlu: plan change, 10 days left to object.&lt;/em&gt; The full notice is one click away on the &lt;a href="https://gemlikrehberi.com/duyurular" rel="noopener noreferrer"&gt;announcements page&lt;/a&gt;, but most people only need the sentence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Put numbers next to their source
&lt;/h2&gt;

&lt;p&gt;The homepage shows a small housing ticker based on Central Bank of the Republic of Turkey (TCMB) data. For example, Bursa's average sale price was 42,675 TL per m² in the third quarter of 2026, up 23.8% year on year. Every figure carries its period, because a number without a date is easy to misread when prices rise this fast. For anyone who wants a figure for their own home, we link to a free &lt;a href="https://www.acilden.com/evim-ne-eder.php" rel="noopener noreferrer"&gt;home value estimator&lt;/a&gt; that uses the same data.&lt;/p&gt;

&lt;h2&gt;
  
  
  A directory is only useful if it is current
&lt;/h2&gt;

&lt;p&gt;A wrong phone number is worse than no phone number: the user calls, it fails, and they stop trusting the whole site. So we treat missing and outdated data as tasks. The admin dashboard lists them, for example "75 businesses have no phone number", and they get fixed one by one. Business owners can also &lt;a href="https://gemlikrehberi.com/firma-ekle" rel="noopener noreferrer"&gt;add or update their own listing&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Write guides that don't go stale
&lt;/h2&gt;

&lt;p&gt;Fees, dates and phone numbers change every year. A guide full of them is out of date within months. Our newer guides explain &lt;em&gt;where to go and whom to ask&lt;/em&gt; instead. For example, the &lt;a href="https://gemlikrehberi.com/gemlik-borc-sorgulama" rel="noopener noreferrer"&gt;bill and debt check guide&lt;/a&gt; brings together where to check water, property tax, traffic fines, vehicle tax, electricity and gas, and points to the official channels instead of copying their numbers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we'd tell anyone building a local site
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start with the daily questions&lt;/strong&gt;, not with content. The duty pharmacy brings more repeat visits than any article.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Summarise official notices in plain words&lt;/strong&gt; and link to the original.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Show the date and source of every number.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Treat missing data as a to-do list&lt;/strong&gt;, not as something to hide.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer guides that explain the process&lt;/strong&gt; over guides that list this year's fees.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The site is in Turkish: &lt;a href="https://gemlikrehberi.com" rel="noopener noreferrer"&gt;gemlikrehberi.com&lt;/a&gt;. If you run a local or city site anywhere, I'd like to hear which small feature brings people back to yours.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>community</category>
      <category>opendata</category>
    </item>
    <item>
      <title>Building a free home value estimator for 81 Turkish provinces with central bank data</title>
      <dc:creator>Rasim Kılıç</dc:creator>
      <pubDate>Tue, 03 Nov 2026 22:11:00 +0000</pubDate>
      <link>https://dev.to/gemlikrehberi/building-a-free-home-value-estimator-for-81-turkish-provinces-with-central-bank-data-4p8o</link>
      <guid>https://dev.to/gemlikrehberi/building-a-free-home-value-estimator-for-81-turkish-provinces-with-central-bank-data-4p8o</guid>
      <description>&lt;p&gt;Ask any homeowner in Turkey what their flat is worth and you will usually get a number someone heard from a neighbour. Listing sites show asking prices, which are often wishful. Official statistics exist, but they are spread across several publications and few people know how to read them.&lt;/p&gt;

&lt;p&gt;We run &lt;a href="https://www.acilden.com" rel="noopener noreferrer"&gt;Acilden&lt;/a&gt;, a property listing site, and we wanted a tool that answers "what is my home worth?" for any province in Turkey without asking the user to sign up. The result is &lt;strong&gt;&lt;a href="https://www.acilden.com/evim-ne-eder.php" rel="noopener noreferrer"&gt;Evim ne eder? (What is my home worth?)&lt;/a&gt;&lt;/strong&gt;. This post is about the data behind it and a few decisions that turned out to matter more than the code.&lt;/p&gt;

&lt;h2&gt;
  
  
  The data sources
&lt;/h2&gt;

&lt;p&gt;There is no single public dataset that gives you a reliable price per square metre for every province. We ended up combining four:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;What it gives&lt;/th&gt;
&lt;th&gt;Granularity&lt;/th&gt;
&lt;th&gt;Frequency&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;TCMB housing unit price&lt;/td&gt;
&lt;td&gt;TL per m² for sale&lt;/td&gt;
&lt;td&gt;province&lt;/td&gt;
&lt;td&gt;quarterly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TCMB housing unit rent&lt;/td&gt;
&lt;td&gt;TL per m² per month&lt;/td&gt;
&lt;td&gt;province&lt;/td&gt;
&lt;td&gt;quarterly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TCMB House Price Index and new-tenant rent index&lt;/td&gt;
&lt;td&gt;index value&lt;/td&gt;
&lt;td&gt;region (NUTS-2, e.g. TR41 = Bursa, Eskişehir, Bilecik)&lt;/td&gt;
&lt;td&gt;monthly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TÜİK house sales&lt;/td&gt;
&lt;td&gt;number of sales, total and mortgaged&lt;/td&gt;
&lt;td&gt;province&lt;/td&gt;
&lt;td&gt;monthly&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The Central Bank of the Republic of Turkey (TCMB) publishes these through its EVDS data service. Two things surprised us:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Province-level unit prices are not available for every province every quarter.&lt;/strong&gt; In the third quarter of 2026, 76 of the 81 provinces had a published unit price. The UI has to say so, instead of silently falling back to something else.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The monthly index is regional, not provincial.&lt;/strong&gt; The House Price Index for TR41 moves Bursa, Eskişehir and Bilecik together. It is great for showing a trend, but you cannot use it to say one province got more expensive than its neighbour.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We fetch the series on a schedule with a cron job and store them, so a page view never waits on an external API.&lt;/p&gt;

&lt;h2&gt;
  
  
  From statistics to one home
&lt;/h2&gt;

&lt;p&gt;A province average is not a valuation. A 20-year-old ground-floor flat and a new flat with a sea view in the same district can differ by a lot. So the tool asks for the things that move the price: property type, province and district, address on a map, size in m², number of rooms, building age, and a checklist of features.&lt;/p&gt;

&lt;p&gt;Then it does two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It starts from the official unit price for the province and adjusts it for the property's characteristics.&lt;/li&gt;
&lt;li&gt;Where we have enough real listings nearby, it compares against them as well. Where we don't, it says that the estimate leans on the official average.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Show a range, not a number
&lt;/h2&gt;

&lt;p&gt;The most important product decision: &lt;strong&gt;the result is three scenarios, not one figure.&lt;/strong&gt; A single number looks precise and is almost always wrong. A range tells the owner what a quick sale, a typical sale and an optimistic sale might look like, and it is honest about the uncertainty.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rent and gross yield
&lt;/h2&gt;

&lt;p&gt;Because TCMB also publishes rent per m², we can show rental value and a gross yield next to the sale estimate. The formula is deliberately simple and stated on the page:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="c1"&gt;// Gross rental yield from the official per-m² series.&lt;/span&gt;
&lt;span class="c1"&gt;// $unitRent: TL per m² per month, $unitPrice: TL per m²&lt;/span&gt;
&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;grossYield&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="nv"&gt;$unitRent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="nv"&gt;$unitPrice&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$unitRent&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nv"&gt;$unitPrice&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;   &lt;span class="c1"&gt;// e.g. 220.8 * 12 / 42675 ≈ 0.0621&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Years for rent to repay the price, ignoring tax, fees, vacancy and maintenance.&lt;/span&gt;
&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;paybackYears&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="nv"&gt;$unitRent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="nv"&gt;$unitPrice&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$unitPrice&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$unitRent&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// ≈ 16.1 years for Bursa, Q3 2026&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Bursa in the third quarter of 2026 that gives 42,675 TL/m², 220.8 TL/m² monthly rent and a gross yield of about 6.21%. Each province has its own page with these figures and how it ranks against the others, for example &lt;a href="https://www.acilden.com/degerleme/bolge.php?bolge=Bursa" rel="noopener noreferrer"&gt;Bursa&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We print the caveats right under the number: gross yield ignores tax, building fees, empty months and maintenance, and all figures are nominal, not inflation-adjusted. With annual price changes above 20%, leaving that out would mislead people.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things we would tell anyone building something similar
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Label every number with its source and period.&lt;/strong&gt; "42,675 TL/m², TCMB, 2026-Q3" is useful. "42,675 TL/m²" on its own is not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do not mix granularities silently.&lt;/strong&gt; A regional index and a provincial price answer different questions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing data is information.&lt;/strong&gt; If a province has no series this quarter, say it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Asking prices are not sale prices.&lt;/strong&gt; If you use listing data, say so on the page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No sign-up wall.&lt;/strong&gt; People want an answer first, so the tool works without an account.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tool is free and works for all 81 provinces: &lt;a href="https://www.acilden.com/evim-ne-eder.php" rel="noopener noreferrer"&gt;acilden.com/evim-ne-eder.php&lt;/a&gt;. The interface is in Turkish. If you work with official housing data in your country, I'd like to hear how you dealt with regional and provincial series that don't line up.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>opendata</category>
      <category>php</category>
    </item>
  </channel>
</rss>
