Estudio Ingeniería en Tecnologías Computacionales en el Tec de Monterrey y soy estudiante de la Apple Developer Academy en Nápoles, Italia. Con ese perfil podrías pensar que tengo un sólido dominio de Swift y SwiftUI y la verdad es que no. No considero tener un dominio extraordinario de ninguna de las dos.

I study Computer Science and Technology at Tec de Monterrey and I'm a student at the Apple Developer Academy in Naples, Italy. With that profile, you might assume I have a strong command of Swift and SwiftUI. The truth is, I don't. I wouldn't consider myself to have an extraordinary mastery of either.

Y sin embargo, en febrero de 2026 entregué una aplicación funcional para el Swift Student Challenge de Apple: iDeary, un espacio para capturar, conectar y visualizar ideas como en un mapa mental inspirado en los grafos.

And yet, in February 2026 I submitted a functional application to Apple's Swift Student Challenge: iDeary, a space to capture, connect, and visualize ideas as an interactive mental map inspired by graphs.

Este blog no es un tutorial técnico. Es la documentación honesta de mi proceso: desde no tener una sola idea clara hasta entregar la app en una amanecida de 24 horas. Lo escribo porque creo que el proceso importa tanto como el resultado, y porque me gustaría que le sirviera como referencia a cualquiera que esté pensando en participar.

This blog is not a technical tutorial. It's an honest documentation of my process: from having no clear idea at all, to submitting the app after a 24-hour all-nighter. I'm writing it because I believe the journey matters as much as the result, and because I want it would be nice if it served as a reference for anyone thinking about participating.

Pantalla principal de iDeary mostrando el canvas de ideas Pantalla de iDeary mostrando una idea y sus conexiones Pantalla de iDeary el carrousel de ideas para navegarlas
iDeary: un canvas donde cada idea es un nodo y cada conexión cuenta una historia. iDeary: a canvas where each idea is a node and every connection tells a story.

¿Qué es el Swift Student Challenge? What is the Swift Student Challenge?

Si no estás familiarizado: el Swift Student Challenge (SSC) es una convocatoria anual de Apple dirigida a estudiantes de todo el mundo. El reto consiste en desarrollar una app que demuestre creatividad, habilidad técnica y una experiencia significativa, todo evaluable en aproximadamente tres minutos. Los ganadores reciben reconocimiento de Apple, merch exclusivo, y en algunos casos una invitación a la WWDC.

For those unfamiliar: the Swift Student Challenge (SSC) is an annual competition by Apple for students around the world. The challenge is to develop an app that demonstrates creativity, technical skill, and a meaningful experience — all evaluable in approximately three minutes. Winners receive recognition from Apple, exclusive merch, and in some cases an invitation to WWDC.

En el SSC 2026 el entregable era una app de iOS o iPadOS empaquetada como Swift Playground App (formato .swiftpm). Además de la app en sí, hay que responder una serie de preguntas escritas donde explicas qué construiste, por qué y qué aprendiste. Esa parte escrita importa tanto como la app: es tu voz detrás del código.

In the SSC 2026, the deliverable was an iOS or iPadOS app packaged as a Swift Playground App (.swiftpm format). In addition to the app itself, you must answer a series of written questions explaining what you built, why, and what you learned. That written portion matters as much as the app: it's your voice behind the code.


El inicio: una meta en el aeropuerto The beginning: a goal written in an airport

Todo comenzó a finales de 2025. En la Academy nos hablaron del SSC, uno de los mentores nos invitó a participar. Nos dejaron claro que por las reglas del challenge no podrían darnos feedback extenso como en otros proyectos, pero la motivación estaba ahí.

It all started at the end of 2025. At the Academy, we were told about the SSC — one of the mentors invited us to participate. They made it clear that due to the rules of the challenge, they couldn't give us extensive feedback like on other projects, but the motivation was there.

El 5 de enero de 2026, en la sala de espera del aeropuerto de la Ciudad de México esperando un vuelo a Roma, camino de vuelta a la Apple Academy en Nápoles, escribí mis metas del año en una hoja. Una de ellas: participar en el SSC. Pero con una condición que me puse a mí mismo: no quería participar solo por ganar. Quería hacer algo que de verdad me fuera útil y que disfrutara desarrollar, incluyendo las desveladas y el estrés.

