You are browsing as a guest. Sign up (or log in) to start making projects!

lightweight NAS

Hardware
  • 7 Devlogs
  • 34 Total hours

A lightweight, open-source NAS . it uses an SD card module , ethernet , an esp32 (WIFI) , It provides a modern web interface for browsing, uploading, downloading, and managing your SD card files over your local network—offering a simple alternative to Bluetooth and USB transfers. computers . users can upload,download , delete , browse and manage files through a simple interface withouth removing the memory card or using files

Ship #1 Changes requested

About this project

a NAS ( Network Attached Storage ) Which is basically a storage system that gets attached to your network, so you can manage your memory card (a real NAS usually uses hard drives) files, upload, download, delete, and so on, without any need for a physical connection. All of it is done over the network, so you won’t need to open and reopen your SIM slot to get or insert the memory card, and use the USB card adapter every time you need to transfer some files from your phone to your laptop when Bluetooth fails, or the file is too large.

Now, there’s no need for all this chaos, because this device is now accessible from almost any device you have, as long as it’s on the same network. For more about getting started with this, please check my GitHub repository.

Well, you might say, “He ended up spending 34 hours solving a 10-minute problem.” Well, maybe yes, but the difference becomes much more evident when you’re in a rush and Bluetooth just refuses to pair, or the connection fails for some unknown reason. Then you’ve got to sit there and spend a few nice hours trying to figure out where the problem is. Time is gold, buddy.

Well, again, this project was challenging, from creating each of the backend modules, managing storage and the FileService, to the HTTP server, which was one of the hardest parts to debug after the JavaScript issues. But the hardest part revolved around making all the modules work together, the frontend and the backend, to display the right values.

I’m proud of myself because I fixed a lot of issues and learned a lot of new things about project and code management.

That’s it for this version. If you want to know how to use it, please check my README.

Thank you, and always remember:

“The devotion of the greatest is to encounter danger, and play dice for death.”

Video of Project → See source code →
Open comments for this post

5h 14m 39s logged

Devlog

Since the last devlog, I completed the remaining work needed to finish the first milestone of the ESP32 NAS project (Mayby the first and the last ) . On the backend, I added the missing HTTP API endpoints for storage information, file listing, downloading, uploading, deleting, renaming, and creating folders, along with their corresponding request handlers. The FileService was also extended to support multiple missions (it will be long so I will not cover them here).

On the frontend, I finished the JavaScript logic by implementing storage usage monitoring with a live progress bar, storage statistics in both the dashboard and footer, file upload, download, delete, rename, and folder creation, client-side search (still working o it), automatic refresh of file and storage information, and proper initialization when the page loads.

With these additions and fixes, this milestone is now complete. I tried it , and it’s fully functional , The ESP32 NAS now provides a smooth web interface with complete file management capabilities and live storage monitoring.

well, it was a fasciniting project , and I really learned a lot, I ’m proud of it .(yeah,after I get a headache during debugging ) .

0
0
7
Open comments for this post

4h 13m 20s logged

since the last time , I tried to turn the interface to a multi-page interface that contains the 3 main sections files , Network , Settings and I tried to integrate java script navigation , between pages and itms , and during this I got some javascript issues ,because the javascript file refused  loadeding , but I fixed it later , after completing the navigation process I created an /api/network endpoint that returns live Wi-Fi information from the ESP32, and connected the Network page,I also implemented the /api/files API in the HTTP server, which converts the FileService output into JSON, then I started laying the foundation for folder navigation , which will allow the browser to navigate directories just like a desktop file explorer.**important note :**the data in the screenshot is fake because I run UI files in the live server , not yet to the esp32

0
0
10
Open comments for this post

11h 12m 18s logged

DEVLOG (3)This week I focused on improving both the backend architecture and the web interface of the ESP32 NAS.I finished refactoring the FileService and HttpServer classes . I also implemented the first HTTP API endpoints that will allow the frontend to communicate with the ESP32, I really struggled to make the HTTP server work .On the frontend, I redesigned the HTML layout, cleaned up the structure, fixed some dumb problems , and introduced dedicated pages for Files, Network, and Settings. for the actual moment the backend is ready , and the same thing for the frontend (I will improve it later) , now I have to connect them all through JavaScript and the REST API.well I come along a hard way to this , but it deserves it

