Skip to the content

Cookie policy

Every cookie and every browser storage key Dardaris writes, what it is for, how long it lasts, who receives anything from it, and how to change your mind.

Effective 13 Sep 2026 · Version 2026-08-29

On this page

This is the full text. The short version is on the cookie summary, and every section there links back to the matching section here.

1. What are cookies

1.1 A cookie is a small file a site asks your browser to keep and to send back on your next visit. Browsers offer two more stores that work the same way for the purposes of this policy: localStorage, which keeps a value on your device until something removes it, and sessionStorage, which forgets it when you close the tab.

1.2 The rule that governs all three is about storing or reading anything on your device, whatever the technology and whether or not what is stored is personal data: unless it is strictly necessary for something you asked for, it needs your consent first. What the technology is still matters for how long a thing lasts and what can be done with it, which is why the tables below give each key its own row rather than one row for the lot. Where what is stored is also personal data, the GDPR governs what we then do with it, and that is the privacy policy's subject rather than this one's.

1.3 This policy therefore covers all three together and calls the whole set cookies for short.

1.4 Dardaris's own code uses cookies, localStorage and sessionStorage. It keeps something in sessionStorage only to carry a step you started from one page to the next, such as a bank connection you are finishing at your bank, and the tab forgets it when you close it. If you accept analytics, the analytics library adds sessionStorage keys of its own, and those are listed below with the rest. We do not use fingerprinting, tracking pixels or any advertising technology, and we review what the site stores when we change it.

1.5 The tables below are complete for the keys Dardaris itself writes, and they are held to it rather than merely intended: those keys are declared in one place in the code, and an automated test fails the build if one of them is not named here. A key cannot ship without a line about it.

1.6 Two things sit outside that guarantee, and we would rather name the limit than imply there is none. A third-party library can add a key of its own in a version we take, which is why the analytics rows below are written as the patterns that library uses rather than as a frozen list. And the network our site is served over can set a security cookie of its own, which has its own row in the first table.

2.1 Two categories. There is no third, because there is no third thing running.

2.2 Strictly necessary. Without these the site cannot do what you came for. You cannot sign in without a session cookie, and a preference you set cannot survive the next page load without somewhere to keep it. These are set whether or not you accept anything, and the law does not require consent for them.

Name / KeyTechnologyPurposeDuration
better-auth.session_tokenCookie, HTTP only, SameSite=Lax, sent only over HTTPSSigns you in and tells the server which account is asking. It holds a random reference to a session on the server and never your passwordUp to 7 days from your last activity, renewed while you keep using the site. Signing out invalidates the session on the server and clears the cookie where the browser allows it; a value left behind by a closed tab or a blocked deletion is already unusable and expires on its own
better-auth.session_dataCookie, HTTP only, SameSite=Lax, sent only over HTTPSAn encrypted copy of your session and of your account's name, email address, role and accepted terms, so the server can answer without looking them up on every request. It never holds your password15 minutes, then read again from the server. Signing out, revoking your sessions or any change to your account makes the copy unusable at once
Dardaris.d1Cookie, HTTP only, SameSite=Lax, sent only over HTTPS and only to /apiA marker of the last change the database confirmed to you, so your next request is answered by a copy of the database at least that recent and you see what you just saved. It holds an opaque position in the database's log and nothing about you or your portfolio5 minutes, replaced on each request that moves it
better-auth.* sign-in cookies, one per exchangeCookieCarry one half of a sign-in exchange to the other: a passkey challenge, the state of a six-digit code attempt, a token that proves a form came from this site. Each holds a random value and never a password or a readable credentialMinutes. Cleared when the exchange finishes, and expiring on their own if it is abandoned or fails
Cloudflare security cookies, such as __cf_bm and cf_clearanceCookie, set by CloudflareThis site is served through Cloudflare, which may set a cookie of its own to tell a person from a bot or to remember that a security challenge was passed. They are set by the network rather than by Dardaris, they carry nothing about your account or your portfolio, and they are not used for analytics or advertisingMinutes to hours, set by Cloudflare
Dardaris.consentlocalStorageThe choice you made, the moment you made it, and the version of this policy in force at the time. No portfolio content and no identifier6 months, for a refusal exactly as for an acceptance. Overwritten when you change your answer, and stops counting sooner if this policy changes materially. Removed when you clear your browser storage
Dardaris.themelocalStorageWhether you asked for the light or the dark faceUntil you clear your browser storage
Dardaris.rail.v2localStorageWhich rooms you pinned to the railUntil you clear your browser storage
Dardaris.banking.declinedlocalStorageWhich of your teams said they would record payments by hand, so the offer to connect a bank account is not made again. Holds team identifiers and nothing elseUntil you clear your browser storage
Dardaris.bankAttemptsessionStorageThe bank connection you have just started, kept while you are on your bank's own page so that coming back finishes that connection rather than a guess at one. Holds a connection identifier and nothing elseForgotten when you close the tab at the latest
Dardaris.bankRenewalsessionStorageThe account you sent to your bank to renew its access, so that coming back checks that account's access once. Holds the account identifier and the identifier of the team it belongs toRemoved when you come back from your bank, and forgotten when you close the tab if you do not
dardaris.notifications.seenAtlocalStorageThe moment you last looked at your notifications, so the bell can mean "new to you" rather than "exists"Until you clear your browser storage
Dardaris.teamcookieWhich of your teams you last had open, so a link to a room with no team in front of it lands on the right portfolio rather than asking you to choose again. Holds a team identifier and nothing else1 year, rewritten each time you switch. Removed when you sign out
Dardaris.teamJustCreatedsessionStorageThe team you have just opened, so its first page can offer once to fill in who holds it. Holds a team identifier and nothing elseRemoved as soon as that offer is shown, and forgotten when you close the tab in any case
Dardaris.countrycookieThe two letter country our network resolved your address to, so a page rendered ahead of your visit can show prices in the right currency180 days, and rewritten if you travel
Dardaris.fmtcookieHow money is written in that country, so a page can format a price without downloading a table of every country180 days, alongside the entry above
domus.db.v9localStorageA cache of your own portfolio, so a screen can draw before the network answers and so a dropped connection does not empty the roomReplaced on every sync. Removed when you sign out
domus.changes.v9localStorageEdits you have made that have not reached your account yet, so a dropped connection cannot lose your workRemoved as each edit is accepted, and when you sign out
domus.changes.v9.rejectedlocalStorageAn edit your account refused, and the reason it gave, so the screen can tell you which one and why rather than dropping it silentlyRemoved when you dismiss it, and when you sign out
domus.ownerlocalStorageWhich account the three entries above belong to, so the product refuses to show one account the cached copy belonging to anotherRemoved when you sign out