On January 5, 2026, in the waiting area of Mexico City's airport, waiting for a flight to Rome on my way back to the Apple Academy in Naples, I wrote my goals for the year on a piece of paper. One of them: participate in the SSC. But with a condition I set for myself: I didn't want to participate just to win. I wanted to build something that would genuinely be useful to me and that I would enjoy developing — including the all-nighters and the stress.

Hoja de metas escrita en el aeropuerto Goals sheet written at the airport
La hoja donde todo empezó. Sala de espera, AICM, 5 de enero de 2026. The sheet where it all started. Waiting area, AICM, January 5, 2026.

Había visto proyectos de años anteriores y ninguno terminaba de conectar conmigo como referencia. Decidí que mi proyecto tenía que nacer de algo personal.

I had seen projects from previous years and none of them fully connected with me as a reference. I decided my project had to come from something personal.


La primera idea (y por qué la descarté) The first idea (and why I scrapped it)

Enero se fue entero en la pregunta: ¿qué hago? Ninguna idea me enganchaba por completo. Desarrollé rápido un prototipo de una cámara instantánea pensada para viajes: la idea era capturar recuerdos con notas, no solo fotos que terminas olvidando.

The entire month of January went by asking myself: what do I build? No idea completely hooked me. I quickly developed a prototype of an instant camera designed for travel: the idea was to capture memories with notes, not just photos you end up forgetting.

Prototipo de la cámara instantánea descartada
El prototipo de cámara instantánea. Bonito, pero demasiado parecido a algo que ya había hecho. The instant camera prototype. Nice, but too similar to something I'd already built.

Me gustaba, pero sentía que se parecía demasiado a MoMò, una app que había desarrollado con mi equipo en la Academy. La premisa era similar y no le encontraba una personalidad propia que la diferenciara. Así que la dejé como prototipo y decidí empezar un proceso de ideación desde cero.

I liked it, but it felt too similar to MoMò, an app I had developed with my team at the Academy. The premise was comparable and I couldn't find a personality of its own that would set it apart. So I left it as a prototype and decided to start an ideation process from scratch.

La lección aquí fue importante: saber matar una idea a tiempo es tan valioso como tener una buena idea. Mi criterio para descartarla fue que si no podía articularla como algo distinto a lo que ya existía en mi propio portafolio, un juez tampoco podría.

The lesson here was important: knowing when to kill an idea is as valuable as having a good one. My criterion for scrapping it was simple: if I couldn't articulate it as something distinct from what already existed in my own portfolio, a judge wouldn't be able to either.


Proceso de ideación: de lluvia de ideas a momento de claridad Ideation process: from brainstorming to a moment of clarity

Con el deadline encima, me tomé un día entero para hacer una sesión intensiva de brainstorming. La regla: sacar ideas rápido, sin filtro, y al final del día tener máximo tres candidatas.

With the deadline looming, I took an entire day for an intensive brainstorming session. The rule: generate ideas fast, no filter, and by the end of the day have at most three candidates.

Hice dos rondas. Primero partí de conceptos que me interesan: mis hobbies, cosas que me frustran, herramientas que uso a diario. Después hice una ronda de "ideas random" para ver si podía conectar conceptos entre sí. Y ahí apareció la palabra: ideario.

I did two rounds. First, I started from concepts that interest me: my hobbies, things that frustrate me, tools I use daily. Then I did a round of "random ideas" to see if I could connect concepts together. And that's when the word appeared: ideario.

Un diario de ideas. La palabra como tal en español no se refería exactamente a lo que yo quería representar, pero el concepto me atrapó: un espacio donde capturar, relacionar y ver tus ideas de manera rápida, sencilla e integrada.

A diary of ideas. The word itself in Spanish didn't refer to exactly what I wanted to represent, but the concept grabbed me: a space to capture, relate, and view your ideas quickly, simply, and in an integrated way.

Me puse a repasar todas las veces que había tenido una idea y la perdí por no anotarla en el momento. O las veces que una idea creció cuando la relacioné con otro concepto. Pensé: "esto es justo lo que necesito y de verdad lo quiero construir." En ese momento supe qué quería desarrollar.

