Built with Appwrite and Published with Hashnode
Team(Writer Only)
- Prince Bottoman (OptiFlowX)
Project Description
Varsity Vent is a revolutionary mobile app designed exclusively for university students to share their deepest confessions, experiences, and thoughts anonymously. It provides a safe and supportive platform for students to express themselves freely, unburden their minds, and connect with a community that understands their unique challenges and aspirations. This app empowers students to express themselves authentically and find solace in shared experiences, and not only this is for getting bits of advice. Others can use it to learn from the experiences of other students. The digital space where voices are heard, fostering a sense of belonging and support while promoting personal growth and understanding.
Reasons behind this project:
In my country, particularly, university students often commit suicide when things get hard. I think this happens because people tend to bottle up their feelings, and not talk about what is bothering them. This platform could reduce the suicide rate among students and enable everyone to feel better about themselves by realizing that they are not the only ones facing whatever situation they are facing.
Key Features:
Anonymous Confessions - Students can post their confessions without revealing their identities, allowing them to share thoughts, concerns, and experiences honestly.
Diverse Categories - There is a range of confession categories. Users can choose the category that best suits their confession.
Home Feed - This page displays a curated selection of confessions, sorted by recency, providing an engaging browsing experience for users to explore and connect with diverse stories from fellow students.
Interactive Comments - Users can engage with confessions through comments, fostering a supportive and empathetic community where students can offer advice, share experiences, and encourage.
Notification System - The app notifies users about new posts, new comments, or activities in categories, ensuring they stay updated and connected to the community. (NOTE: Not every notification is implemented. I had to remove some code that was misfunctioning)
User Profile - Each user has a personalized profile showcasing their posted confessions, and other relevant information. There is a lot that can be added in this section but I think what is already implemented should be enough at this level.
Easy Posting - The app provides a simple and intuitive interface for composing and posting confessions. Users can add relevant tags based on categories.
Audio Posts - A user may want to record their confession instead of typing a long endless paragraph with a lot of errors. This app provides that ability.
Edit Profile - Edit the user data.
Quotes - Encouragement quotes consumed from an API.
Wishlist:
Campus Event Promotion
Realtime Moderation
Voice Changer(To keep the users 100% anonymous)
SMTP Setup.
Login Details:
Email: test@varsityvent.com
Password: Appwrite
Tech Stack
Programming Language - Dart is a frontend and backend language for Flutter. There is no Varsity Vent without this PL.
Development Framework - Flutter is the main framework behind this app. It allowed me to create one app with only one UI for two platforms(Android and iOS) with minor changes in the code base.
Backend - Appwrite Cloud allowed me to use all its services for all cloud actions contained with this application. The backbone of this app is Appwrite Cloud!
Database - Appwrite Database allowed me to store all my app documents using NoSQL, easy to learn and integrate.
User Authentication - Appwrite Auth enables me to authenticate the users in my app very easily.
Push Notifications
Awesome Notifications (Flutter Local Notifications Plugin)
Appwrite Realtime (Event Handler For Specific Notifications)
Storage - Appwrite Storage for audio confessions.
State Management - Riverpod for all UI states handling as well as app state handling.
Avatars - Custom and Appwrite Avatars API to get a memory image by initials.
Challenges I faced:
Well, as an aspiring developer. I faced a lot of challenges such as the following:
The learning curve in the networking department was a struggle to wrap my head around, but I think I have done very well considering that I am still learning everything.
Performance Optimization: Flutter delivers excellent performance, but achieving optimal performance requires careful management of resources, efficient rendering, and effective state management. Identifying and resolving performance can be time-consuming.
3rd Party Plugin Compatibility was a serious struggle because other plugins only support Android, with little or no support for iOS. Thanks to multiple plugins available in Pub Dev which may do similar things that gave me a vast selection.
Notifications!!! Oh my goodness, This was very painful. I had to utilize FCM to get notifications remotely and redirect them to a local device using the Awesome Notifications Plugin. It doesn't do exactly what I want it to do, work in progress. Any help/ suggestions are more than welcome.
Storing Audio Files from Appwrite Storage in the Appwrite Database retrieving the cloud file and storing it on a device. Since I am using complex waveforms that need to read the audio data from an audio file in the device storage. I have had to download the file to the device storage whenever a file is deleted. I have to remove the file in the cloud storage, local storage and database. Why did I choose to do this? Well, I needed my audio posts to also have the ability to retrieve comments and likes. As far as I know, this is the only app in the world that handles audio files in that way.