TL;DR:
As a UX designer, I ventured into app development with the help of AI tools like Cursor and Xcode. Along the way, I tackled challenges such as integrating APIs, enabling offline functionality, and navigating App Store submissions. AI accelerated my workflow by helping with tasks like debugging, feature brainstorming, and creating visuals and text. It also became an invaluable tool for building functional prototypes quickly, allowing me to validate ideas with real users early in the process.
This journey taught me how to bridge UX and development, but it also underscored the importance of user-centered design, clear communication, and critical code reviews. While AI is a powerful productivity tool, creativity and user empathy remain key. My advice? Start small, embrace AI, and use it as a partner to innovate and experiment.
Introduction
As a UX designer with a background in web development, including HTML, CSS, and JavaScript, I’ve always been passionate about creating intuitive user experiences.
While my web development knowledge gave me a good foundation, venturing into app development was a new and exciting challenge. Using tools like CursorXcode, and other AI assistants, I managed to create three apps — NextWave, NautiLearn, and Sailing Logger. Along the way, I discovered how AI could serve as both a technical guide and a creative partner.
This journey not only deepened my understanding of development but also reshaped my perspective on how UX and technology intersect. Here’s what I learned.
The Apps: NextWave, NautiLearn, and Sailing Logger

Next Wave NautiLearn, Sailing Logger