I went over all the times I'd had an idea and lost it because I didn't write it down in the moment. Or the times an idea grew when I related it to another concept. I thought: "this is exactly what I need and I genuinely want to build it." In that moment, I knew what I wanted to develop.

Fotos del mind mapping y la lluvia de ideas
El caos controlado del brainstorming. De aquí salió iDeary. The controlled chaos of brainstorming. iDeary was born here.

Diseñando iDeary: de círculos a grafos Designing iDeary: from circles to graphs

Captura rápida Quick capture

La primera funcionalidad que definí fue la captura: tenía que ser inmediata y flexible. Anotar texto, tomar una foto, grabar audio, hacer un dibujo. Que la idea no se escape.

The first functionality I defined was capture: it had to be immediate and flexible. Write text, take a photo, record audio, make a drawing. Don't let the idea escape.

Visualización: la pieza clave Visualization: the key piece

De nada sirve capturar ideas si después no puedes revisitarlas de forma clara. Aquí fue donde más iteré.

There's no point capturing ideas if you can't revisit them in a clear way. This is where I iterated the most.

Desde el principio supe que quería representar las ideas como círculos. Pensé en la película Intensamente de Pixar y en cómo llega una emoción: de repente y por reacción. Una idea llega igual. Esa analogía me pareció muy buena y orientó todo el diseño visual.

From the beginning I knew I wanted to represent ideas as circles. I thought about Pixar's Inside Out and how an emotion arrives: suddenly and by reaction. An idea arrives the same way. That analogy felt pretty good and guided all the visual design.

Pero faltaba lo más importante: ¿cómo se relacionan las ideas entre sí? Ahí es donde mi ITC interior conectó con el diseño. Recordé mi clase de Algoritmos y Estructuras de Datos y llegaron a mi mente: los grafos. Cada idea sería un nodo con su información, y los vértices representarían las conexiones entre ellas.

But the most important piece was missing: how do ideas relate to each other? That's where my ITC side connected with the design. I remembered my Algorithms and Data Structures class and it came to me: graphs. Each idea would be a node with its information, and the edges would represent the connections between them.

Para alguien técnico, es un grafo. Para alguien no técnico, parece una mezcla entre un mapa mental y una red neuronal. Esa dualidad me convenció de que era la representación correcta.

For someone technical, it's a graph. For someone non-technical, it looks like a mix between a mind map and a neural network. That duality convinced me it was the right representation.

Bocetos en papel mostrando la evolución de círculos a grafos Paper sketches showing the evolution from circles to graphs
Primera iteración: círculos solos. Segunda iteración: círculos conectados. Ahí nació el grafo. First iteration: circles alone. Second iteration: circles connected. That's where the graph was born.

Del papel a Figma (y rápido al código) From paper to Figma (and quickly to code)

Pasé por Figma lo justo para tener una referencia digital. No te voy a mentir: no era bonito. Pero mi forma de trabajo es que una vez que tengo claro qué quiero hacer y más o menos cómo se vería, prefiero saltar al código lo antes posible. Figma me sirve para pensar, no para pulir.

I spent just enough time in Figma to have a digital reference. I won't lie: it wasn't pretty. But my working thought is that once I know what I want to build and roughly how it would look, I prefer to jump into code as soon as possible. Figma helps me think, not polish.

Primera iteracion en Figma de la app
Mi primera iteración del diseño en Figma. Feo, pero suficiente para arrancar. My first design iteration in Figma. Ugly, but enough to get started.

Empecé con el código para descubrir qué era posible técnicamente y cómo se sentía en la práctica lo que tenía en la cabeza.

I started with the code to discover what was technically possible and how what I had in my head would feel in practice.


Desarrollo: del MVP a la app Development: from MVP to app

Construcción técnica Technical build

Toda la app está construida en SwiftUI puro. No usé SpriteKit ni frameworks de físicas: el canvas infinito es una vista SwiftUI con gestos de arrastre (pan) y pellizco (pinch-to-zoom) implementados a mano, con límites de escala entre 0.3× y 3.0×. Cada nodo es una vista que se posiciona mediante un offset calculado en coordenadas del canvas, y las conexiones son trazos dibujados con Path directamente en SwiftUI.