2.3 The last four keys still carry the name the product had before it was called Dardaris. They hold nothing that did not come from your own account, and signing out removes all four.

2.4 Be clear about what the account stamp is and is not. It is how the product refuses to hand one account another's cached copy; it is not encryption, and it is not a lock against somebody who has your unlocked device or your browser profile. Those keys can hold data about your tenants, so use Dardaris on a device only you or people you trust control, sign out on a shared one, and clear the site's data before you pass a machine on. We cannot secure a browser we do not control, and saying otherwise here would not make it so.

2.5 Analytics. Optional, off until you say otherwise, and the only thing on this site that waits for your consent.

Name / KeyTechnologyPurposeDuration
ph_<project key>_posthogCookie, and a copy in localStorageThe PostHog identifier for this browser and this session, so two page views can be counted as one visit rather than two people. <project key> is our public PostHog project key, which the pattern fills in6 months, the same period as the consent it was minted under
__ph_opt_in_out_<project key>localStorageRecords that the library is opted out, so it keeps honouring that after a reload. Written when you refuse or withdraw after having accepted, and never as a way of tracking youUntil you clear your browser storage
ph_<project key>_window_id and ph_<project key>_primary_window_existssessionStorageTell this tab apart from another one, so a visit opened in two tabs is not counted as twoUntil you close the tab
ph_<project key>_posthog, a second copysessionStorageThe part of the analytics state that belongs to this tab rather than to the whole browserUntil you close the tab

2.6 If you never accept analytics, none of these are written and the library is never fetched. It is loaded by an import that runs only after a grant, in both rooms, so before a grant your browser makes no request for it at all: it mints no identifier, sets no cookie and sends nothing. Any copy of the library that something else on the page started is opted out on every page load and on every change of answer.

3. What analytics collects, if you allow it

3.1 Six things, and this is the whole list.

3.2 Which pages you opened and when. A handful of named events for things worth counting, such as starting a lease generation or reporting a maintenance issue; each is a name and a small bag of properties, and none of them carries a tenant, an address or an amount. Your account identifier once you are signed in, which is the account's own opaque id and carries no name and no address. The technical properties any web request carries, such as the browser, the screen size, the referring page and the country your address resolves to. Errors the product throws, with the stack trace and the page they happened on, so a screen that is broken for you can be found and fixed. And nothing else.