Each app I developed serves a unique purpose, addressing specific user needs:
NextWave: A companion app for wake foilers who ride the wakes of official lake ships. NextWave combines essential tools to ensure you never miss the perfect wave. It offers real-time boat schedules, smart notifications that alert you 5 minutes before your wave arrives and a user-friendly interface for easy spot selection. The app also provides wave timing and direction info, helping users choose the best location and timing for their sessions.
NautiLearn: A learning app designed specifically for sailers preparing for the Swiss Offshore License (Hochseeschein). Nautilearn provides tailored interactive lessons and a realistic exam simulation feature that mimics the actual test environment. The app ensures learners can study flexibly and effectively, focusing on topics like navigation, meteorology, safety and other topics.
Sailing Logger: A versatile voyage management and logging app for sailors, designed to track and document every detail of a journey. The app allows users to create and organize voyages, assign crew roles, and record detailed logbook entries with GPS-based positions, distances, speeds, wind data, and maneuvers. It integrates OpenSeaMap with offline functionality, providing accurate navigation tools even in remote areas. With features like statistics, data import/export, and offline map support, Sailing Logger offers everything sailors need to manage and enhance their adventures.
These projects challenged me to solve real-world problems while pushing the limits of what I could achieve with AI tools.
Building on Web Development Experience
Coming from a web development background, I was familiar with the basics of structure, styling, and scripting. However, app development brought unique challenges, like managing state, integrating APIs, and adhering to platform-specific design guidelines.
For example:
HTML and CSS knowledge helped me understand UI layouts and styling in Xcode’s Interface Builder.
JavaScript experience made it easier to grasp Swift’s syntax and logic for building interactive components.
While these skills gave me a head start, the real learning curve came from navigating the technicalities of app development.
The Challenge: Beyond Design to Development
When I started, I thought app development would primarily involve translating designs into code.
However, I quickly realized it was far more complex. Developing apps required diving into a wide range of challenges, such as integrating external services and handling data efficiently. Here’s what I encountered:
Integrating APIs: I worked with various APIs, such as OpenWeather for weather data, OpenSeaMap for maritime navigation charts, and a OpenTransport API to fetch and display timetable information in NextWave. Each integration required understanding API endpoints, authentication, and error handling to ensure smooth functionality.
Offline Storage and MapTiles: A major challenge was enabling offline functionality. I explored ways to integrate MapTiles, allowing users to view maps without internet access — a critical feature for apps like Sailing Logger, which are often used in remote areas.
Writing API Interfaces: Beyond simple integration, I had to create robust, secure interfaces to allow efficient communication between the app and backend systems. This involved not just fetching data but also ensuring that it was processed and displayed in a user-friendly way.
Custom Scripts for Data Collection: Some tasks required gathering unique datasets. For example, I wrote python scripts to compile:
Harbor and ship station data for Swiss lakes, used in Sailing Logger.
Exam questions and answers for NautiLearn, tailored to specific learning objectives.
Preparing for App Store Submission: Meeting Apple’s guidelines for app submission involved managing certificates, provisioning profiles, and marketing assets. While meticulous, this process taught me the importance of attention to detail and thorough testing.
These steps pushed me far beyond my comfort zone, requiring technical problem-solving and patience. However, with tools like Cursor and Xcode, I managed to navigate these complexities and build functional prototypes that were not only operational but also catered to user needs.
AI as a Creative and Technical Partner
AI tools like Cursor became invaluable throughout this process, serving as both a guide and a collaborator. They helped me:
Write and Debug Code: Cursor saved me hours by generating boilerplate code, optimizing API integrations, and streamlining repetitive tasks like setting up models and helper functions. It also excelled at real-time debugging, quickly identifying errors and suggesting fixes — for example, resolving a GPS tracking issue in Sailing Logger by pinpointing a missing observer. While not perfect, Cursor provided strong starting points, allowing me to focus on higher-level design and functionality while accelerating my learning curve.
Brainstorm Features: AI proposed new ideas for app features and even helped refine existing concepts. For instance, while working on NautiLearn, AI suggested ways to implement a simulation feature for exam preparation, allowing users to practice under realistic conditions with randomized questions and a timed interface. This not only made the app more engaging but also gave users a better sense of readiness for their real exams.
Similarly, for Sailing Logger, AI helped refine the route-tracking functionality by proposing methods to optimize GPS tracking, such as automatically pausing the tracker when the user is stationary and resuming it when movement is detected. This ensured accurate route logs without requiring constant manual input, significantly improving the overall user experience and battery consumption.
Create Visual Assets: AI proved invaluable in tasks like generating visual and written content, saving me countless hours. For NautiLearn, I used AI to create watercolor-style images that added a unique and inviting aesthetic to the app, perfectly complementing its nautical theme. These visuals elevated the app’s overall design and gave it a polished, professional feel.
Create Text: Beyond imagery, AI also helped with text generation, such as: Instructional Texts: Crafting concise and clear onboarding instructions and in-app guidance for users. Error Messages: Writing empathetic and user-friendly error messages to improve the overall experience. App Store Content: Generating engaging descriptions, feature highlights, and even optimized keywords for app store listings to ensure the apps stood out.
This combination of visual and written content creation allowed me to focus more on the strategic aspects of design while ensuring the apps felt cohesive and thoughtfully designed.
Refine Designs: AI became a valuable sparring partner in refining the use of native design elements like sheets, modals, and navigation patterns, ensuring the apps aligned with Apple’s Design Guidelines.
Beyond improving existing designs, AI also inspired new ideas. By using AI as a design sparring partner, I was able to elevate both the usability and aesthetic of the apps.
The Importance of Clear Communication with AI
While AI tools are powerful, they’re not perfect. I quickly learned that clear and precise instructions were essential for getting the desired results. Here’s what worked for me:
Writing Requirements from a User Perspective: Framing tasks as user stories often led to more relevant and accurate solutions. In NautiLearn for example, instead of saying, “Randomize the answer order,” I’d frame it as, “As a user, I want the answers to appear in a random order each time, so I focus on the content and not the position of the correct answer.” This approach ensured the feature aligned with user needs and avoided superficial implementations.
Reviewing Code Critically: AI occasionally overwrote critical functionality or introduced bugs. I made it a habit to review every change and test thoroughly to ensure nothing essential was unintentionally modified.
Stepping Back When Stuck: Sometimes, the AI would get stuck in a loop, generating unusable solutions or revisiting the same ideas. In these cases, refining my instructions or breaking tasks into smaller, more specific steps often resolved the issue.
Preventing Unintended UI Overhauls: A challenge I faced was AI occasionally rewriting the UI completely, introducing changes that disrupted the consistency of the app. For instance, while adjusting a feature in Sailing Logger, Cursor tried to restyle unrelated screens. I learned to specify clearly that only specific sections should be updated, explicitly stating: “Modify this component but leave the rest of the app as it is.” This ensured that new changes integrated smoothly without breaking existing designs.
Lessons Learned Along the Way
Building on Web Development Knowledge: While my experience with HTML, CSS, and JavaScript was helpful, app development required me to learn new tools and concepts, such as Swift and Xcode’s Interface Builder. The transition wasn’t seamless, but my prior knowledge gave me a strong foundation.
UX Design is Still Key: AI can handle technical tasks, but UX design remains at the core of any successful app. Testing with real users uncovered insights that no algorithm could predict, ensuring the apps were not only functional but also intuitive.
The Importance of Testing: Writing code is the easy part — testing and refining took far longer. Functional prototypes helped me identify usability issues early and refine the experience before launch.
Beware of “Featureitis”: It’s tempting to add every idea that comes to mind, but staying focused on the app’s core purpose is crucial. A Kanban board helped me prioritize features and stay on track.
Version Control is Essential: Early on, I learned the hard way that not committing changes could lead to lost work. Over time, Cursor’s restore feature became a lifesaver, but maintaining backups and commits is still a best practice.
Why AI is an Ally, Not a Threat
There’s a growing fear that AI will replace humans, but as the quote goes:
A.I. won’t replace humans, but the people who refuse to collaborate with A.I. will be replaced by the ones who don’t.
This perfectly sums up the importance of embracing AI as a productivity tool. Throughout my journey, I’ve learned that AI is not about taking over creative processes but enhancing them. Tools like Cursor helped me brainstorm ideas, refine workflows, and generate solutions faster than I could alone. However, it was always my creativity and understanding of user needs that shaped the final outcome.
AI can automate repetitive tasks, suggest alternatives, and even inspire fresh perspectives. But it’s the collaboration between human insight and machine efficiency that drives true innovation. Or, as another saying puts it:
It’s a productivity tool, not a replacement for creativity.
By embracing AI, I’ve:
Learned Faster: Tools like Cursor helped me bridge the gap between UX design and app development, accelerating my understanding of coding concepts and workflows.
Worked Smarter: Prototypes that once took days now take hours, allowing me to iterate quickly and test ideas early in the process.
Enhanced Creativity: By automating repetitive tasks, AI gave me more mental bandwidth to focus on crafting better user experiences and exploring innovative solutions.
Stayed Relevant: In an ever-evolving industry, learning to collaborate with AI is essential for staying ahead, ensuring I can adapt and remain competitive in a rapidly changing landscape.
Reflecting on Code Quality
One of the challenges I faced as a UX designer stepping into app development was evaluating the quality of the code I wrote or that AI generated. While tools like Cursor made it easy to produce functional code quickly and flagged obvious errors, determining whether the code adhered to best practices — such as maintainability, scalability, and efficiency — was another matter entirely.
For me, the primary indicator of success was whether the code compiled and worked as intended. If it didn’t, I could debug with AI assistance or refine my instructions to resolve issues. However, functional code isn’t always good code. Poorly structured or overly complex code can lead to problems down the line, especially as the project scales or requires updates.
To address this, I see immense value in having an experienced engineer review the code. A code review would provide insights into:
Code readability: Is the code clear and easy to understand for future collaborators?
Performance: Are there unnecessary computations or inefficient processes that could be optimized?
Scalability: Is the code written in a way that can handle growth or additional features?
Best Practices: Does it adhere to modern standards and conventions for the language?
Bringing an engineer into the loop would not only improve the quality of the project but also help me learn from their feedback, gaining a better understanding of what “good code” looks like. This collaboration would complement my design-driven approach, ensuring that both the user experience and the underlying architecture are strong.
While I’ve been able to achieve a lot with AI and basic debugging, I recognize that code quality is an area where collaboration with experienced developers can make all the difference. For future projects, integrating regular code reviews could be a game-changer.
Final Thoughts: A Transformative Journey
Developing NextWave, NautiLearn, and Sailing Logger has been an incredibly rewarding and transformative experience. These projects not only allowed me to create tangible products but also demonstrated how modern tools and AI are lowering the barriers for UX designers to step into app development. What once felt like an intimidating and technical field has become approachable, enabling me to turn ideas into functional solutions with confidence.
This journey also underscored a critical truth: while technology is powerful, it’s human creativity and intuition that make the difference. AI can assist in countless ways — streamlining workflows, offering new perspectives, and automating repetitive tasks — but it’s our unique ability to empathize with users, craft intuitive designs, and solve real-world problems that gives these tools purpose.
Looking ahead, I plan to leverage AI in three key ways:
Quickly building and testing functional prototypes: AI allows me to validate ideas with real users early in the process, helping me identify strengths and weaknesses before significant resources are invested.
Experimenting with and refining concepts: AI encourages me to explore innovative solutions, test unconventional ideas, and push creative boundaries.
Fueling creativity and growth: Beyond prototyping, I’ll continue using AI to develop new apps, refine existing ones, and experiment with projects that let me express my creativity and solve meaningful problems.
For anyone considering this path, here’s my advice: Start small, embrace AI, and let curiosity guide you. Begin with simple projects and focus on building foundational knowledge. Don’t worry about mastering everything at once — iterate, learn from mistakes, and build confidence over time.
Whether you’re brainstorming features, writing code, or refining designs, the combination of human creativity and AI capabilities can lead to outstanding outcomes. AI isn’t a replacement for creativity — it’s an enabler, a tool that amplifies your skills and unlocks new possibilities.
So take the leap. Experiment, make mistakes, and keep learning. Let AI be your partner, not just a tool, in shaping the future of design and development. The opportunities it opens are limited only by your imagination and willingness to innovate.

You may also like

Back to Top