Hi there! I'm Ekaksh Janweja, a pre-final year student at Delhi Technological University. As a self-proclaimed full-stack mobile app developer, I had the incredible opportunity to intern at Team Black Box. In this blog, I'll share my experiences working as a full-stack mobile intern at Team Black Box for six months.

Projects I worked on
Take A Sip
hydration tracking app — React Native + Firebase
I Won't Forget
reminders app powered by NLP — compromise.cool + RRuleJs
Land Blocks
geo-tracking with React Native Skia
Flutter Workshop
4-session series on Flutter + Firebase + Riverpod
Take A Sip
A splash of React Native and Firebase magic
For my initial assignment, I was tasked with developing functionality that allowed users to add custom sips with personalized icons and water quantities. This involved delving into the fundamentals of React Native and its integration with Firebase.
Throughout the process, I gained a solid understanding of Zustand, a powerful state management solution for React and React Native. Additionally, I learned how to create interfaces and data models using TypeScript.
Another exciting aspect of this task was exploring the realm of UI components. I became familiar with various components, including buttons and bottom sheets, and honed my skills in styling them using Tailwind CSS.
It took multiple iterations to refine the functionality and bring it up to the desired standard. I'm thankful for Subbu and Adi's guidance and patience.
I Won't Forget
Harnessing the power of natural language processing
In my second task, I had the opportunity to work with compromise.cool and RRuleJs. I wrote a function that extracted different parts of speech from user-input sentences, such as date reminders and times. This functionality was used to create automatic reminders within the app, generated from Discord or Slack channels.
One of the highlights of this task was writing unit tests for the functions I developed, using RRuleJs to validate their functionality. RRuleJs allowed me to define and test recurring events, ensuring the accuracy and reliability of the reminders.
Land Blocks
Building the foundation with React Native Skia
I had the privilege of working on a geo-tracking application. Using the react-native-skia library by Shopify, I focused on constructing polygons on a canvas based on location coordinates. This endeavor provided me with invaluable insights into manipulating coordinates according to mobile devices and applying different styles to the created polygons.
Flutter Workshop
To add some extra spice to my internship experience, I was given the opportunity to conduct a Flutter workshop for the team. I created a to-do app using Flutter and Firebase, employing state management with Riverpod and following the MVC architecture.
What began as a single session turned into an immersive series of four sessions, covering essential topics for building captivating UIs with Flutter, integrating Firebase Firestore, and implementing Firebase Authentication.
The Code Reviews
It took me multiple iterations before I could reach an acceptable level on almost all the tasks, so Subbu's comprehensive code reviews were instrumental in improving my development skills and maintaining a clean, readable codebase.
Advice on a side project
While working on my side project, dtu.social — a proximity chat app for college students — I received invaluable advice from Subbu and Adi. Their inputs ranged from optimizing the app using streams to testing the initial version. Their guidance helped me improve the app's performance and ensure a smooth user experience.
Key Learnings
what I took away
- Rapidly adapt to new technologies.
- Manage multiple projects simultaneously.
- Write clean and readable code.
- Collaboration, teamwork, and mentorship are key to success.
Conclusion
A big thank you to Subbu and Adi for their incredible guidance and support throughout this six-month journey. I am immensely grateful for the valuable learning experiences and growth opportunities they provided.