Artier is an art-based social application with a Tinder-like swiping ability. Users are capable of promoting their creative work on their personalized profile which provides the additional exposure for novel artists across varying mediums. I wanted to create an application that allows users to rapidly appraise pieces of art in an incredibly easy and satisfying manner. This app utilizes the Firestore database to store user account information and all required information regarding every users' uploaded art.
Let's say you're someone who is either an artist looking to share their work or someone who is a lover of art. You use various social media applications to try to cater your experience to only viewing art and avoiding irrelevant content. This is successful until you reach an instance where your social feed is bombarded with content that isn't relevant to what you want to see. Artier sets out to solve this problem by providing a dedicated app specifically meant for aspiring artists to post and view art.
Tech Stack Explanation
I chose to use React-Native to create this project because it was the perfect tool for achieving the goal of a 'hand-held-museum' type of experience. I also used React-Native because I wanted to further extend my knowledge of it and gain more experience in building native applications. Expo was chosen due to the variety of accessible built-in APIs. Redux was chosen to handle state management for a variety of reasons, specifically because of handling the potential scale of the application, handling the state with the store, and the clean architecture that unidirectional data flow brings. The Firestore database was used mainly due to its out-of-the-box features such as user registration and authentication, and easy app integration.
This project taught me many lessons, the most prominent ones being handling uploaded photos by users, and the importance of taking time to deliberate and determine a database model. I initially went into this project without having a concrete database model for art uploaded by users. Once it came time to fetch and display the data, I realized that the initial model that I thought would work ended up being unnecessarily complex. Ultimately, I had to do some research and alter my initial model into what I needed. I also learned how to handle users either taking and uploading photos from their camera or just uploading photos from their photo library. Using Expo-Permissions and Expo-ImagePicker showed me how beneficial the built-in Expo APIs are.