Inspiration

We drew inspiration from existing platforms like Netlify, which enable users to deploy and access their websites through proxy servers. The idea behind this project is to provide a similar level of convenience for handling files, making it accessible to a wider audience.

What it does

Our web application serves as a robust and user-friendly platform that enables users to perform two primary functions:

  1. File Uploads: Users can easily upload files of various types and sizes to our platform. Whether it's documents, images, videos, or any other file format, our application supports it. We have implemented a straightforward and intuitive user interface that allows users to select and upload their files effortlessly.

  2. Proxy Server Access: Once the files are uploaded, our platform ensures they are accessible through a secure proxy server. Users can access their uploaded files through a unique and secure URL generated by our system. This proxy server functionality adds an extra layer of security and accessibility, allowing users to share and distribute their files with confidence.

How We Built It

To bring our vision to life, we leveraged a combination of technologies and libraries, each playing a crucial role in the development of our web application. Here's a breakdown of the key components and tools we used:

Backend Stack:

  • Express.js: We built the backend of our application using Express.js, a popular and robust Node.js framework. Express.js allowed us to create a RESTful API for handling file uploads, managing proxy server functionality, and serving files securely.

  • MongoDB: For data storage and management, we integrated MongoDB, a NoSQL database. MongoDB facilitated efficient storage of file metadata, user information, and other essential data.

  • Multer: To handle file uploads, we employed the Multer middleware. It simplifies the process of receiving and storing files uploaded by users, ensuring a smooth and secure upload experience.

  • Unzipper: We utilized the Unzipper library to handle compressed file formats. This allowed us to process and serve compressed files, enhancing the flexibility of our platform.

  • PM2: To manage the Node.js application in a production environment, we relied on PM2. PM2 ensured high availability, automated process management, and robust error handling.

Frontend Stack:

  • Next.js: Our frontend was developed using Next.js, a powerful React framework. Next.js enabled us to create a dynamic and responsive user interface, incorporating features like file selection, user authentication, and interaction with the backend API.

Proxy Server:

  • Express-Proxy: For implementing the proxy server functionality, we utilized the Express-Proxy package. It allowed us to set up a secure and efficient proxy server that handles requests for accessing uploaded files.

Our development process involved seamless integration of these technologies and libraries to provide a cohesive and user-friendly experience. With Express.js and MongoDB handling backend operations, Next.js powering the frontend, and specialized libraries like Multer and Unzipper enhancing file management, our web application is well-equipped to meet the needs of our users.

Challenges We Ran Into

During the development process of our web application, we encountered several challenges that tested our problem-solving skills and required us to dig deeper into the technologies we were using. Here, we highlight two significant challenges we faced:

1. Integration and Configuration of PM2

Challenge Description: One of the major hurdles we encountered was related to the integration and configuration of PM2, a process manager for Node.js applications. While PM2 is a powerful tool for managing Node.js processes in production environments, setting it up optimally and troubleshooting issues can be complex.

2. File Upload and Proxy Server Integration

Challenge Description: Another significant challenge we faced was the seamless integration of file uploads and the proxy server. Ensuring that uploaded files were correctly processed, stored, and accessible through the proxy server required careful coordination and troubleshooting.

What's next for Neo

We are looking forward to grow this.

Built With

Share this project:

Updates