Periode: tot Juli 2024
Op zoek naar nieuwe klanten en partners bezoek ik geregeld netwerkbijeenkomsten. Maar na elke bijeenkomst is weer de conclusie dat het interessant en gezellig was, maar niet heel rendabel. Gecombineerd met de feedback van andere deelnemers dat ze het zelfs moeilijk vinden om mensen aan te spreken, ontstond het idee om een app te maken die het leggen van waardevolle contacten tijdens bijeenkomsten eenvoudiger maakt. Het resultaat is de Cannect app, die op een heel laagdrempelige manier mensen tijdens een evenement met elkaar in contact brengt.
Het traject van idee naar release in de app stores heeft als zij-project een aantal jaren geduurd, waarin zowel het concept, het visuele ontwerp, als de technische implementatie een behoorlijke evolutie door heeft doorgemaakt. In de laatste maand heb ik full time gewerkt aan de afronding en publicatie van de eerste versie.
De app heb ik in Flutter ontwikkeld, zodat dezelfde functionaliteit zowel vanuit de Apple App Store als de Google Play Store op de telefoon van gebruikers te installeren is. Door ook de backend in Dart te ontwikkelen, is het een full-stack oplossing geworden met dezelfde technologie aan de frontend als de backend. Dit bleek aan de backend verrassend goed te werken.
De interne structuur van de app volgt (mijn interpretatie van) een Clean Architecture, waarbij de visualisatie door middel van het BLoC pattern strikt gescheiden is van de state van de user interface. De code is ruim voorzien van zowel unit als widget testen, die via de automatische CI/CD pipeline voorkomen dat ik deze multi-user app bij elke wijziging eindeloos handmatig zou moeten testen. Een bijkomend voordeel was dat het maken van screenshots voor de app stores in verschillende talen hierdoor eenvoudig te automatiseren was.
Onder de leermomenten vielen de integratie van betalingen met validatie op de backend, deep linking om een evenement URL automatisch de app te laten openen, en de integratie van locatie en camera functionaliteit. Verschillende ecosystemen hebben verschillende niveaus van documentatie, die via de gedeelde abstractie in Flutter weer niet altijd relevant blijken. En ook Flutter levert nog niet altijd de middelen om eenvoudig problemen die te maken hebben met integratie in het platform te kunnen debuggen.
Ook de backend is gelaagd opgezet volgens Clean Archtecture, waarbij de domein data per evenement in het geheugen wordt gehouden. De persistentie bestaat uit file appenders die de state bij een herstart opnieuw opbouwen. Ik heb een klein REST middleware framework rond shelf server componenten geschreven, zodat de netwerk API een gelijksoortige structuur heeft als UI componenten in Flutter. Dat blijkt een fraaie aanpak, maar helaas nog niet volwassen genoeg om als zelfstandige component te publiceren.
Het traject van het uitwerken van een vaag idee tot een functionele oplossing, het grafisch ontwerpen van de app, en het bouwen van de volledige technische oplossing is een waardevolle leerervaring geweest. Ook levert het me een volledig nieuwe uitdaging in de vorm van marketing van de app nu hij beschikbaar is in de app stores.