FireShare

FireShare is a personal project. It's an application that allows the sharing of files with ease. It's also a project where I test out most of the new technology that I learn.

The current release at the moment is beta release 1.0.0 hosting with Heroku and Github Page. The application is currently in development to be a fully serverless application.

TechStackGithubLive
ReactJSRepositoryView site
NodeJS
MongoDB
SocketIO
Chai
WebdriverIO

FireShare

Purpose of the project

FireShare is a combination of Google Drive and Firefox Send. The web application allows users to upload, store, delete, edit their files online. It also has the feature of sharing files with other users within the application.

Users will also have the ability to upload a file temporarily without having to log in. If this feature is implemented, users must set an expiration date for the files per download/day.

Once expired, the file will be automatically deleted on the server or Cloud storage.

fireshare4 fireshare5

The Process

For simplicity, the web application is now built off Bootstrap with some custom components to fasten up the back-end progress. Once the back end is completed in the future, styles will be rebuilt from scratch according to mock-up in order to reduce load time.

Tests for the back end were written first in order to get the hang of the project. For the front end, ReactJS was used with the plan to integrate with Redux-Saga later on.

After all the front end was done, tests were implemented for usability and rendering.

During the development phase, I tried to use as least comments as possible. The codes are written in the way that it should be understandable without the need for commenting.

Problems

Beta version was a bit difficult to implement since there was no Redux state management. I had a bit of trouble in reusing the state within different components and routings.

Some of the CORS problems also occurred when deploying to Cloud, especially for the downloading feature.

SocketIO suffers from lagging when too many users are connected. There are also many features of SocketIO that are not used. In the future, this will be replaced by either another library or a custom pub-sub model.

Lesson learned

I have learned quite a lot from this project, especially with react-router-dom NodeJS authentication routing. Implementing a real-time pub-sub system with SocketIO from scratch helped me a lot in understanding the application life cycle.

In the future, there are more technology will be used such as Redux-Sage, Serverless, Docker, ...


  1. Current beta does not support this feature.