The entire app is built in pure SwiftUI. I didn't use SpriteKit or physics frameworks: the infinite canvas is a SwiftUI view with drag (pan) and pinch-to-zoom gestures implemented by hand, with scale limits between 0.3× and 3.0×. Each node is a view positioned via an offset calculated in canvas coordinates, and the connections are strokes drawn with Path directly in SwiftUI.

Para la estructura de datos del grafo usé algo simple: dos arrays de structs Codable. Un array de Idea (los nodos) y un array de Connection (los vértices), donde cada Connection guarda los UUID de las dos ideas que conecta. No hay librería de grafos ni nada externo: es el modelo más directo que pude construir, y funciona.

For the graph data structure I used something simple: two arrays of Codable structs. An array of Idea (the nodes) and an array of Connection (the edges), where each Connection stores the UUIDs of the two ideas it connects. No graph library or external dependencies: it's the most direct model I could build, and it works.

Para la persistencia tampoco usé Core Data ni SwiftData. Serializo todo a JSON y lo guardo en el directorio Documents de la app, con un archivo por mapa de ideas. Sencillo, portable y fácil de debuggear.

For persistence, I didn't use Core Data or SwiftData either. I serialize everything to JSON and save it to the app's Documents directory, with one file per idea map. Simple, portable, and easy to debug.

Para las funcionalidades multimedia usé los frameworks nativos de Apple:

For multimedia features I used Apple's native frameworks:

  • AVFoundation para grabación y reproducción de audio.
  • PencilKit para los dibujos a mano.
  • PhotosUI para seleccionar fotos y videos desde la biblioteca.
  • La cámara con UIImagePickerController envuelto en SwiftUI.
  • AVFoundation for audio recording and playback.
  • PencilKit for hand drawings.
  • PhotosUI for selecting photos and videos from the library.
  • The camera with UIImagePickerController wrapped in SwiftUI.

El reto técnico más interesante fue construir el modo de conexión entre ideas. El flujo es: el usuario activa el modo de conexión, toca un primer nodo (que queda "seleccionado"), toca un segundo nodo, y la app crea la conexión mostrando una línea degradada entre ellos. Manejar ese estado de "espera de segundo nodo" de forma reactiva en SwiftUI, propagando los cambios de estado entre vistas sin que todo explotara, fue lo que más iteraciones me costó.

The most interesting technical challenge was building the connection mode between ideas. The flow is: the user activates connection mode, taps a first node (which becomes "selected"), taps a second node, and the app creates the connection showing a gradient line between them. Managing that "waiting for second node" state reactively in SwiftUI, propagating state changes between views without everything blowing up, was what cost me the most iterations.

Otra decisión de arquitectura que me alegra haber tomado: separar IdeaStore (el estado de un mapa específico) de MapStore (la lista de todos los mapas). Cada mapa tiene su propio store, lo que hace que agregar, eliminar o cambiar entre mapas sea limpio y sin efectos secundarios raros.

Another architecture decision I'm glad I made: separating IdeaStore (the state of a specific map) from MapStore (the list of all maps). Each map has its own store, which makes adding, deleting, or switching between maps clean and without weird side effects.

El proceso del día a día The day-to-day process

Trabajaba en la app todos los días, no solo por el deadline sino porque me gustaba de verdad. Recuerdo estar en un bus de Nápoles a Milán (11 hrs de trayecto en bus aproximadamente) para sorprender a mi novia por el 14 de febrero, y la mitad del viaje lo dediqué a programar. Me sentía en "la zona".

I worked on the app every day, not just because of the deadline but because I genuinely enjoyed it. I remember being on a bus from Naples to Milan (approximately 11 hours) to surprise my girlfriend on Valentine's Day, and I spent half the trip coding. I was in "the zone".

La primera iteración de desarrollo fue un MVP muy básico: solo quería saber si la idea que existía en mi cabeza tenía sentido como aplicación. Y aunque era simple, al usarlo me di cuenta de que me resultaba genuinamente útil. También lo probé en la Academy y el recibimiento me motivó a seguir.

The first development iteration was a very basic MVP: I just wanted to know if the idea in my head made sense as an application. And even though it was simple, using it made me realize it was genuinely useful to me. I also tested it at the Academy and the reception motivated me to keep going.