3.3 Three deliberate absences are worth naming, because each is a capability the library has and this site switches off in its own code rather than in a settings page somebody could change without a deploy:

3.4 No session recording. Your screen, your clicks and your typing are not recorded, and recording is disabled at the point the library starts.

3.5 No autocapture. Nothing is collected merely because you clicked it. Every event on this site was written by hand, which is why the list above is short enough to read.

3.6 No surveys. The library can pop a survey over the page. It is switched off.

3.7 Text is masked before anything leaves the browser, and two things that ride in a URL, an invitation code and the page you were trying to reach before you signed in, are stripped from every event and every error report.

3.8 There is one buffer worth mentioning because you would otherwise not know it existed. If you click something while the banner is still up, the event is held in the page's memory rather than thrown away, up to twenty of them, and it is sent only if you then accept. It touches nothing on your device, it leaves the browser only after a grant, and refusing discards it immediately, as does closing the tab.

4. Third-party cookies

4.1 No advertising or social company sets a cookie from its own domain while you are on this site. Two companies are nonetheless involved, and calling that "no third parties" would be a word game rather than a disclosure.

4.2 PostHog is a third-party service and it is where the analytics data goes. The library is served and the events are sent through /ingest on this site's own domain, which is a proxy declared in the application's own configuration: your browser talks to us and we forward it. That is done for reliability rather than for secrecy, and it is worth being exact about what it changes. It changes who your browser connects to. It does not change who receives the data, and it does not make PostHog anything other than a third-party recipient of it. PostHog is named, with its role and its safeguards, in the privacy policy.

4.3 Cloudflare serves this site and may set a security cookie of its own, which is in the first table. It is infrastructure rather than a tracker, and it is named for the same reason PostHog is: a reader is entitled to the list rather than to a slogan.

4.4 The two typefaces this site uses are served from this site. They are downloaded once when the site is built and then served from our own domain, so no request leaves for a font provider and no font provider sees your address.

4.5 There are no social buttons, no embedded video, no advertising network and no chat widget. Every one of those is a third-party cookie in the ordinary sense, and this site has none of them.

5. Where the analytics data goes

5.1 The analytics events are received and stored by PostHog in the European Union.

5.2 The company that operates Dardaris, named at the end of this document, sits outside the European Economic Area, and its staff can reach that PostHog project in order to read the analytics. If you are in the EEA, that access is a transfer of personal data out of it. The safeguards for it, the recipients, and your rights over the data are set out in the privacy policy, which is the document that governs this and which this section only points at.

5.3 Nothing in the strictly necessary table is sent to an analytics service or to any other third party. It is either in your browser or in your own account.

6. Managing your preferences

6.1 The banner appears on your first visit and offers accepting analytics and refusing them as two buttons on the same layer, in the same style, with neither given the emphasis of the other. Refusing is one click, exactly like accepting, and no choice is ticked for you in advance. Nothing about the product changes if you never answer at all.

6.2 The third control on the banner opens the detail, where the two categories are listed with what they do. Strictly necessary is shown as always on and has no switch, because a switch that cannot move is a lie about who is in control. Analytics has a real checkbox, and it starts unticked.

6.3 After that, the cookie preferences control reopens the same panel. It sits on the cookie summary page, on this page, in the footer of every page on the public site, and inside the product in the account menu and again under House rules, so it is one step from wherever you are standing when you change your mind. It is the same record on both sides of the sign-in, and the change takes effect at once: granting starts analytics, refusing stops the library and discards the identifier it was using.

6.4 If your browser sends a Global Privacy Control signal, that is your answer and we take it. Analytics stays off, the banner does not appear, and you are not asked to repeat yourself. Opening the preferences panel and ticking the box still overrides it, in either direction, because a decision you make here is more specific than a default you set once for every site.

6.5 You can also work at the browser level. Every browser can block or delete cookies and site data for a single site, and doing so here removes your consent record along with everything else, which means the banner asks you again on your next visit.

6.6 One warning about that, because the obvious sentence would be the wrong one. Clearing this site's data also removes your preferences, the portfolio cache, and any edit you have made that has not yet reached your account. Everything your account has already accepted is on the server and is rebuilt on your next sign-in, but unsent work is only in this browser and clearing it loses that work for good. The product tells you when something is still unsent, and it says so again if you sign out with edits outstanding: wait for that to clear before you wipe the site's data.

7.1 Two different questions are answered in this section, and conflating them is how a cookie policy ends up saying something that is not quite true. The first is whether we may put a thing on your device at all. The second is what we are then allowed to do with it, if what is on it counts as personal data.

