This document outlines my plan to build MyCloud, a personalized cloud storage application developed entirely from scratch.
My goal with MyCloud is to create a web application that allows users (including me!) to easily upload, view, download, and delete files through a clean, modern, and responsive interface.
Foundational Features (Milestone 1):
In the first phase, I plan to implement all the core functionalities that make the system usable:
A user authentication system for secure registration and login.
File upload functionality that lets users add files to their personal storage.
A dashboard displaying all uploaded files in either list or grid view.
The ability to download files directly from the dashboard.
The option to delete any unwanted files.
Once the basics are in place, I’ll move on to adding more advanced capabilities to make MyCloud more feature-rich and user-friendly:
Folder or directory creation and management for better file organization.
Drag-and-drop uploads with progress indicators for a smooth experience.
Image and PDF previews that open directly within the browser.
A search feature to quickly find files.
The ability to generate shareable links (optionally protected by a password or expiry date).
A storage tracker to monitor usage and quotas.
To bring this idea to life, I’ve chosen technologies that balance simplicity, performance, and scalability:
Backend: I’m using Node.js with Express.js to handle APIs and file I/O operations efficiently.
Frontend: I’ve chosen React.js for building a dynamic, component-based interface that feels modern and responsive.
Database: For storing metadata such as file names, sizes, types, and owners, I’ll be using MongoDB, which integrates seamlessly with Node.js.
File Storage: The files themselves will be stored locally in a dedicated uploads/ folder on the server. Since I’m building this from scratch, I want to handle storage manually — though in a production environment, I’d switch to cloud-based solutions like AWS S3 or MinIO.
Styling: I’ll use Tailwind CSS to design a clean and professional interface without needing to write extensive custom CSS.
File Storage: Local Filesystem. For this project, we'll store the actual files directly on the server's hard drive in a dedicated uploads/ folder. This is the "from scratch" approach. (For a production system, you'd use a service like AWS S3 or MinIO).
Styling: Tailwind CSS. For building a professional-looking UI quickly without writing custom CSS.