Evolución del prototipo al MVP y a la versión final
Prototipo inicial, MVP funcional. Initial prototype, functional MVP.

Testing y feedback Testing and feedback

Cuando la app ya era más que un prototipo, empecé a testearla con toda persona que pudiera. El feedback que incorporaba no era sobre cambiar la idea central, sino sobre mejorar la experiencia: hacer más claro cómo añadir ideas, cómo interactuar con ellas, cómo navegar el mapa.

When the app was more than a prototype, I started testing it with everyone I could. The feedback I incorporated wasn't about changing the core idea, but about improving the experience: making it clearer how to add ideas, how to interact with them, how to navigate the map.

Lo más recurrente: la gente no entendía de entrada que podía conectar ideas entre sí. Esa funcionalidad no era obvia. Eso me llevó a rediseñar el botón de modo conexión, agregar instrucciones contextuales en pantalla durante el flujo de conexión, y finalmente construir un onboarding que guía al usuario a conectar ideas como parte del tutorial.

The most recurring issue: people didn't initially understand that they could connect ideas together. That feature wasn't obvious. This led me to redesign the connection mode button, add contextual on-screen instructions during the connection flow, and finally build an onboarding that guides the user to connect ideas as part of the tutorial.


Resolviendo la exploración rápida de ideas Solving quick idea exploration

Tenía el mapa de ideas, la captura rápida y las conexiones. Pero faltaba algo: ¿cómo explorar rápidamente qué tenías capturado sin tener que navegar todo el grafo? Si no puedes revisitar lo que capturaste de forma ágil, pierde sentido haberlo guardado.

I had the idea map, quick capture, and connections. But something was missing: how to quickly explore what you'd captured without having to navigate the entire graph? If you can't revisit what you captured in an agile way, there's no point in having saved it.

Me imaginé un carrusel, un patrón reconocido en interfaces móviles y web. Investigando, encontré un ejercicio del Apple WWDC '23 ("Animate with Springs", sesión 10159) que implementaba exactamente la experiencia que buscaba.

I imagined a carousel — a recognized pattern in mobile and web interfaces. Researching, I found an exercise from Apple WWDC '23 ("Animate with Springs", session 10159) that implemented exactly the experience I was looking for.

Bocetos del carrusel de ideas
Apple WWDC '23 ("Animate with Springs", sesión 10159) Apple WWDC '23 ("Animate with Springs", session 10159)

Repasé el ejercicio, lo adapté a mi app y el resultado fue justo lo que imaginaba. El carrusel pasó por muchas iteraciones de boceto a implementación.

I went through the exercise, adapted it to my app, and the result was exactly what I had imagined. The carousel went through many iterations from sketch to implementation.

Carrusel implementado en iDeary
El carrusel final: cada idea apilada, lista para explorar con un swipe. The final carousel: each idea stacked, ready to explore with a swipe.

Al final, la navegación por carrusel no fue la funcionalidad más usada de la app, pero es un detalle sutil que mejora la experiencia conforme la usas más. A veces las features más valiosas no son las más visibles.

In the end, the carousel navigation wasn't the most-used feature in the app, but it's a subtle detail that improves the experience as you use it more. Sometimes the most valuable features aren't the most visible.


Últimos detalles antes de la entrega Final details before submission

A pocas horas del deadline, tenía la app funcionando pero me faltaban tres cosas críticas: un onboarding, un ícono y las respuestas a las preguntas del SSC. Tuve que dividir mi atención en paralelo.

A few hours before the deadline, the app was working but I was missing three critical things: onboarding, an icon, and the SSC written answers. I had to split my attention in parallel.

El onboarding The onboarding

El onboarding tenía un doble propósito. Por un lado, guiar a un usuario nuevo para que entendiera cómo funciona la app. Por otro, cumplir con el requerimiento de que la experiencia se pueda vivir en tres minutos. Como me imaginaba que los jueces evalúan muchísimas aplicaciones, decidí usar el onboarding también para explicar el por qué de la app, no solo el cómo.

The onboarding had a dual purpose. On one hand, guide a new user to understand how the app works. On the other, meet the requirement that the experience can be lived in three minutes. Since I imagined the judges evaluate many applications, I decided to also use the onboarding to explain the why of the app, not just the how.