7.2 On the first: strictly necessary cookies are stored without asking, under the exemption for storage that is indispensable to a service you have expressly asked for, such as being signed in. Everything else waits for your consent. You cannot switch the necessary ones off here, because switching off the cookie that signs you in is the same act as signing out.

7.3 On the second: an exemption from asking is not a lawful basis for processing. Where a necessary cookie involves personal data, the basis for what we then do with it, our contract with you and our legitimate interest in keeping the account secure, is set out in the privacy policy, not here.

7.4 Analytics cookies are stored on the basis of your consent, and on nothing else. Consent is asked before anything analytical runs, it is refused as easily as it is given, and it is recorded so that the answer you gave is the one this site acts on until you change it. The record holds three things: the categories you allowed, the moment you decided, in full ISO 8601, and the version of this policy that was in force when you decided. It is kept in your browser under Dardaris.consent and is not sent anywhere.

7.5 A consent here has a life of six months and then stops counting, whether or not anything has changed. A refusal lasts exactly as long: we do not keep a no for a shorter period than a yes, because a site that re-asks the people who declined and not the people who agreed is a site working the question rather than answering it. That is deliberate. The version below is what re-asks everybody when we change something, and it has one weakness: it only fires when we move. A policy that sat still for three years would otherwise be carrying an answer given three years ago by somebody who may no longer agree with it. So the answer simply expires, the banner comes back, and you decide again.

7.6 The version is the other half of keeping a consent honest. When this policy changes what runs or why, its version is bumped, every stored decision stops matching, and everyone is asked again on their next visit. A consent given against a document nobody could have read is not a consent, and a version that never moves is how a site ends up relying on one.

7.7 Your answer is not final, and changing it to a no is the same single click that accepting was. What that writes is a refusal: a recorded no, carrying the moment and the version like any other answer, which stops the library and discards the identifier it was using.

7.8 Two things a withdrawal does not do, and we would rather say so than let the word carry more than it should. It does not reach backwards: what was collected while you had consented was collected lawfully, and withdrawing does not by itself delete the events already held by us or by PostHog. Your rights over those, including asking for them to be deleted, are in the privacy policy, and asking is a separate thing you are entitled to do. And it does not erase your consent record here, because that record is what tells this site what you chose and when. What removes the record itself is clearing this site's data in your browser, and after that the banner asks you again as though you had never answered.

7.9 Refusing costs you nothing. Every part of Dardaris works the same way whether you accept analytics or not, there is no feature behind that button, and you are not asked again for the life of the answer.

8. Changes to this policy

8.1 The effective date is at the top of this document and is a literal date that changes when the document changes. It is never generated from the clock of whatever machine served the page, because a policy dated by the server is dated wrongly the moment it is served from a cache.

8.2 We ask again, rather than rely on an answer you already gave, whenever a change widens or alters what runs without consent, what it collects, who receives it or what you were choosing between. Such a change bumps the version above and every stored decision stops matching. A correction that does not touch any of those moves the effective date and leaves the version alone, because an unnecessary re-ask trains people to click the first button they see.

8.3 A change we have to make at once for a legal or security reason takes effect at once. Nothing optional starts running under it until the consent it needs has been asked for and given.

8.4 We keep the previous versions of this document, so that a decision recorded against an older version can be read against the text that was in front of you when you made it. Ask at the address below for the version your record names.

9. Contact

9.1 Questions about this policy, or about a specific cookie in the tables above, go to support@dardaris.com.

9.2 Dardaris is a product of Techroun LLC, Shams Business Center, Sharjah Media City Free Zone, Al Messaned, Sharjah, trade licence number 2543150.01 issued by Sharjah Media City, tax registration number 105325244900001. That company, and not the product, is the one that decides what this site keeps on your device and is answerable for it.

9.3 You may also complain to a data protection authority, and you do not have to write to us first. If you are in the European Economic Area or the United Kingdom, that is the supervisory authority of the country you live in, the country you work in, or the country where you think the problem happened, and any of the three will take it. For the operating company itself the authority is the UAE Data Office.

10. Language

10.1 This document is written in English, and the English text is the operative version to the extent the law permits. We publish translations of it so that it can be read in the language you work in. A translation is an approximation offered as a reading aid, it is not a second original, nobody is bound by its wording, and where it differs from the English text the English text is the one that applies.

10.2 If English is not a language you read comfortably and something here matters to you, write to support@dardaris.com and we will explain the passage. That is help with reading this document, not a change to what it says.