## Inspiration

Being introduced to financial strategies, many are skeptical simply because they can't imagine a significant reward for smarter spending.

## What it does

* Gives you financial advice based on your financial standing (how many credit cards you have, what the limits are, whether you're married or single etc.)
* Shows you a rundown of your spendings separated by category (Gas, cigarettes, lottery, food etc.)
* Identifies transactions as reasonable or unnecessary

## How I built it

Used React for the most part in combination with Material UI. Charting library used is Carbon Charts which is also developed by me: <https://github.com/carbon-design-system/carbon-charts>

## Challenges I ran into

* AI
* Identification of reasonable or unnecessary transactions
* Automated advising

## Accomplishments that I'm proud of

* Vibrant UI

## What I learned

* Learned a lot about React router transitions
* Aggregating data

## What's next for SpendWise

To find a home right inside your banking application.
![BulletinVR Logo](https://github.com/k3vnchen/bulletin-webvr/blob/master/project/static/assets/blong_large.png?raw=true)

## Inspiration

Social anxiety affects hundreds of thousands of people and can negatively impact social interaction and mental health. Around campuses and schools, we were inspired by bulletin boards with encouraging anonymous messages, and we felt that these anonymous message boards were an inspiring source of humanity. With Bulletin, we aim to bring this public yet anonymous way of spreading words of wisdom to as many people as possible. Previous studies have even shown that online interaction decreased social anxiety in people with high levels of anxiety or depression.

## What it does

Bulletin is a website for posting anonymous messages. Bulletin's various boards are virtual reality spaces for users to enter messages. Bulletin uses speech-to-text to create a sense of community within the platform, as everything you see has been spoken by other users. To ensure anonymity, Bulletin does not store any of its users data, and only stores a number of recent messages. Bulletin uses language libraries to detect and filter negative words and profanity. To try Bulletin (<https://bulletinvr.online>), simply enter one of the bulletin boards and double tap or press the enter key to start recording your message.

![Screenshot of Bulletin in a VR HMD](https://github.com/k3vnchen/bulletin-webvr/blob/master/project/static/img/screenshot1.png?raw=true)

## What is WebVR?

WebVR, or Web-based virtual reality, allows users to experience a VR environment within a web browser. As a WebVR app, Bulletin can also be accessed on the Oculus Rift, Oculus Go, HTC Vive, Windows Mixed Reality, Samsung Gear VR, Google Cardboard, and your computer or mobile device. As the only limit is having an internet connection, Bulletin is available to all and seeks to bring people together through the power of simple messages.

## How we built it

We use the A-Frame JavaScript framework to create WebVR experiences. Voice recognition is handled with the HTML Speech Recognition API.

The back-end service is written in Python. Our JS scripts use AJAX to make requests to the Flask-powered server, which queries the database and returns the messages that the WebVR front-end should display. When the user submits a message, we run it through the Python `fuzzy-wuzzy` library, which uses the Levenshtein metric to make sure it is appropriate and then save it to the database.

## Challenges we ran into

**Integrating A-Frame with our back-end was difficult**. A-Frame is simple of itself to create very basic WebVR scenes, but creating custom JavaScript components which would communicate with the Flask back-end proved time-consuming. In addition, many of the community components we tried to integrate, such as an [input mapping component](https://github.com/fernandojsg/aframe-input-mapping-component), were outdated and had badly-documented code and installation instructions. Kevin and Hamilton had to resort to reading GitHub issues and pull requests to get some features of Bulletin to work properly.

## Accomplishments that we're proud of

We are extremely proud of our website and how our WebVR environment turned out. It's exceeded all expectations, and features such as multiple bulletin boards and recording by voice were never initially planned, but work consistently well. Integrating the back-end with the VR front-end took time, but was extremely satisfying; when a user sends a message, other users will near-instantaneously see their bulletin update.

We are also proud of using a client-side speech to text service, which improves security and reduces website bandwith and allows for access via poor internet connection speeds.

Overall, we're all proud of building an awesome website.

## What we learned

Hamilton learned about the A-Frame JavaScript library (and JavaScript itself), which he had no experience with previously. He developed the math involved with rendering text in the WebVR environment.

Mykyta and Kevin learned how to use the HTML speech to text API and integrate the WebVR scenes with the AJAX server output.

Brandon learned to use the Google App Engine to host website back-ends, and learned about general web deployment.

## What's next for Bulletin

We want to add more boards to Bulletin, and expand possible media to also allowing images to be sent. We're looking into more sophisticated language libraries to try and better block out hate speech.

Ultimately, we would like to create an adaptable framework to allow for anyone to include a private Bulletin board in their own website.
## Inspiration

As university students, emergency funds may not be on the top of our priority list however, when the unexpected happens, we are often left wishing that we had saved for an emergency when we had the chance. When we thought about this as a team, we realized that the feeling of putting a set amount of money away every time income rolls through may create feelings of dread rather than positivity. We then brainstormed ways to make saving money in an emergency fund more fun and rewarding. This is how Spend2Save was born.

## What it does

Spend2Save allows the user to set up an emergency fund. The user inputs their employment status, baseline amount and goal for the emergency fund and the app will create a plan for them to achieve their goal! Users create custom in-game avatars that they can take care of. The user can unlock avatar skins, accessories, pets, etc. by "buying" them with funds they deposit into their emergency fund. The user will have milestones or achievements for reaching certain sub goals while also giving them extra motivation if their emergency fund falls below the baseline amount they set up. Users will also be able to change their employment status after creating an account in the case of a new job or career change and the app will adjust their deposit plan accordly.

## How we built it

We used Flutter to build the interactive prototype of our Android Application.

## Challenges we ran into

None of us had prior experience using Flutter, let alone mobile app development. Learning to use Flutter in a short period of time can easily be agreed upon to be the greatest challenge that we faced.

We originally had more features planned, with an implementation of data being stored using Firebase, so having to compromise our initial goals and focus our efforts on what is achievable in this time period proved to be challenging.

## Accomplishments that we're proud of

This was our first mobile app we developed (as well as our first hackathon).

## What we learned

This being our first Hackathon, almost everything we did provided a learning experience. The skills needed to quickly plan and execute a project were put into practice and given opportunities to grow. Ways to improve efficiency and team efficacy can only be learned through experience in a fast-paced environment such as this one.
As mentioned before, with all of us using Flutter for the first time, anything we did involving it was something new.

## What's next for Spend2Save

There is still a long way for us to grow as developers, so the full implementation of Spend2Save will rely on our progress.
We believe there is potential for such an application to appeal to its target audience and so we have planned projections for the future of Spend2Save. These projections include but are not limited to, plans such as integration with actual bank accounts at RBC.