El flujo guía al usuario a crear una idea, explorar las formas de captura (texto, foto, audio, dibujo), conectar ideas entre sí, desconectarlas y navegar entre ellas. Y arranca con algo que no es tan común en un onboarding: mi historia. Le cuento al usuario por qué construí esto. Quería que desde el primer segundo quedara claro que iDeary nació de un problema real, no de un ejercicio técnico.

The flow guides the user to create an idea, explore the capture forms (text, photo, audio, drawing), connect ideas together, disconnect them, and navigate between them. And it starts with something not so common in onboarding: my story. I tell the user why I built this. I wanted it to be clear from the very first second that iDeary was born from a real problem, not a technical exercise.

Herramientas que me ayudaron Tools that helped me

Para el onboarding, usé Claude Code como herramienta de apoyo. Específicamente, lo utilicé para tomar la estructura base de mi código existente y generar el flujo paso a paso del onboarding, que luego personalicé y adapté al contexto de mi app. La lógica de la aplicación, el diseño de la experiencia y las decisiones de producto son mías; Claude Code me ayudó a ejecutar más rápido.

For the onboarding, I used Claude Code as a support tool. Specifically, I used it to take the base structure of my existing code and generate the step-by-step onboarding flow, which I then personalized and adapted to my app's context. The application logic, experience design, and product decisions are mine; Claude Code helped me execute faster.

Para el ícono, utilicé Icon Composer de Apple, mientras en paralelo respondía las preguntas del SSC.

For the icon, I used Apple's Icon Composer, while simultaneously answering the SSC questions.

Ícono final de iDeary
El ícono de iDeary. Hecho en Icon Composer a las 3am antes de la entrega. The iDeary icon. Made in Icon Composer at 3am before submission.

La entrega The submission

La entrega se resume en una sesión continua de 24 horas: pulir los últimos detalles, responder preguntas y darle enviar. Tuve la fortuna de estar acompañado por mis amigos y compañeros de la Apple Academy. Nos pusimos a trabajar juntos toda la noche, probábamos las correcciones de nuestras apps entre nosotros, nos dábamos feedback, nos motivamos. Entregamos juntos, cada quien a su hora.

The submission boils down to a continuous 24-hour session: polishing the final details, answering questions, and hitting send. I was fortunate to be accompanied by my friends and fellow Apple Academy students. We got to work together all night, testing each other's app fixes, giving feedback, keeping each other motivated. We submitted together, each at their own hour.

Hacerlo en comunidad no fue un detalle menor. Fue lo que nos ayudó a no distraernos y a sentir que no estábamos solos en el estrés.

Doing it as a community wasn't a minor detail. It was what helped us stay focused and feel like we weren't alone in the stress.


Lo que aprendí (y lo que sigue) What I learned (and what comes next)

No tuve oportunidad de pulir UI, UX ni accesibilidad como me hubiera gustado. Me quedo contento con el resultado final, pero no satisfecho, y creo que esa distinción es importante. Quiero seguir aprendiendo, hacer un refactor del código y, sobre todo, publicar iDeary.

I didn't get the chance to polish the UI, UX, or accessibility as much as I would have liked. I'm content with the final result, but not satisfied — and I think that distinction matters. I want to keep learning, refactor the code, and above all, publish iDeary.

Lo que me mantuvo trabajando no fue solo el SSC como meta. Fue que desde el día uno supe que estaba construyendo algo que yo mismo iba a usar. Y cuando las personas que lo probaron me dijeron que ellos también lo usarían, eso lo cambió todo.

What kept me working wasn't just the SSC as a goal. It was that from day one I knew I was building something I'd use myself. And when the people who tested it told me they'd use it too, that changed everything.

Si pudiera hacer algo diferente, empezaría el diseño de accesibilidad desde el día uno, no como un checkbox de último minuto. VoiceOver, Dynamic Type, contrastes de color, o cualquiera que se le adapte mejor a iDeary por su naturaleza. Pensar en esto desde el principio cambia la forma en que diseñas: no son detalles que añades al final, sino decisiones que moldean todo lo demás.

If I could do something differently, I'd start accessibility design from day one — not as a last-minute checkbox. VoiceOver, Dynamic Type, color contrast, or whatever fits iDeary best given its nature. Thinking about this from the start changes how you design: these aren't details you add at the end, they're decisions that shape everything else.

