faq
Frequently Asked Questions
- Why Use the RoVFR Mobile App?
- Is RoVFR Mobile App Safe?
- Is My Personal Data Safe?
- Is the RoVFR Mobile App Reliable?
why
Why Use the RoVFR Mobile App?
⚖️🇷🇴 Because VFR notifications are a legal requirement in Romania.
HOTĂRÂRE nr. 859 din 11 august 2021
pentru aprobarea procedurii de autorizare a zborurilor cu aeronave în spațiul aerian național
EMITENT: GUVERNUL ROMÂNIEI
Publicat în MONITORUL OFICIAL nr. 797 din 19 august 2021
Articolul 3
Litera b)
[...] pentru zborul VFR executat în întregime în zone de spațiu aerian de clasă G și care nu intră sub incidența lit. a), operatorul aeronavei a depus un plan de zbor în conformitate cu Regulamentul de punere în aplicare (UE) nr. 923/2012 al Comisiei, cu modificările ulterioare, precum și cu standardele și practicile recomandate emise de Organizația Aviației Civile Internaționale sau, la alegerea operatorului aeronavei, a făcut o notificare de trafic VFR la Autoritatea Aeronautică Civilă Română, în conformitate cu metodologia prevăzută în anexa nr. 1; sau [...]
Anexa Nr. 1 - METODOLOGIE din 11 august 2021
EMITENT: GUVERNUL ROMÂNIEI
Publicat în MONITORUL OFICIAL nr. 797 din 19 august 2021
Articolul 23
[...] Zborurile VFR efectuate cu aeronave civile, executate în întregime într-o zonă de spațiu aerian de clasă G, se consideră autorizate dacă pentru acestea operatorul aeronavei a depus un plan de zbor la o unitate de trafic aerian civilă sau a efectuat o notificare de trafic VFR la A.A.C.R. [...]
- HG 859 ↗️
- Annex 1 of HG 859 ↗️
- Because though the official web app of Romanian CAA (https://vfr.caa.ro) is very good, well maintained and very usable, the RoVFR Mobile App provides, on top of that, an easier, handier mobile user experience with some extra features.
- The RoVFR Mobile App basically acts like a mobile browser tailored for https://vfr.caa.ro.
safe
Is RoVFR Mobile App Safe?
- 💯 100% safe in the sense that it interacts with vfr.caa.ro exactly like any other browser (Chrome, Firefox, Safari, etc.)
- Exactly like any other browser, the communication happens between your device and vfr.caa.ro, without any other intermediary agent, service or person or any other strings attached.
- So it's just as safe as vfr.caa.ro
- Because as already stated, the RoVFR Mobile App basically acts like a mobile browser tailored for https://vfr.caa.ro.
- It's distributed via official stores (Google Play Store and Apple AppStore), which means that every version release is thoroughly reviewed, scanned and checked, by Google and Apple, for any security and data privacy issues
... and last but not least you're safe because the app is developed and maintained by me, Dan Hintea, an active member of the Romanian flying community, not some virtual entity, corporation or governmental organization that you can never talk to.
You can reach me anytime by phone, SMS, WhatsApp or email: dan@rovfr.com / (🇷🇴 +40) 0722-913.919.
safe
Is My Personal Data Safe?
💯 100% safe!
- Credentials (user/pass) are stored ENCRYPTED and ONLY on your personal device (phone, tablet); they're never sent anywhere except to authenticate on vfr.caa.ro, exactly like when you're using vfr.caa.ro directly.
- Every other personal data is also cached/stored on your device ONLY but not encrypted, exactly like any web browser
Error Logs and app usage audits are submitted, periodically, when needed to SKEEPY SOFTWARE SRL / Dan Hintea:
- To fix any app errors
- To improve the app usage experience
- Encrypted via HTTPS by server digital certificates AND client digital certificates
An error log looks like the following sample:
{ "ID": "3fa0ddf0-3fec-4c70-bf66-c6dcf47ec829::23e755fe-248c-4e0a-882f-4eaf8f9da8a3", "Data": { "ID": "3fa0ddf0-3fec-4c70-bf66-c6dcf47ec829::23e755fe-248c-4e0a-882f-4eaf8f9da8a3", "Log": { "ID": "23e755fe-248c-4e0a-882f-4eaf8f9da8a3", "Level": 50, "ScopeID": "7f17f834-a70a-442f-95c7-4c4788f2b04c", "OperationContext": null, "HappenedAt": "2025-11-20T18:58:01.8643269Z", "Message": "Error occured while trying to GetCurrentLocation. Reason: Error occured while trying to run action. Reason: Location services are not enabled on device..", "Method": null, "StackTrace": null, "Component": "RoVFR.Client.MAUI.Core.DeviceGeoLocationProvider", "Application": "RoVFR", "AppVersion": { "Number": { "Major": 0, "Minor": 9, "Patch": 0, "Build": null, "Suffix": null, "Semantic": "0.9.0" }, "Timestamp": "2025-11-19T09:54:18Z", "Branch": "master", "Commit": "07a4f9a871b16f0c8c1d577d4dbf9d0ef324e887" }, "Exceptions": null, "Payload": "{\"LatInDegrees\":46.612783247979195,\"LngInDegrees\":23.435113666035885,\"AltFromSeaLevelInMeters\":null}", "Notes": [ { "ID": "WarningDetail0", "Value": "Location services are not enabled on device." }, { "ID": "WarningDetail1", "Value": "Exception Details [0]:\nMicrosoft.Maui.ApplicationModel.FeatureNotEnabledException: Location services are not enabled on device.\n at Microsoft.Maui.Devices.Sensors.GeolocationImplementation.GetLocationAsync(GeolocationRequest , CancellationToken )\n at RoVFR.Client.MAUI.HDeviceServices.c__DisplayClass2_0.GetCurrentLocationb__0d.MoveNext()\n--- End of stack trace from previous location ---\n at H.Necessaire.HSafe.c__DisplayClass21_0`1.Runb__0d[[Microsoft.Maui.Devices.Sensors.Location, Microsoft.Maui.Essentials, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()\n--- End of stack trace from previous location ---\n at H.Necessaire.ExecutionUtilities.TryAFewTimesOrFailWithGrace(Func`1 doThis, Int32 numberOfTimes, Action`1 onFail, Action`1 onRetry, Int32 millisecondsToSleepBetweenRetries)" } ] }, "Consumer": { "IpAddress": null, "HostName": null, "Protocol": null, "UserAgent": null, "AiUserID": null, "Origin": null, "Referer": null, "RuntimePlatform": null, "ID": "3fa0ddf0-3fec-4c70-bf66-c6dcf47ec829", "IDTag": "xxxx", "DisplayName": "xxxx~xxxx~localhost~samsung SM-S938B 16", "AsOf": "2025-11-20T18:58:19.7352902Z", "Notes": [ { "ID": "Environment-AsOf", "Value": "20251120_185819_UTC" }, { "ID": "Environment-AsOf-Ticks", "Value": "638992618997194644" }, { "ID": "Environment-MachineName", "Value": "localhost" }, { "ID": "Environment-ProcessorCount", "Value": "8" }, { "ID": "Environment-UserDomainName", "Value": "localhost" }, { "ID": "Environment-UserName", "Value": "xxxx" }, { "ID": "Environment-UserInteractive", "Value": "True" }, { "ID": "Environment-OSVersion", "Value": "Unix 36.0.0.0" }, { "ID": "Environment-Version", "Value": "10.0.0" }, { "ID": "Environment-Is64BitOperatingSystem", "Value": "True" }, { "ID": "Environment-Is64BitProcess", "Value": "True" }, { "ID": "Environment-CommandLine", "Value": "/data/app/~~UTCcQXSVuRn-8SPGlNrAnA==/ro.skeepy.rovfr-b8oeL7FO41CMmtFXreCOqQ==/split_config.xxhdpi.apk" }, { "ID": "Environment-CurrentDirectory", "Value": "/" }, { "ID": "Environment-SystemDirectory", "Value": "" }, { "ID": "Environment-NewLine", "Value": "\n" }, { "ID": "Environment-SystemPageSize", "Value": "4096" }, { "ID": "Environment-TickCount", "Value": "260582635" }, { "ID": "Environment-WorkingSet", "Value": "373641216" }, { "ID": "Environment-CurrentManagedThreadId", "Value": "13" }, { "ID": "Device-NativeID", "Value": "xxxx" }, { "ID": "DeviceInfo-Model", "Value": "SM-S938B" }, { "ID": "DeviceInfo-Manufacturer", "Value": "samsung" }, { "ID": "DeviceInfo-Name", "Value": "S25 Ultra" }, { "ID": "DeviceInfo-VersionString", "Value": "16" }, { "ID": "DeviceInfo-Version-Major", "Value": "16" }, { "ID": "DeviceInfo-Version-Minor", "Value": "0" }, { "ID": "DeviceInfo-Version-Build", "Value": "-1" }, { "ID": "DeviceInfo-Version-Revision", "Value": "-1" }, { "ID": "DeviceInfo-Version-MajorRevision", "Value": "-1" }, { "ID": "DeviceInfo-Version-MinorRevision", "Value": "-1" }, { "ID": "DeviceInfo-Platform", "Value": "Android" }, { "ID": "DeviceInfo-Idiom", "Value": "Phone" }, { "ID": "DeviceInfo-DeviceType", "Value": "Physical" }, { "ID": "DeviceInfo-DeviceTypeID", "Value": "1" } ] } }, "DataTypeName": "ConsumerLogEntry", "DataType": "RoVFR.External.Storage.Contracts.DataContracts.ConsumerLogEntry, RoVFR.External.Storage.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", "CreatedAt": "2025-11-20T18:58:24.95762Z", "AsOf": "2025-11-20T18:58:24.9576201Z", "AsOfTicks": 638992619049576200, "ValidFrom": "2025-11-20T18:58:24.9576199Z", "ValidFromTicks": 638992619049576200, "ValidFor": null, "ValidForTicks": null, "ExpiresAt": null, "ExpiresAtTicks": null, "@metadata": { "@collection": "ConsumerLogEntry" } }A usage audit entry looks like the following sample:
{ "ID": "9ed3aa3c-307b-4e51-8946-b7f7116a63e3::d0f0b4dc-dcf6-49d9-8b2e-d7580feedd0f", "Data": { "ID": "9ed3aa3c-307b-4e51-8946-b7f7116a63e3::d0f0b4dc-dcf6-49d9-8b2e-d7580feedd0f", "AuditMeta": { "ID": "d0f0b4dc-dcf6-49d9-8b2e-d7580feedd0f", "AuditedObjectType": "RoVFR.Core.DataContracts.VfrCaaRo.VfrCaaRoUserProfileView", "AuditedObjectID": "xxxx", "HappenedAt": "2025-11-20T21:11:04.912726Z", "DoneBy": { "IpAddress": null, "HostName": null, "Protocol": null, "UserAgent": null, "AiUserID": null, "Origin": null, "Referer": null, "RuntimePlatform": null, "ID": "00000000-0000-0000-0000-000000000000", "IDTag": "xxxx", "AsOf": "2025-11-20T21:11:04.912526Z", "Notes": null }, "ActionType": 0, "AppVersion": { "Number": { "Major": 0, "Minor": 8, "Patch": 0, "Build": null, "Suffix": null, "Semantic": "0.8.0" }, "Timestamp": "2025-11-12T17:30:45Z", "Branch": "master", "Commit": "e8d9d4688f7521a9789eb0a9b2815bf69a6eedeb" } }, "Consumer": { "IpAddress": null, "HostName": null, "Protocol": null, "UserAgent": null, "AiUserID": null, "Origin": null, "Referer": null, "RuntimePlatform": null, "ID": "9ed3aa3c-307b-4e51-8946-b7f7116a63e3", "IDTag": "xxxx", "DisplayName": "xxxx~mobile~localhost~Apple iPhone iPhone14,2 26.1", "AsOf": "2025-11-20T21:11:04.641571Z", "Notes": [ { "ID": "Environment-AsOf", "Value": "20251120_211104_UTC" }, { "ID": "Environment-AsOf-Ticks", "Value": "638992698646359250" }, { "ID": "Environment-MachineName", "Value": "localhost" }, { "ID": "Environment-ProcessorCount", "Value": "6" }, { "ID": "Environment-UserDomainName", "Value": "localhost" }, { "ID": "Environment-UserName", "Value": "mobile" }, { "ID": "Environment-UserInteractive", "Value": "True" }, { "ID": "Environment-OSVersion", "Value": "Unix 26.1.0" }, { "ID": "Environment-Version", "Value": "9.0.11" }, { "ID": "Environment-Is64BitOperatingSystem", "Value": "True" }, { "ID": "Environment-Is64BitProcess", "Value": "True" }, { "ID": "Environment-CommandLine", "Value": "/var/containers/Bundle/Application/D99E4CB1-DB40-4566-8566-A1A758AF1EEE/RoVFR.Client.MAUI.app/monotouch" }, { "ID": "Environment-CurrentDirectory", "Value": "/private/var/containers/Bundle/Application/D99E4CB1-DB40-4566-8566-A1A758AF1EEE/RoVFR.Client.MAUI.app" }, { "ID": "Environment-SystemDirectory", "Value": "" }, { "ID": "Environment-NewLine", "Value": "\n" }, { "ID": "Environment-SystemPageSize", "Value": "16384" }, { "ID": "Environment-TickCount", "Value": "22300148" }, { "ID": "Environment-WorkingSet", "Value": "0" }, { "ID": "Environment-CurrentManagedThreadId", "Value": "8" }, { "ID": "Device-NativeID", "Value": "xxxx" }, { "ID": "DeviceInfo-Model", "Value": "iPhone14,2" }, { "ID": "DeviceInfo-Manufacturer", "Value": "Apple" }, { "ID": "DeviceInfo-Name", "Value": "iPhone" }, { "ID": "DeviceInfo-VersionString", "Value": "26.1" }, { "ID": "DeviceInfo-Version-Major", "Value": "26" }, { "ID": "DeviceInfo-Version-Minor", "Value": "1" }, { "ID": "DeviceInfo-Version-Build", "Value": "-1" }, { "ID": "DeviceInfo-Version-Revision", "Value": "-1" }, { "ID": "DeviceInfo-Version-MajorRevision", "Value": "-1" }, { "ID": "DeviceInfo-Version-MinorRevision", "Value": "-1" }, { "ID": "DeviceInfo-Platform", "Value": "iOS" }, { "ID": "DeviceInfo-Idiom", "Value": "Phone" }, { "ID": "DeviceInfo-DeviceType", "Value": "Physical" }, { "ID": "DeviceInfo-DeviceTypeID", "Value": "1" } ] } }, "DataTypeName": "ConsumerAuditEntry", "DataType": "RoVFR.External.Storage.Contracts.DataContracts.ConsumerAuditEntry, RoVFR.External.Storage.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", "CreatedAt": "2025-11-20T21:11:10.330573Z", "AsOf": "2025-11-20T21:11:10.330573Z", "AsOfTicks": 638992698703305700, "ValidFrom": "2025-11-20T21:11:10.330573Z", "ValidFromTicks": 638992698703305700, "ValidFor": null, "ValidForTicks": null, "ExpiresAt": null, "ExpiresAtTicks": null, "@metadata": { "@collection": "ConsumerAuditEntry" } }- It's distributed via official stores (Google Play Store and Apple AppStore), which means that every version release is thoroughly reviewed, scanned and checked, by Google and Apple, for any security and data privacy issues
... and last but not least you're safe because the app is developed and maintained by me, Dan Hintea, an active member of the Romanian flying community, not some virtual entity, corporation or governmental organization that you can never talk to.
You can reach me anytime by phone, SMS, WhatsApp or email: dan@rovfr.com / (🇷🇴 +40) 0722-913.919.
reliable
Is the RoVFR Mobile App Reliable?
- 💯 100% reliable in the sense that it interacts with vfr.caa.ro exactly like any other browser (Chrome, Firefox, Safari, etc.)
- Meaning that as long as you get the green confirmation message of your operation, you're guaranteed that it reached vfr.caa.ro.
- Because as already stated, the RoVFR Mobile App basically acts like a mobile browser tailored for https://vfr.caa.ro.