Catpush

The digital age is well and truly upon us, yet file sharing is still as bothersome as ever. Whether it's a file size limit on Discord, or signing up for an account you'll only use once, we think it's a shame that in such a data driven world, we are still limited by our ability to share.

Catpush removes the fuss by concentrating on quick, one-time file transfers.

What it does

Catpush is a web app that uses WebSockets to allow two clients to connect and send files to each other, without any need for remembering passwords, or signing up to services. Creating a room is easy - just one click on the main page. Once you've created a room, others can join you by entering your room code. Then, as the host of the room, you can share your files with them!

How we Built it

Catpush was built using Svelte to handle the frontend initially, but due to time pressure we switched to raw HTML and CSS. Similarly, we initially used WebRTC to connect clients directly, but this proved quite difficult. As a result, the submitted version uses WebSockets to connect clients by relay over the server, which is running using nodejs.

Challenges

Getting used to using the tools and technologies was quite challenging, due our little experience with the stack we ended up using. In addition in trying to learn everything on the fly, we didn't know what we didn't know: sometimes there were simple solutions, but we didn't know that they existed. WebRTC proved too difficult to learn in the timeframe, so on Sunday afternoon we switched to WebSockets. They were relatively easier to learn, but having not done any networking projects before meant that we had to research the concepts involved in addition to learning how to interface with them.

Accomplishments

Our team was comprised of mainly first year students. None of us had ever participated in a hackathon before, and most had relatively little programming experience. The journey to develop Catpush was full of challenges, so being able to come out the other end with the experience of it all, knowledge about technologies we hadn't used before, and a, albeit barebones, MVP, were things to be proud of for us.

What we Learned

We’ve learnt about the various technologies used, as well as the difficulties of coordinating to integrate them as a team. The experience we've had at Unihack will definitely help each of us in future projects.

What's Next for Catpush

We plan to switch to WebRTC, enabling true P2P between clients and taking strain off the server. Time didn't allow for it during the hackathon, but we hope to improve the UI in the near future. Additionally, P2P poses some security vulnerabilities, which we hope to address before deploying.

Built With

Share this project:

Updates