También dedicaría más tiempo al testing con personas que no me conocen, porque el feedback de alguien que no sabe nada de la app es el más valioso y el más difícil de conseguir.

I'd also spend more time testing with people who don't know me, because feedback from someone who knows nothing about the app is the most valuable — and the hardest to get.

Si estás pensando en aplicar al SSC, te diría: elige una idea que tú mismo quieras usar. Algo que mueva algo en ti y que te dé ganas de seguir aprendiendo y construyendo, porque se vienen noches de estrés y desvelo. Pero hacer algo porque tú lo quieres y te es útil tiene un valor que se nota. Enamórate de tu idea y del proceso. Y una cosa más, práctica: empieza antes de sentirte listo. El prototipo más feo del mundo te va a enseñar más sobre tu idea que cualquier cantidad de tiempo pensando en ella.

If you're thinking about applying to the SSC, I'd say: choose an idea you yourself want to use. Something that moves something in you and makes you want to keep learning and building, because stressful, sleepless nights are coming. But making something because you genuinely want it and find it useful has a kind of value that shows. Fall in love with your idea and with the process. And one more thing — a practical one: start before you feel ready. The ugliest prototype in the world will teach you more about your idea than any amount of time thinking about it.

Lo que sigue What's next

Los planes para iDeary post-SSC son claros: refactor del código, mejorar la accesibilidad, explorar la sincronización con múltiples dispositivos, y eventualmente publicarla en el App Store. Hay una versión más completa de esta app esperando ser construida.

The plans for iDeary post-SSC are clear: refactor the code, improve accessibility, explore sync across multiple devices, and eventually publish it to the App Store. There's a more complete version of this app waiting to be built.


Resumen técnico de iDeary iDeary technical summary

Un vistazo rápido para quienes quieran entender el stack y las decisiones técnicas sin leer todo el post.

A quick look for those who want to understand the stack and technical decisions without reading the entire post.

  • Plataforma: iOS (Swift Playground App, formato .swiftpm)
  • Lenguaje: Swift
  • Framework principal: SwiftUI
  • Multimedia: AVFoundation (audio), PencilKit (dibujos), PhotosUI (fotos y videos), UIImagePickerController (cámara)
  • Estructura de datos del grafo: Dos arrays de structs Codable: [Idea] (nodos) y [Connection] (aristas). Sin librerías externas.
  • Canvas infinito: Implementado a mano en SwiftUI con gestos de arrastre y pellizco. Escala: 0.3× – 3.0×.
  • Persistencia: Serialización JSON al directorio Documents. Un archivo por mapa. Sin Core Data ni SwiftData.
  • Animaciones: Spring animations basadas en WWDC '23 sesión 10159. Pulso en nodos con withAnimation(.easeInOut) en loop.
  • Arquitectura: MapStore + IdeaStore por mapa + AudioManager y MediaManager como servicios independientes.
  • Herramientas externas: Claude Code, Icon Composer (ícono), Figma (wireframes y referencias)
  • Líneas de código: ~5,800
  • Tiempo total de desarrollo: ~6 semanas (enero–febrero 2026)
  • Platform: iOS (Swift Playground App, .swiftpm format)
  • Language: Swift
  • Main framework: SwiftUI
  • Multimedia: AVFoundation (audio), PencilKit (drawings), PhotosUI (photos and videos), UIImagePickerController (camera)
  • Graph data structure: Two arrays of Codable structs: [Idea] (nodes) and [Connection] (edges). No external libraries.
  • Infinite canvas: Implemented by hand in SwiftUI with drag and pinch gestures. Scale: 0.3× – 3.0×.
  • Persistence: JSON serialization to Documents directory. One file per map. No Core Data or SwiftData.
  • Animations: Spring animations based on WWDC '23 session 10159. Node pulse with withAnimation(.easeInOut) in loop.
  • Architecture: MapStore + IdeaStore per map + AudioManager and MediaManager as independent services.
  • External tools: Claude Code, Icon Composer (icon), Figma (wireframes and references)
  • Lines of code: ~5,800
  • Total development time: ~6 weeks (January–February 2026)