Links

demo video: link
application APK file: link

Inspiration

The near past changed a lot and shifted a lot of things online. Friends found it difficult to meet with each other and many lost their motivation to go out for walks and exercises, or maybe just to take small breaks. People kind of forgot what was it like to live in the moment and have fun together. That's why we came up with the idea and named it Awestruck, redefining the social media platform.

What it does

It's a mobile application, and in a way a whole new form of social media. It brings friends together, and lets them do many amazing things, including watching the stars and taking walks! And everything comes with a reward so yea it induces the sense of worth in using these features.

Majorly, a user can

  • Login/Signup to the app,
  • Make an amazing profile with username, status, profile picture and a starmap of their birthday,
  • Add friends and chat with them with texts and cool stickers [end to end encrypted],
  • Send super encrypted texts to friends, and they'll need to walk certain steps to decrypt it down, we've called such texts as "auroras",
  • Walk steps to decrypt aurora messages sent by someone else,
  • Share your walking progress, meditation status and starmaps on snapchat as custom made stickers.
  • Create or join stargazing rooms and watch the same sky in a 3D environment, based on actual scientific positions of the celestial bodies,
  • Meditate and calm yourself down using a wide range of copyright free music available in the app, with a soothing theme,
    and more..

What's a starmap

Starmap is a map of the night sky, based on how it would exactly above a certain location at a given time. It works by using complex scientific calculations and is aesthetically very pleasing. That is exactly what we've integrated in Awestruck. This is one example of a starmap from Noida, India during the nighttime [9:00 pm] on 21st February, 2021.

How we built it

We followed a stepwise procedure and got everything to work. The app has the following major features :-

Authentication and profile management

We used Firebase auth and Firestore for this purpose. We let users enter some basic details and their pfp. Then they could edit the default birthday and obtain the starmap for their birthday, that would show up in their profile, along with cool things like level, determined by the steps walked, and their star sign, determined by their birthday.

Messaging

We integrated a way to add friends and respond to pending requests using firebase's realtime database. Then we also included Snap's sticker services. For that we made graphql post requests from flutter and stored the top 2 sticker results based on user's search query, and rendered them using Image.network(url) into the screen, and that gets pushed to the database when user taps on it, and shows up on chat! Also, additionally users can send an amazing super encrypted text called aurora. Auroras are sent to friends and friends need to walk certain steps to decrypt the message. This feature is integrated to induce productivity and making people realise the importance of taking breaks, through a small but effective reward.

Pedometer

The pedometer is integrated through a flutter package that works using the accelerometer sensor and counts steps. The steps data is stored into the database according to the day, and gets updated each time a user walks steps. Users can see their weekly history and the total number of steps walked till date. Also, these steps translate to coins, and those coins can be used to decrypt auroras!

Meditation

To get this working, we searched for the best relaxing audios that are 100% free to use individually and commercially, and put them into different categories and let the user decide what they wanna listen, pretty much like music apps like Spotify and soundcloud, but meditation focused. User can also view their last played music and continue from there. For this, we hosted the music files online in the raw [mp3] form and those are called using a music player package that fetches them from internet and plays them accordingly. The last played music data is managed through a small firestore function!

StarGazing

Implementing this properly was the most complex task. First of all, we let users to create a room or maybe join an existing one. That creates a random 6 letter string as the room code and uploads to the firestore with a list of participants. Then, the flutter opens up a small webview of our flask api, and passes the latitude, longitude and time of the person who created the room. Then the flask api fetches it, renders the starmap, then the map is saved on the server as an image using javascript. After that, the image is converted to a base64string and pushed to the room document in firebase, and then when the user starts stargazing, the image is loaded from there and rendered into a panorama viewer. The panorama viewer works perfectly with gyroscope sensors, so it's pretty much accurate. And then in the stargazing room, participants can send cute sticker, as reactions, integrated using snap's sticker kit, and can also play a space themed music, totally free to use!

Starmap generation

We found one amazing project on github, that showed how one can generate realtime starmaps that are accurate based on location and time. The project was free to use and we took inspiration from there to make the starmaps working. Then the other task was to save the starmap image automatically when the webpage would load, so we used javascript's functions for that, and converted image to string and pushed to firestore.

Challenges we ran into

A big challenge was to find a way to integrate Snapchat's creative kit into flutter as there are no official releases for flutter specifically yet. So we had to make our methods and invoke them from flutter to make it work. Also, we had some features that were really complex for us to implement, like live stargazing and pedometer challenges.
Also since we were a team of only two members, we had to do good time management to complete such big features in the given time, and present them well.
But we eventually found our way through them and made everything working.

Accomplishments that we're proud of

We're very proud that within the given time, we were able to utilize Snapchat's API and other APIs and features to make an app that is, according to us, pleasing to people who like to use amazing social media apps like Snapchat. These features in our app are in working condition for free:-

  • Login through Snapchat
  • Creating/Joining rooms for stargazing
  • Stargazing with friends with in-screen chat feature
  • Adding friends and chatting with them
  • Sending encrypted texts
  • more

What we learned

The whole hackathon was very amazing for us from learning point of view, we learnt to do a lot of things, including:-

  • Using SnapKit's SDKs for integrating stickers and sharing media files from app to snapchat directly,
  • Making a flask api service and get data in real time,
  • Making a fully fledged application in flutter and connecting it to Firebase services like firestore and authentication,
  • Making the starmaps work and update their data in realtime to firestore using python libraries and javascript,
  • Making proper designs and mockups,

What's next for "Awestruck"

We would like to let users make their experience more personalized and special, and also we would like to include some in app animations to make everything seem more pleasing. We are gonna focus on the scalability of our app and use best practices so that we can actually make it a final launchable product.

References

!link

Built With

Share this project:

Updates