0
0
7
Open comments for this post

4h 40m 38s logged

DEVLOG (3)

BEHOLD!!!!!

Today’s session was all about strengthening the software architecture of the ESP32 NAS.

Completed

  • Finished the SDManager module.
  • Successfully initialized and tested the SD card.
  • Built the WiFiManager module and established a successful Wi-Fi connection.
  • Started developing the FileService module.
  • Implemented the following file operations:
    • exists()
    • createFolder()
    • deleteFile()
    • deleteFolder()
    • rename()
    • fileSize()
    • copyFile()
    • moveFile()
  • Resolved multiple compilation and IntelliSense issues while improving the project structure.

’The next ’milestone is integrating these modules with the web server and building the NAS interface.

Stay tuned.

0
0
6
Open comments for this post

4h 20m 34s logged

DEVLOG (1)

BEHOLD!!!!!

Today I finished one of the core modules of the ESP32 NAS project: SDManager.

The pupose of this module is simple: make the SD card completely independent from the rest of the project. From now on, no other class will communicate directly with SD.h; everything goes through SDManager.

Implemented features

  • SD card initialization
  • Card mounting status
  • Total storage capacity
  • Used storage
  • Free storage
  • Card type detection (SDSC / SDHC / SDXC)
  • File existence check
  • Open files
  • Create folders
  • Rename files and folders
  • Delete files
  • Debug information through the Serial Monitor

I also spent a good amount of time debugging the module. Most of the issues were caused by mismatched function declarations, missing braces, incorrect return types, and a few IntelliSense false positives. After fixing them one by one, the project finally compiled successfully.

Finally, I connected the SD card to the ESP32 and verified that everything works correctly. The board successfully detects the SD card and prints its information, including storage capacity and available space.

With the storage layer now complete, the foundation of the project is becoming much stronger.

Next step: build the WiFiManager module and add mDNS support so the NAS can be accessed using a hostname

0
0
7
Open comments for this post

3h 35m 14s logged

The Story Behind This Project

One day, I wanted to transfer some files from the SD card in my phone to my desktop. I thought it would be easy—just send them over Bluetooth.

Well… that’s not what happened.

I tried transferring the files using Bluetooth, but every single time the connection failed. Then I had to pair the two devices again, only for the transfer to fail once more. I kept thinking,

“Come on, it shouldn’t be this hard.”

After wasting almost an hour of my precious time (and remember, 1 hour of my precious time = $100), I looked at my second option.

  • Remove the SIM tray.
  • Take out the SD card.
  • Put it into a USB card reader.
  • Plug it into the computer.
  • Transfer the files.
  • Remove the card again.
  • Open the SIM tray again.
  • Put the SD card back.

Nope.

I really dislike opening and reopening the SIM tray every time I need to transfer a few files.

So there I was, stuck between two terrible options:

  • Bluetooth (damn BLE).
  • USB card reader (damn that too).

Then I remembered something… or maybe I just invented it.

“When you have two bad options, don’t choose either of them. Make a third one.”

I don’t even know if SpongeBob ever said that.

Probably not.

But it sounded meaningful enough to me.

So I rolled up my sleeves and decided to build something that would solve the problem once and for all.

Something fast.

Something reliable.

Something that uses Wi-Fi instead of Bluetooth.

After a lot of thinking… and thinking… and more thinking (okay, and not that much research >-<), I finally decided to build a lightweight NAS powered by an ESP32. So I started sketching the web interface and began coding it.
Right now, it’s a little rough around the edges (okay… maybe more than a little >_<), but that’s completely fine. My goal isn’t to make it perfect on day one—it’s to build a solid foundation first and improve the design as the project evolves.

Moral of the story:

Always listen to SpongeBob.

Thanks, Bob.

0
0
9

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…