Team Black Box Internship
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.
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 & 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 utilized to create automatic reminders within the app, which could be 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. It was an important step in guaranteeing the proper functioning of the app and delivering a seamless user experience.
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. Through this project, I deepened my understanding of geolocation and gained hands-on experience in building a sophisticated application for tracking and visualizing geographic data.
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 embarked on creating 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. It was a fantastic chance to share my knowledge and contribute to the growth of my team.
The Code Reviews
It took me multiple iterations before I could reach an acceptable level in almost all the tasks, so Subbu's comprehensive code reviews were instrumental in improving my development skills and maintaining a clean, readable codebase. His valuable feedback and guidance greatly contributed to my growth as a developer.
Advises 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 were incredibly valuable, ranging 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. I highly recommend seeking feedback from experienced individuals, embracing optimization techniques like streams, and prioritizing thorough testing to create a successful side project.
Key Learnings
- Rapidly adapt to new technologies.
- Manage multiple projects simultaneously.
- Write clean & readable code.
- Collaboration, teamwork, and mentorship are key to success.
Conclusion
In conclusion, I extend 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.