## LitTix

How many university events have you been at where the organizers seemed more confused than the attendees?
Where the schedule has progressively been pushed back “for just five minutes”?

This is the unfortunate reality at many events, and our team believes that in a world that is increasingly connected, this is unacceptable and solvable

## Our solution, LitTix:

* Lightweight and powerful platform that operates across iOS, android and the web, built with efficiency in mind
* LitTix's goal is to initiate and maintain clear communication between event organizers and attendees at every step -- from ticket purchasing to figuring out where the closing ceremony is
* Replaces conventional standards of looking up names in a list with a rapid QR check-in, check-out system
* Has built in analytics that provide both real time head counts as well as lists for volunteers and guest lists
* Legacy support for past events to help organizers better plan for the future
* Attendees who use our platform get the advantage of being able to see live updates from organizers pushed to their phone with multiple tiers of importance: If the building is on fire, your phone will be vibrating as frequently as if your angry ex was trying to call you
* Attendees also have access to live stats: Reports people inside, how many of your friends are going, the estimated walking or driving distance
* Attendees can report abuse discreetly to the organizers using the app

(Our App Github Repo is set to private and the owner is currently sleeping, if the link still doesn't work the Zip folder contains both repos)
## Inspiration

Our app idea came from the experience of one of our team members when he was having lunch in one of the many food courts of Toronto's CBD. At the time, he was looking around and despite being surrounded by hundreds of people - he knew nothing about any of them. Of course, there were incredible people amongst the crowd, but there was no way to know who was who, who did what, and who was open to chatting with a stranger.

Everyday, we walk past hundreds of people from all walks of life, with thousands of different (or common!) experiences. Yet, perhaps because we've grown wary of being surrounded by so many people, we casually dismiss this opportunity to learn something new. Our app aims to unearth the incredible value of people and their stories, and make connecting with strangers, easier.

## What it does

In short, Peopledex allows you to find other users within a 1 minute walking distance to them and strike up a conversation about their favourite topics. Every user's profile consists of their name, a profile photo, occupation, and three topics that they'd like people to ask them about. Nearby users are viewable in a collection view, ordered by proximity.

After viewing a nearby user's profile, you can find them via GPS-based augmented reality, which places an arrow above their current location. Then, you make an introduction! No instant-messaging allowed - only real connections. When you don't want to be approached (e.g. you're busy meeting with friends), you can enable incognito mode so you won't be discoverable.

**Use cases:**

* Finding relevant connections at large conferences or expos
* Finding potential teammates at hackathons
* Finding someone to have lunch with in a food court
* Finding friendly strangers to talk to while travelling

## How we built it

Our team split off into two groups, one responsible for building the AR functionality and the other for UI/UX. The initial wireframe was built on Balsamiq Cloud's collaborative wireframing tool. The wireframe was then developed using Xcode Interface Builder & Swift. Login and signup functionality was achieved using Firebase authentication.

The AR functionality involved two components. The front end client, using ARKit API for iOS, consumed GPS coordinates in the form of longitude and latitude, and rendered it into 3D space in the augmented reality view. The GPS coordinates were supplied by another client, which sent a POST request to a Python based API that pushed updates to the AR client. These updates were pushed in realtime, using a web socket to lower latency.

## Challenges we ran into

None of our team members came into this hackathon with iOS experience, and only half of our group had developer experience. The AR component proved to be extremely challenging as well, as overcoming the inaccuracies of location finding made us use many engineering techniques. Specifically, rendering assets in real time based on a non-deterministically moving object caused us to take many hours of calibration in order to have a demoable product.

## Accomplishments that we're proud of

We had to apply a high pass filter on the noise from the GPS to smooth out the movement of both clients. This enabled us to have a relatively stable location for the AR client to track and render. We were also able to create a smoothly running and aesthetically-pleasing user interface. We're proud of the fact that all of us learned how to use new and challenging tools in an extremely short amount of time.

## What we learned

We learned:

* ARKit
* That real-time location tracking is hard
* Xcode & Swift
* Firebase
* Balsamiq

## What's next for Peopledex

Get users onboard!
## Inspiration

The impact of COVID-19 has had lasting effects on the way we interact and socialize with each other. Even when engulfed by bustling crowds and crowded classrooms, it can be hard to find our friends and the comfort of not being alone. Too many times have we grabbed lunch, coffee, or boba alone only to find out later that there was someone who was right next to us!

Inspired by our undevised use of Apple's FindMy feature, we wanted to create a cross-device platform that's actually designed for promoting interaction and social health!

## What it does

Bump! is a geolocation-based social networking platform that encourages and streamlines day-to-day interactions.

**The Map**

On the home map, you can see all your friends around you! By tapping on their icon, you can message them or even better, Bump! them.

If texting is like talking, you can think of a Bump! as a friendly wave. Just a friendly Bump! to let your friends know that you're there!

Your bestie cramming for a midterm at Mofitt? Bump! them for good luck!

Your roommate in the classroom above you? Bump! them to help them stay awake!

Your crush waiting in line for a boba? Make that two bobas! Bump! them.

**Built-in Chat**

Of course, Bump! comes with a built-in messaging chat feature!

**Add Your Friends**

Add your friends to allow them to see your location! Your unique settings and friends list are tied to the account that you register and log in with.

## How we built it

Using React Native and JavaScript, Bump! is built for both IOS and Android. For the Backend, we used MongoDB and Node.js. The project consisted of four major and distinct components.

**Geolocation Map**

For our geolocation map, we used the expo's geolocation library, which allowed us to cross-match the positional data of all the user's friends.

**User Authentication**

The user authentication proceeds was built using additional packages such as Passport.js, Jotai, and Bcrypt.js. Essentially, we wanted to store new users through registration and verify old users through login by searching them up in MongoDB, hashing and salting their password for registration using Bcrypt.js, and comparing their password hash to the existing hash in the database for login. We also used Passport.js to create Json Web Tokens, and Jotai to store user ID data globally in the front end.

**Routing and Web Sockets**

To keep track of user location data, friend lists, conversation logs, and notifications, we used MongoDB as our database and a node.js backend to save and access data from the database. While this worked for the majority of our use cases, using HTTP protocols for instant messaging proved to be too slow and clunky so we made the design choice to include WebSockets for client-client communication. Our architecture involved using the server as a WebSocket host that would receive all client communication but would filter messages so they would only be delivered to the intended recipient.

**Navigation and User Interface**:

For our UI, we wanted to focus on simplicity, cleanliness, and neutral aesthetics. After all, we felt that the Bump! the experience was really about the time spent with friends rather than on the app, so designed the UX such that Bump! is really easy to use.

## Challenges we ran into

To begin, package management and setup were fairly challenging. Since we've never done mobile development before, having to learn how to debug, structure, and develop our code was definitely tedious. In our project, we initially programmed our frontend and backend completely separately; integrating them both and working out the moving parts was really difficult and required everyone to teach each other how their part worked.

When building the instant messaging feature, we ran into several design hurdles; HTTP requests are only half-duplex, as they are designed with client initiation in mind. Thus, there is no elegant method for server-initiated client communication. Another challenge was that the server needed to act as the host for all WebSocket communication, resulting in the need to selectively filter and send received messages.

## Accomplishments that we're proud of

We're particularly proud of Bump! because we came in with limited or no mobile app development experience (in fact, this was the first hackathon for half the team). This project was definitely a huge learning experience for us; not only did we have to grind through tutorials, youtube videos, and a Stack Overflowing of tears, we also had to learn how to efficiently work together as a team. Moreover, we're also proud that we were not only able to build something that would make a positive impact in theory but a platform that we see ourselves actually using on a day-to-day basis. Lastly, despite setbacks and complications, we're super happy that we developed an end product that resembled our initial design.

## What we learned

In this project, we really had an opportunity to dive headfirst in mobile app development; specifically, learning all about React Native, JavaScript, and the unique challenges of implementing backend on mobile devices. We also learned how to delegate tasks more efficiently, and we also learned to give some big respect to front-end engineers!

## What's next for Bump!

**Deployment!**

We definitely plan on using the app with our extended friends, so the biggest next step for Bump! is polishing the rough edges and getting it on App Stores. To get Bump! production-ready, we're going to robustify the backend, as well as clean up the frontend for a smoother look.

**More Features!**

We also want to add some more functionality to Bump! Here are some of the ideas we had, let us know if there's any we missed!

* Adding friends with QR-code scanning
* Bump! leaderboards
* Status updates
* Siri! "Hey Siri, bump Emma!"