[{"data":1,"prerenderedAt":481},["ShallowReactive",2],{"/en/privacy-policy":3,"seo-stack":320,"seo-faq-data-en":411},{"id":4,"title":5,"body":6,"date":309,"description":310,"extension":311,"head":312,"meta":313,"navigation":314,"ogImage":312,"path":315,"robots":312,"schemaOrg":312,"seo":316,"sitemap":317,"stem":318,"__hash__":319},"content_en/en/privacy-policy.md","Privacy Policy",{"type":7,"value":8,"toc":286},"minimark",[9,13,18,26,32,42,46,49,54,57,76,80,87,95,99,102,106,109,113,116,120,123,127,130,134,141,145,148,151,171,175,178,182,185,211,215,218,241,248,251,255,258,261,275,279],[10,11,12],"p",{},"This Privacy Policy describes what personal data the Operator processes in connection with the use of the Service, for what purposes, and what rights are available to Users. This document has been prepared with GDPR (EU 2016/679) in mind.",[14,15,17],"h2",{"id":16},"_1-data-controller","1. Data controller",[10,19,20,21,25],{},"The data controller is ",[22,23,24],"strong",{},"Szymon Skorupski"," (private person, KetusDev).",[10,27,28,31],{},[22,29,30],{},"Last updated:"," 2026-08-04.",[10,33,34,35],{},"For any questions related to personal data processing, please contact: ",[22,36,37],{},[38,39,41],"a",{"href":40},"mailto:code.szymon@gmail.com","code.szymon@gmail.com",[14,43,45],{"id":44},"_2-categories-of-processed-data","2. Categories of processed data",[10,47,48],{},"Depending on how the Service is used, we may process the following categories of data:",[50,51,53],"h3",{"id":52},"_21-contact-form-data","2.1. Contact form data",[10,55,56],{},"When a User submits a message through the contact form, we may process:",[58,59,60,64,67,70,73],"ul",{},[61,62,63],"li",{},"full name,",[61,65,66],{},"email address,",[61,68,69],{},"phone number (optional),",[61,71,72],{},"subject,",[61,74,75],{},"message content.",[50,77,79],{"id":78},"_22-contact-form-security-data","2.2. Contact form security data",[10,81,82,83,86],{},"The contact form is protected by ",[22,84,85],{},"Turnstile (Cloudflare)",". During the verification process, the following may be processed:",[58,88,89,92],{},[61,90,91],{},"verification token,",[61,93,94],{},"User IP address (for verification purposes).",[50,96,98],{"id":97},"_23-analytics-data-only-after-consent","2.3. Analytics data (only after consent)",[10,100,101],{},"If the User consents to analytics cookies, we may process usage information for statistical purposes, to the extent defined by the analytics provider configuration.",[50,103,105],{"id":104},"_24-cookies-and-language-preferences","2.4. Cookies and language preferences",[10,107,108],{},"The Service may store cookies related to language handling (i18n) and cookies used to remember analytics consent choices.",[14,110,112],{"id":111},"_3-purposes-of-processing-and-legal-bases","3. Purposes of processing and legal bases",[10,114,115],{},"We process data in particular for the following purposes:",[50,117,119],{"id":118},"_31-handling-a-contact-request","3.1. Handling a contact request",[10,121,122],{},"The legal basis is the handling of the request and response to the User, in accordance with applicable GDPR rules.",[50,124,126],{"id":125},"_32-protecting-the-contact-form-against-abuse","3.2. Protecting the contact form against abuse",[10,128,129],{},"The legal basis is the legitimate interest of the Controller in ensuring security and preventing abuse, in accordance with GDPR.",[50,131,133],{"id":132},"_33-analytics","3.3. Analytics",[10,135,136,137,140],{},"Analytics is enabled ",[22,138,139],{},"only after consent"," is given through the cookie banner. The legal basis is consent under Article 6(1)(a) GDPR.",[14,142,144],{"id":143},"_4-recipients-of-data-processors","4. Recipients of data (processors)",[10,146,147],{},"To the extent necessary to achieve the purposes described above, data may be entrusted to processors acting on behalf of the Controller.",[10,149,150],{},"Within the Service, we may use the following services:",[58,152,153,159,165],{},[61,154,155,158],{},[22,156,157],{},"Cloudflare"," — Turnstile verification and contact form protection,",[61,160,161,164],{},[22,162,163],{},"Resend"," — email delivery for messages sent through the contact form,",[61,166,167,170],{},[22,168,169],{},"Plausible (self-hosted)"," — analytics, only after consent.",[14,172,174],{"id":173},"_5-transfers-outside-the-eeauk","5. Transfers outside the EEA/UK",[10,176,177],{},"If service providers process data outside the EEA/UK, appropriate safeguards are applied where required by law (for example, standard contractual clauses).",[14,179,181],{"id":180},"_6-retention","6. Retention",[10,183,184],{},"We retain data as follows:",[58,186,187,193,199,205],{},[61,188,189,192],{},[22,190,191],{},"contact form data"," — until the request is handled and for the period necessary for potential claims,",[61,194,195,198],{},[22,196,197],{},"security-related data"," — for the period necessary to verify and protect the form,",[61,200,201,204],{},[22,202,203],{},"analytics data"," — according to the provider configuration and the consent given,",[61,206,207,210],{},[22,208,209],{},"cookies"," — until consent is withdrawn or cookies are deleted according to browser settings.",[14,212,214],{"id":213},"_7-your-rights","7. Your rights",[10,216,217],{},"You may have the following rights, depending on the legal basis and applicable law:",[58,219,220,223,226,229,232,235,238],{},[61,221,222],{},"access to your data,",[61,224,225],{},"rectification,",[61,227,228],{},"erasure,",[61,230,231],{},"restriction of processing,",[61,233,234],{},"data portability (where applicable),",[61,236,237],{},"objection,",[61,239,240],{},"withdrawal of consent for analytics at any time in accordance with the Cookies Policy.",[10,242,243,244],{},"To exercise your rights, contact the Controller at: ",[22,245,246],{},[38,247,41],{"href":40},[10,249,250],{},"You may also lodge a complaint with the competent supervisory authority for data protection.",[14,252,254],{"id":253},"_8-security","8. Security",[10,256,257],{},"We apply technical and organizational measures appropriate to the level of risk in order to protect personal data against unauthorized access, alteration, or disclosure.",[10,259,260],{},"In particular:",[58,262,263,266,269,272],{},[61,264,265],{},"we use contact form protection mechanisms (Turnstile / Cloudflare),",[61,267,268],{},"we validate submitted input on the server side,",[61,270,271],{},"we apply rate limiting to the contact form endpoint,",[61,273,274],{},"we use secure transmission (HTTPS), where available in the deployment environment.",[14,276,278],{"id":277},"_9-cookies","9. Cookies",[10,280,281,282,285],{},"For more details about cookies and consent management, see the ",[22,283,284],{},"Cookies Policy",".",{"title":287,"searchDepth":288,"depth":288,"links":289},"",2,[290,291,298,303,304,305,306,307,308],{"id":16,"depth":288,"text":17},{"id":44,"depth":288,"text":45,"children":292},[293,295,296,297],{"id":52,"depth":294,"text":53},3,{"id":78,"depth":294,"text":79},{"id":97,"depth":294,"text":98},{"id":104,"depth":294,"text":105},{"id":111,"depth":288,"text":112,"children":299},[300,301,302],{"id":118,"depth":294,"text":119},{"id":125,"depth":294,"text":126},{"id":132,"depth":294,"text":133},{"id":143,"depth":288,"text":144},{"id":173,"depth":288,"text":174},{"id":180,"depth":288,"text":181},{"id":213,"depth":288,"text":214},{"id":253,"depth":288,"text":254},{"id":277,"depth":288,"text":278},"2026-08-04","Information about personal data processing in the KetusDev website.","md",null,{},true,"/en/privacy-policy",{"title":5,"description":310},{"loc":315},"en/privacy-policy","olDkuHBZJBfqStzoMk9COODlyuPf1Rq18nDRg2AbuAY",{"id":321,"extension":322,"items":323,"meta":388,"stem":409,"__hash__":410},"stack/stack.json","json",[324,328,332,336,340,344,348,352,356,360,364,368,372,376,380,384],{"name":325,"link":326,"icon":327},"Nuxt","https://nuxt.com/","custom:nuxt",{"name":329,"link":330,"icon":331},"Vue","https://vuejs.org/","custom:vue",{"name":333,"link":334,"icon":335},"TypeScript","https://www.typescriptlang.org/","custom:typescript",{"name":337,"link":338,"icon":339},"Node.js","https://nodejs.org/","custom:node-js",{"name":341,"link":342,"icon":343},"React/React Native","https://react.dev/","custom:reactjs",{"name":345,"link":346,"icon":347},"TailwindCSS","https://tailwindcss.com/","custom:tailwind",{"name":349,"link":350,"icon":351},"Supabase","https://www.prisma.io/","custom:supabase",{"name":353,"link":354,"icon":355},"Postgre","https://www.postgresql.org/","custom:pgsql",{"name":357,"link":358,"icon":359},"Rust","https://www.rust-lang.org/","custom:rust",{"name":361,"link":362,"icon":363},"Python","https://www.python.org/","custom:python",{"name":365,"link":366,"icon":367},"Lua","https://www.lua.org/","custom:lua",{"name":369,"link":370,"icon":371},"C++","https://isocpp.org/","custom:cpp",{"name":373,"link":374,"icon":375},"Golang","https://go.dev/","custom:go",{"name":377,"link":378,"icon":379},"Figma","https://www.figma.com/","custom:figma",{"name":381,"link":382,"icon":383},"Photoshop","https://www.adobe.com/products/photoshop.html","custom:photoshop",{"name":385,"link":386,"icon":387},"Illustrator","https://www.adobe.com/products/illustrator.html","custom:illustrator",{"path":389,"body":390,"title":408},"/stack",{"items":391},[392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407],{"name":325,"link":326,"icon":327},{"name":329,"link":330,"icon":331},{"name":333,"link":334,"icon":335},{"name":337,"link":338,"icon":339},{"name":341,"link":342,"icon":343},{"name":345,"link":346,"icon":347},{"name":349,"link":350,"icon":351},{"name":353,"link":354,"icon":355},{"name":357,"link":358,"icon":359},{"name":361,"link":362,"icon":363},{"name":365,"link":366,"icon":367},{"name":369,"link":370,"icon":371},{"name":373,"link":374,"icon":375},{"name":377,"link":378,"icon":379},{"name":381,"link":382,"icon":383},{"name":385,"link":386,"icon":387},"Stack","stack","aWyFpcVGYuaHymPCKadQyiY7s0WWw_rDYWJaXBNtvoc",{"id":412,"title":413,"extension":322,"faqQuestions":414,"meta":457,"stem":479,"subtitle":460,"__hash__":480},"faq_en/en/faq.json","FAQ",[415,427,445],{"title":416,"questions":417},"Services & Skills",[418,421,424],{"label":419,"content":420},"What services do you offer?","**Web Development**: Responsive websites, landing pages, web applications, UI implementation | **Mobile Development**: Cross-platform mobile apps (learning) | **Game Development**: Mainly writing script to FiveM (in Lua), 3D Moddeling (buildings, cars etc) | **Backend & DevOps**: API integration, database setup, deployment assistance. **I'm eager to take on projects that help me grow while delivering quality results!**",{"label":422,"content":423},"What technologies do you work with?","**Web**: HTML, CSS, JavaScript, TypeScript, Vue.js, Nuxt.js, React (basics), Tailwind CSS, SASS | **Mobile**: React Native (learning), Flutter (basics) | **Game Development**: C++ (basics), Lua, | **DevOps/Servers**: Git, Docker, Linux basics, Node.js, Express.js, PostgreSQL, MongoDB. **I'm always learning and expanding my skill set across different areas!**",{"label":425,"content":426},"Are you available for freelance work?","Yes! I'm open to freelance projects, internships, and full-time opportunities. I'm particularly interested in projects that allow me to grow my skills while delivering value.",{"title":428,"questions":429},"Collaboration",[430,433,436,439,442],{"label":431,"content":432},"How much do you charge?","My rates are flexible and depend on the project scope and duration. For freelance work, I typically charge between €25-40 per hour. I'm also open to discussing project-based pricing for the right opportunity.",{"label":434,"content":435},"How does payment work for a project?","For freelance projects, I typically ask for a 40% deposit upfront to begin work, with the remaining 60% due upon completion and delivery. I accept payments via bank transfer, PayPal, or other methods we can agree upon. For larger projects, we can discuss milestone-based payments.",{"label":437,"content":438},"How long does a project take?","Project timelines vary depending on complexity and scope. A simple landing page might take 1-2 weeks, while a more complex web application could take 1-2 months. I always provide a realistic timeline estimate after discussing the project requirements, and I keep you updated on progress throughout.",{"label":440,"content":441},"How do you approach new projects?","I start by understanding the requirements, then break down the project into manageable tasks. I believe in clear communication, regular updates, and delivering clean, maintainable code. I'm not afraid to ask questions when I need clarification!",{"label":443,"content":444},"Do you work in teams?","Absolutely! I enjoy collaborating with other developers and designers. I'm comfortable using Git for version control, participating in code reviews, and following established coding standards.",{"title":446,"questions":447},"Personal",[448,451,454],{"label":449,"content":450},"What motivates you as a developer?","I love solving problems and seeing ideas come to life through code. Every project is an opportunity to learn something new and improve my craft. The feeling of building something that people actually use is incredibly rewarding!",{"label":452,"content":453},"How do you stay up to date?","I follow tech blogs, participate in developer communities, work on personal projects, and take online courses. I believe continuous learning is essential in this field, and I'm always exploring new tools and best practices.",{"label":455,"content":456},"What are you currently learning?","I'm currently deepening my knowledge of TypeScript, exploring advanced Vue.js patterns, and learning more about performance optimization and accessibility. I'm also interested in diving deeper into backend development and DevOps.",{"path":458,"body":459},"/en/faq",{"title":413,"subtitle":460,"faqQuestions":461},"Things I get asked a lot",[462,467,474],{"title":416,"questions":463},[464,465,466],{"label":419,"content":420},{"label":422,"content":423},{"label":425,"content":426},{"title":428,"questions":468},[469,470,471,472,473],{"label":431,"content":432},{"label":434,"content":435},{"label":437,"content":438},{"label":440,"content":441},{"label":443,"content":444},{"title":446,"questions":475},[476,477,478],{"label":449,"content":450},{"label":452,"content":453},{"label":455,"content":456},"en/faq","g8WlXqYfNG0mRe8GJ3xTst3K2IecqLi2uDs7IuImrEY",1785840165449]